What is Cloud Computing 🌩️? Get a glimpse of cloud services in 2020 🔮 and learn must-know concepts for software developers. https://fireship.io

#cloud #future 

Data Sources: 

- Gartner Forecasts https://www.gartner.com/en/newsroom/press-releases/2019-04-02-gartner-forecasts-worldwide-public-cloud-revenue-to-g
- Forbes Enterprise Computing https://www.forbes.com/sites/louiscolumbus/2018/08/30/state-of-enterprise-cloud-computing-2018
- Flexera Report 2019 https://resources.flexera.com/web/media/documents/rightscale-2019-state-of-the-cloud-report-from-flexera.pdf

Upgrade to Fireship PRO at https://fireship.io/pro
Use code lORhwXd2 for 25% off your first payment.
2024-02-04T06:27:37.658Z
nova-2
2-general-nova
2024-01-09.29447
30089e05-99d1-4376-b32e-c263170674af
81e5e7cf-5eae-4c7e-92c7-5883312143b8
04de9959cf7f8309eee9c99a2b507988132420ee6af7a32889411df129dcb5d4
67875a7f-c9c4-48a0-aa55-5bdb8a91c34a
deprecated
October 23, 2019.
Google announces it has achieved the impossible goal of Quantum Supremacy.
A machine more than 100,000,000 times faster than your 16 inch MacBook.
Only 1 month later, AWS releases Quantum Computing as a Service in the Cloud.
If you're a software developer in today's world, there's a good chance your infrastructure is on the Cloud, and very likely with a big provider like AWS, Azure, GCP, or IBM.
90% of companies are on the Cloud, 60% of workloads run on the Cloud, 30% of IT budgets are allocated to the Cloud, generating 100 of 1,000,000,000 of dollars in revenue, and those numbers are only expected to increase in the coming years.
In today's video, you'll learn exactly what cloud computing is, why companies are adopting it so rapidly, and what you need to know as a software developer.
If you're new here, like and subscribe, and you can follow along with the full write up on FireShip.
Io.
Cloud computing is a win win, both for companies that provide the services and the companies that use them.
The providers make tons of money.
In fact, AWS makes up more than 13% of Amazon's total sales and operates at a much higher profit margin than its retail business.
But, it's also a huge win for their customers.
Instead of buying and managing its own hardware, a a startup today has all the infrastructure it could possibly need right at its fingertips.
The startup only pays for what it actually uses, it takes almost no effort to scale things up or down, and you don't need to hire an IT guy to wire the thing up.
I mean, imagine if I tried to build a server room here in Phoenix, Arizona.
My air conditioning bill alone would likely far seed whatever my AWS bill would be for the same set of resources.
That's because they build these highly optimized cloud campuses next to rivers to optimize cooling with state of the art equipment that can guarantee uptimes of 99.99% and beyond.
I like to think of cloud computing like a power plant.
You don't care where or how that power is being generated, you just plug in your device and then pay the bill.
In fact, we might as well just call that Electricity as a Service.
Because as a developer, it's important to distinguish between the different categories of cloud services out there.
The modern cloud can trace its roots back to 2006, when Amazon launched EC 2 and S3.
EC 2 stands for Elastic Compute Cloud and it's essentially a virtual computer with its own RAM and CPU, along with an operating system you can administer and an IP address for networking.
When you spin up a server in the Cloud, it's called a Virtual Machine because you haven't actually allocated any specific piece of hardware.
Rather, the Cloud has virtualized a simulated environment for you that resembles a piece of hardware.
There's a lot going on behind the scenes to make this possible that you don't really need to know.
Like how they use hypervisors on top of bare metal to handle CPU scheduling and memory allocation.
The other big service launched by AWS back in 06 was s 3, which is basically a hard drive with a file system in the cloud where you can store things like images and videos.
Things like storage buckets and virtual machines are known as Infrastructure as a Service.
They're the low level building blocks of the Cloud, so it's up to the developer to manage and scale them.
Once infrastructure became available, it created explosive growth in a new type of software.
Software as a Service.
A great case study is Dropbox.
In the early days, the company didn't have the money to roll out its own infrastructure.
So it uploaded its users' files to S3.
So so it didn't even really start out as a file storage company.
It was more of a software company that helped people get their files uploaded to the Cloud.
And it just goes to show you that you can build a $1,000,000,000 business by focusing primarily on the front end user experience.
So infrastructure as a service abstracts away hardware.
It took no more than of years to see cloud computing rise to another level, a Platform as a Service.
When developing an application, developers have a lot more concerns than just hardware.
You have to think about security and how to scale the workload, and how to put all the pieces together into a cohesive unit.
That's what a Platform as a Service aims to do.
Some famous examples include Elastic Beanstalk, Heroku, and Google App Engine.
Let's imagine a developer has built an app with Ruby on Rails.
In order to be used by people around the world, that app will need a database and a web server with a very specific configuration.
The platform is designed to take care of the configuration part.
In theory, the only thing the developer has to do is upload their code and the Cloud takes care of the provisioning of the database, provides security, and scales the traffic.
So what we have here is a platform for creating software as a service, but we can still take things one step further.
The Cloud can also provide SDKs that bring the cloud directly into our front end applications, and that means a developer might not need any back end code at all, giving us a back end as a service.
The 2 big players in this space include Firebase from Google and Amplify from AWS.
With just a few lines of JavaScript, anybody can create a real time application with user cation hooked up to a cloud database that's way more reliable than any back end you would build from scratch.
Sounds awesome, but it's not without its drawbacks.
The more you rely on services offered by a given Cloud, the more likely you are to experience vendor lock in.
The Cloud can help you get your software off the ground, Once you become successful, like Dropbox, your opinion might start to change.
In 2016, Dropbox started to move their customers' data off AWS to their own data centers and cut at least 75,000,000 from their operating expenses.
In this case, it made sense to move off the Cloud to on premises, but they're actually not fully on prem.
They still use the Cloud to handle about 10% of their file uploads, especially for edge cases and regions that their data centers don't cover.
And that's what we call a hybrid Cloud.
It generally refers to big enterprises that run a private cloud on their own data centers, but also combine it with services on the public cloud.
And by public, I mean the Cloud where you can just sign up with an email address and credit card and start doing stuff.
You might also hear the term multi Cloud.
This refers to a single architecture sure or application that combines services from multiple public clouds, usually to prevent things like vendor lock in and optimize pricing.
Now let's go ahead and jump into the cloud and take a look at some of its capabilities.
We already talked a little bit about virtual machines and cloud storage buckets, but that's just the tip of the iceberg in today's world.
AWS alone offers more than a 150 different services and APIs.
But one thing all these services share in common is a service level agreement or SLA.
This is a contract between you and the cloud provider.
The provider generally guarantees a certain uptime and error rate for the service and will generally provide a financial credit or refund back the client if it fails to meet those SLA requirements.
On the other side of the coin, the client generally has a quota that they must stay within when using the service.
Sometimes I like to say the cloud scales infinitely, but I don't mean that to be taken literally.
The quota tells you how far you can push the limits.
When When getting started with a cloud provider, a great place to start is with identity and access management, the opposite of who am I?
I am.
It's the front gate to your structure, and you shouldn't just let anybody in.
You can secure your services by attaching security policies to them.
For example, you might have a storage bucket, and that policy controls who in the organization can actually access the files inside it.
Now if your organization has thousands of employees, who would be very cumbersome to manage policies for every single resource.
That's where roles come in.
They allow you to group permissions together into a unit that can be reused throughout the cloud, and you can assign roles outside of your account if you're working with consultants or some other third party.
Now in some cases, your machines might need to communicate with each other.
For that, you can define resource based policies or service accounts.
This would allow a virtual machine, for example, to access a database somewhere else in your cloud.
Now that we know a little bit about security, let's take a look at the backbone of the cloud, compute resources.
On Google Cloud, we can create a virtual machine with Compute Engine.
It will give you some options when you create this machine.
The region represents the actual physical location of the data center.
A region closer to your end users should be faster, But some companies must follow data residency regulations, which dictate where customer data can actually be stored.
Now each region is actually a campus with multiple isolated data centers.
That means if you have a mission critical workload, you can put it in the same region in multiple zones.
If a meteor destroys one of those data centers, you'll still have a reliable service in that region.
That gives you high availability and redundancy.
Azure actually has the most data centers of all the clouds, and they have 2 secret government locations that we don't even know about.
The next option is the machine type, which defines the amount of memory and CPU in this virtual machine.
The bigger they come, the more they cost.
But the great thing about the cloud is that everything is pay as you go.
You're billed down to the second and you can shut the instance off at any time.
From there, you need to determine the operating system by selecting a disk image.
You have a bunch of different flavors of Linux or Windows to choose from.
From there, you can specify a service account if you have other services that need to access this VM.
By default, you have a firewall that makes this instance inaccessible to the outside world, But we can change that by allowing HTTP traffic.
Now when it comes to networking, it's important to understand that the instance has an internal IP address and an external IP address.
Both of these values are ephemeral or short lived by default.
That means if you rebuild the instance, it could be assigned a new IP address.
However, if you have a service that relies on an IP address, you can reserve a static one.
So what's the difference between an internal and an external IP?
The internal version can only be used to communicate with other compute instances on the same cloud.
If you need to communicate with other services on the Internet, then you'll use the external IP.
When it comes to networking, you might come across these weird terms, egress and ingress.
Egress defines outbound data that's being sent from your instance to the outside world.
Ingresses the exact opposite, data that's being sent from the outside world into your instance.
Egress is typically the one to watch out for because it can have an impact on your bill.
Now remember, we're just talking about a simulated computer here.
If we want to access the command line for that instance, we can do so directly in the console with a Cloud Shell session.
And inside the session, you can do pretty much anything you could do in a regular Linux or Windows terminal.
So now that you know all this stuff about virtual machines, it's time to let you in on a little secret.
For most applications, it's pretty rare to create them manually like I just showed you.
There's just better ways to handle your compute resources, and a lot of it has to do with the way that they scale.
Let's imagine we built an app on this VM.
It's popular, and now our users are maxing out the CPU and memory on the instance.
One option would be to scale it vertically.
We could do that by adding additional CPU cores and more memory to make this single VM more powerful, but we can only do that to a certain extent.
So another option is to scale horizontally.
Instead of making our VM bigger, we'll just create more of them.
We can create them in regions all over the world and then distribute the workload accordingly.
When you distribute VMs like this, you also need to worry about load balancing.
You don't want all of your traffic going to a single VM while the others are just sitting there idle.
But all the clouds offer load balancer services to help you manage the stuff.
But what if you never had to worry about scaling your infrastructure at all?
Well, there are actually already 2 cloud computing paradigms that make that possible today.
The first one we'll look at is containerization.
Now, a container provides a way for you to simulate an operating system.
That may sound very similar to a virtual machine, but there's one key difference.
You're inside a simulation of a simulation Inside another giant simulation.
A virtual machine sits on top of the hardware directly, but a container sits on top of an underlying operating system to simulate another operating system or application.
This is a really awesome thing for development because it means you can put your application in a container and then take it and deploy it to any cloud you want.
Or in other words, you avoid the vendor lock in.
All of the clouds have container registries where you can upload your containers and then use them across other services.
Now, most companies using this strategy have multiple containers to run different services.
You might have one container for your Node.
Js web server, another for sending email, and another for training your machine learning algorithms.
And as your business becomes more complex, you'll need a way to orchestrate all of these microservices.
And that's where Kubernetes comes in.
It organizes all of your containers into groups of pods, then it can automatically scale those pods up or down based on the amount of traffic or utilization.
When the traffic goes up, Kubernetes will allocate more virtual machines to run more containers.
When the traffic dies off, it'll shut down those virtual machines so they're not sitting there idle, costing you money.
But there's a great saying about Kubernetes and it goes something like, why you f -ing around with Kubernetes?
Because in 2020, we have serverless or functions as a service.
That was first introduced in 2014 with AWS Lambda.
It allows you to run code in response to events, like a regular HTTP request or when something happens in some other cloud service like a write to the database.
The code you deploy to one of these functions will scale automatically, so you never have to worry about containers, VMs, or anything like that.
And it's truly pay as you go, because you only pay for each individual function and vocation.
Now prior to 2019, the big trade off was that you had no control over the actual runtime.
So if you needed to install some OS level software, you wouldn't be able to do that.
But just in the last year or so, AWS released the runtime API, and Google released a service called Cloud Run.
And that means today, we can do pretty much anything we want in a serverless environment.
There are still some other trade offs, but generally speaking, it's the easiest, most cost effective way to deploy back end code that scales.
And I think that's pretty much everything you need to know about the compute in Cloud Computing.
At least until we have quantum computers in the Cloud.
Oh, wait.
I almost forgot.
It's 2020.
We have those things already.
I'm gonna go ahead and wrap things up there.
If you learned something, please like and subscribe and if you wanna see more videos like this, let me know in the comments.
Thanks for watching and I will talk to you soon.

Speaker 0: October 23, 2019. Google announces it has achieved the impossible goal of Quantum Supremacy. A machine more than 100,000,000 times faster than your 16 inch MacBook. Only 1 month later, AWS releases Quantum Computing as a Service in the Cloud. If you're a software developer in today's world, there's a good chance your infrastructure is on the Cloud, and very likely with a big provider like AWS, Azure, GCP, or IBM.

90% of companies are on the Cloud, 60% of workloads run on the Cloud, 30% of IT budgets are allocated to the Cloud, generating 100 of 1,000,000,000 of dollars in revenue, and those numbers are only expected to increase in the coming years. In today's video, you'll learn exactly what cloud computing is, why companies are adopting it so rapidly, and what you need to know as a software developer. If you're new here, like and subscribe, and you can follow along with the full write up on FireShip. Io. Cloud computing is a win win, both for companies that provide the services and the companies that use them.

The providers make tons of money. In fact, AWS makes up more than 13% of Amazon's total sales and operates at a much higher profit margin than its retail business. But, it's also a huge win for their customers. Instead of buying and managing its own hardware, a a startup today has all the infrastructure it could possibly need right at its fingertips. The startup only pays for what it actually uses, it takes almost no effort to scale things up or down, and you don't need to hire an IT guy to wire the thing up.

I mean, imagine if I tried to build a server room here in Phoenix, Arizona. My air conditioning bill alone would likely far seed whatever my AWS bill would be for the same set of resources. That's because they build these highly optimized cloud campuses next to rivers to optimize cooling with state of the art equipment that can guarantee uptimes of 99.99% and beyond. I like to think of cloud computing like a power plant. You don't care where or how that power is being generated, you just plug in your device and then pay the bill.

In fact, we might as well just call that Electricity as a Service. Because as a developer, it's important to distinguish between the different categories of cloud services out there. The modern cloud can trace its roots back to 2006, when Amazon launched EC 2 and S3. EC 2 stands for Elastic Compute Cloud and it's essentially a virtual computer with its own RAM and CPU, along with an operating system you can administer and an IP address for networking. When you spin up a server in the Cloud, it's called a Virtual Machine because you haven't actually allocated any specific piece of hardware.

Rather, the Cloud has virtualized a simulated environment for you that resembles a piece of hardware. There's a lot going on behind the scenes to make this possible that you don't really need to know. Like how they use hypervisors on top of bare metal to handle CPU scheduling and memory allocation. The other big service launched by AWS back in 06 was s 3, which is basically a hard drive with a file system in the cloud where you can store things like images and videos. Things like storage buckets and virtual machines are known as Infrastructure as a Service.

They're the low level building blocks of the Cloud, so it's up to the developer to manage and scale them. Once infrastructure became available, it created explosive growth in a new type of software. Software as a Service. A great case study is Dropbox. In the early days, the company didn't have the money to roll out its own infrastructure.

So it uploaded its users' files to S3. So so it didn't even really start out as a file storage company. It was more of a software company that helped people get their files uploaded to the Cloud. And it just goes to show you that you can build a $1,000,000,000 business by focusing primarily on the front end user experience. So infrastructure as a service abstracts away hardware.

It took no more than of years to see cloud computing rise to another level, a Platform as a Service. When developing an application, developers have a lot more concerns than just hardware. You have to think about security and how to scale the workload, and how to put all the pieces together into a cohesive unit. That's what a Platform as a Service aims to do. Some famous examples include Elastic Beanstalk, Heroku, and Google App Engine.

Let's imagine a developer has built an app with Ruby on Rails. In order to be used by people around the world, that app will need a database and a web server with a very specific configuration. The platform is designed to take care of the configuration part. In theory, the only thing the developer has to do is upload their code and the Cloud takes care of the provisioning of the database, provides security, and scales the traffic. So what we have here is a platform for creating software as a service, but we can still take things one step further.

The Cloud can also provide SDKs that bring the cloud directly into our front end applications, and that means a developer might not need any back end code at all, giving us a back end as a service. The 2 big players in this space include Firebase from Google and Amplify from AWS. With just a few lines of JavaScript, anybody can create a real time application with user cation hooked up to a cloud database that's way more reliable than any back end you would build from scratch. Sounds awesome, but it's not without its drawbacks. The more you rely on services offered by a given Cloud, the more likely you are to experience vendor lock in.

The Cloud can help you get your software off the ground, Once you become successful, like Dropbox, your opinion might start to change. In 2016, Dropbox started to move their customers' data off AWS to their own data centers and cut at least 75,000,000 from their operating expenses. In this case, it made sense to move off the Cloud to on premises, but they're actually not fully on prem. They still use the Cloud to handle about 10% of their file uploads, especially for edge cases and regions that their data centers don't cover. And that's what we call a hybrid Cloud.

It generally refers to big enterprises that run a private cloud on their own data centers, but also combine it with services on the public cloud. And by public, I mean the Cloud where you can just sign up with an email address and credit card and start doing stuff. You might also hear the term multi Cloud. This refers to a single architecture sure or application that combines services from multiple public clouds, usually to prevent things like vendor lock in and optimize pricing. Now let's go ahead and jump into the cloud and take a look at some of its capabilities.

We already talked a little bit about virtual machines and cloud storage buckets, but that's just the tip of the iceberg in today's world. AWS alone offers more than a 150 different services and APIs. But one thing all these services share in common is a service level agreement or SLA. This is a contract between you and the cloud provider. The provider generally guarantees a certain uptime and error rate for the service and will generally provide a financial credit or refund back the client if it fails to meet those SLA requirements.

On the other side of the coin, the client generally has a quota that they must stay within when using the service. Sometimes I like to say the cloud scales infinitely, but I don't mean that to be taken literally. The quota tells you how far you can push the limits. When When getting started with a cloud provider, a great place to start is with identity and access management, the opposite of who am I? I am.

It's the front gate to your structure, and you shouldn't just let anybody in. You can secure your services by attaching security policies to them. For example, you might have a storage bucket, and that policy controls who in the organization can actually access the files inside it. Now if your organization has thousands of employees, who would be very cumbersome to manage policies for every single resource. That's where roles come in.

They allow you to group permissions together into a unit that can be reused throughout the cloud, and you can assign roles outside of your account if you're working with consultants or some other third party. Now in some cases, your machines might need to communicate with each other. For that, you can define resource based policies or service accounts. This would allow a virtual machine, for example, to access a database somewhere else in your cloud. Now that we know a little bit about security, let's take a look at the backbone of the cloud, compute resources.

On Google Cloud, we can create a virtual machine with Compute Engine. It will give you some options when you create this machine. The region represents the actual physical location of the data center. A region closer to your end users should be faster, But some companies must follow data residency regulations, which dictate where customer data can actually be stored. Now each region is actually a campus with multiple isolated data centers.

That means if you have a mission critical workload, you can put it in the same region in multiple zones. If a meteor destroys one of those data centers, you'll still have a reliable service in that region. That gives you high availability and redundancy. Azure actually has the most data centers of all the clouds, and they have 2 secret government locations that we don't even know about. The next option is the machine type, which defines the amount of memory and CPU in this virtual machine.

The bigger they come, the more they cost. But the great thing about the cloud is that everything is pay as you go. You're billed down to the second and you can shut the instance off at any time. From there, you need to determine the operating system by selecting a disk image. You have a bunch of different flavors of Linux or Windows to choose from.

From there, you can specify a service account if you have other services that need to access this VM. By default, you have a firewall that makes this instance inaccessible to the outside world, But we can change that by allowing HTTP traffic. Now when it comes to networking, it's important to understand that the instance has an internal IP address and an external IP address. Both of these values are ephemeral or short lived by default. That means if you rebuild the instance, it could be assigned a new IP address.

However, if you have a service that relies on an IP address, you can reserve a static one. So what's the difference between an internal and an external IP? The internal version can only be used to communicate with other compute instances on the same cloud. If you need to communicate with other services on the Internet, then you'll use the external IP. When it comes to networking, you might come across these weird terms, egress and ingress.

Egress defines outbound data that's being sent from your instance to the outside world. Ingresses the exact opposite, data that's being sent from the outside world into your instance. Egress is typically the one to watch out for because it can have an impact on your bill. Now remember, we're just talking about a simulated computer here. If we want to access the command line for that instance, we can do so directly in the console with a Cloud Shell session.

And inside the session, you can do pretty much anything you could do in a regular Linux or Windows terminal. So now that you know all this stuff about virtual machines, it's time to let you in on a little secret. For most applications, it's pretty rare to create them manually like I just showed you. There's just better ways to handle your compute resources, and a lot of it has to do with the way that they scale. Let's imagine we built an app on this VM.

It's popular, and now our users are maxing out the CPU and memory on the instance. One option would be to scale it vertically. We could do that by adding additional CPU cores and more memory to make this single VM more powerful, but we can only do that to a certain extent. So another option is to scale horizontally. Instead of making our VM bigger, we'll just create more of them.

We can create them in regions all over the world and then distribute the workload accordingly. When you distribute VMs like this, you also need to worry about load balancing. You don't want all of your traffic going to a single VM while the others are just sitting there idle. But all the clouds offer load balancer services to help you manage the stuff. But what if you never had to worry about scaling your infrastructure at all?

Well, there are actually already 2 cloud computing paradigms that make that possible today. The first one we'll look at is containerization. Now, a container provides a way for you to simulate an operating system. That may sound very similar to a virtual machine, but there's one key difference. You're inside a simulation of a simulation Inside another giant simulation.

A virtual machine sits on top of the hardware directly, but a container sits on top of an underlying operating system to simulate another operating system or application. This is a really awesome thing for development because it means you can put your application in a container and then take it and deploy it to any cloud you want. Or in other words, you avoid the vendor lock in. All of the clouds have container registries where you can upload your containers and then use them across other services. Now, most companies using this strategy have multiple containers to run different services.

You might have one container for your Node. Js web server, another for sending email, and another for training your machine learning algorithms. And as your business becomes more complex, you'll need a way to orchestrate all of these microservices. And that's where Kubernetes comes in. It organizes all of your containers into groups of pods, then it can automatically scale those pods up or down based on the amount of traffic or utilization.

When the traffic goes up, Kubernetes will allocate more virtual machines to run more containers. When the traffic dies off, it'll shut down those virtual machines so they're not sitting there idle, costing you money. But there's a great saying about Kubernetes and it goes something like, why you f -ing around with Kubernetes? Because in 2020, we have serverless or functions as a service. That was first introduced in 2014 with AWS Lambda.

It allows you to run code in response to events, like a regular HTTP request or when something happens in some other cloud service like a write to the database. The code you deploy to one of these functions will scale automatically, so you never have to worry about containers, VMs, or anything like that. And it's truly pay as you go, because you only pay for each individual function and vocation. Now prior to 2019, the big trade off was that you had no control over the actual runtime. So if you needed to install some OS level software, you wouldn't be able to do that.

But just in the last year or so, AWS released the runtime API, and Google released a service called Cloud Run. And that means today, we can do pretty much anything we want in a serverless environment. There are still some other trade offs, but generally speaking, it's the easiest, most cost effective way to deploy back end code that scales. And I think that's pretty much everything you need to know about the compute in Cloud Computing. At least until we have quantum computers in the Cloud.

Oh, wait. I almost forgot. It's 2020. We have those things already. I'm gonna go ahead and wrap things up there.

If you learned something, please like and subscribe and if you wanna see more videos like this, let me know in the comments. Thanks for watching and I will talk to you soon.
October 23, 2019. Google announces it has achieved the impossible goal of Quantum Supremacy. A machine more than 100,000,000 times faster than your 16 inch MacBook. Only 1 month later, AWS releases Quantum Computing as a Service in the Cloud. If you're a software developer in today's world, there's a good chance your infrastructure is on the Cloud, and very likely with a big provider like AWS, Azure, GCP, or IBM.
google
90% of companies are on the Cloud, 60% of workloads run on the Cloud, 30% of IT budgets are allocated to the Cloud, generating 100 of 1,000,000,000 of dollars in revenue, and those numbers are only expected to increase in the coming years.
In today's video, you'll learn exactly what cloud computing is, why companies are adopting it so rapidly, and what you need to know as a software developer. If you're new here, like and subscribe, and you can follow along with the full write up on FireShip. Io. Cloud computing is a win win, both for companies that provide the services and the companies that use them. The providers make tons of money. In fact, AWS makes up more than 13% of Amazon's total sales and operates at a much higher profit margin than its retail business. But, it's also a huge win for their customers. Instead of buying and managing its own hardware, a a startup today has all the infrastructure it could possibly need right at its fingertips. The startup only pays for what it actually uses, it takes almost no effort to scale things up or down, and you don't need to hire an IT guy to wire the thing up.
amazon
technology
infrastructure
ibm
software development
computers
microsoft
software
commerce
I mean, imagine if I tried to build a server room here in Phoenix, Arizona. My air conditioning bill alone would likely far seed whatever my AWS bill would be for the same set of resources. That's because they build these highly optimized cloud campuses next to rivers to optimize cooling with state of the art equipment that can guarantee uptimes of 99.99% and beyond. I like to think of cloud computing like a power plant. You don't care where or how that power is being generated, you just plug in your device and then pay the bill. In fact, we might as well just call that Electricity as a Service. Because as a developer, it's important to distinguish between the different categories of cloud services out there. The modern cloud can trace its roots back to 2006, when Amazon launched EC 2 and S3. EC 2 stands for Elastic Compute Cloud and it's essentially a virtual computer with its own RAM and CPU, along with an operating system you can administer and an IP address for networking.
amazon
renewable energy
When you spin up a server in the Cloud, it's called a Virtual Machine because you haven't actually allocated any specific piece of hardware. Rather, the Cloud has virtualized a simulated environment for you that resembles a piece of hardware.
There's a lot going on behind the scenes to make this possible that you don't really need to know. Like how they use hypervisors on top of bare metal to handle CPU scheduling and memory allocation. The other big service launched by AWS back in 06 was s 3, which is basically a hard drive with a file system in the cloud where you can store things like images and videos. Things like storage buckets and virtual machines are known as Infrastructure as a Service. They're the low level building blocks of the Cloud, so it's up to the developer to manage and scale them. Once infrastructure became available, it created explosive growth in a new type of software. Software as a Service. A great case study is Dropbox. In the early days, the company didn't have the money to roll out its own infrastructure. So it uploaded its users' files to S3. So so it didn't even really start out as a file storage company.
infrastructure
software development
software
computers
microsoft
technology
ibm
data management
It was more of a software company that helped people get their files uploaded to the Cloud.
And it just goes to show you that you can build a $1,000,000,000 business by focusing primarily on the front end user experience. So infrastructure as a service abstracts away hardware. It took no more than of years to see cloud computing rise to another level, a Platform as a Service.
infrastructure
ibm
microsoft
computers
When developing an application, developers have a lot more concerns than just hardware.
You have to think about security and how to scale the workload, and how to put all the pieces together into a cohesive unit. That's what a Platform as a Service aims to do. Some famous examples include Elastic Beanstalk, Heroku, and Google App Engine. Let's imagine a developer has built an app with Ruby on Rails. In order to be used by people around the world, that app will need a database and a web server with a very specific configuration. The platform is designed to take care of the configuration part. In theory, the only thing the developer has to do is upload their code and the Cloud takes care of the provisioning of the database, provides security, and scales the traffic. So what we have here is a platform for creating software as a service, but we can still take things one step further. The Cloud can also provide SDKs that bring the cloud directly into our front end applications, and that means a developer might not need any back end code at all, giving us a back end as a service. The 2 big players in this space include Firebase from Google and Amplify from AWS. With just a few lines of JavaScript, anybody can create a real time application with user cation hooked up to a cloud database that's way more reliable than any back end you would build from scratch. Sounds awesome, but it's not without its drawbacks. The more you rely on services offered by a given Cloud, the more likely you are to experience vendor lock in. The Cloud can help you get your software off the ground, Once you become successful, like Dropbox, your opinion might start to change.
software development
software
infrastructure
databases
data management
video gaming
programming
In 2016, Dropbox started to move their customers' data off AWS to their own data centers and cut at least 75,000,000 from their operating expenses. In this case, it made sense to move off the Cloud to on premises, but they're actually not fully on prem. They still use the Cloud to handle about 10% of their file uploads, especially for edge cases and regions that their data centers don't cover. And that's what we call a hybrid Cloud. It generally refers to big enterprises that run a private cloud on their own data centers, but also combine it with services on the public cloud. And by public, I mean the Cloud where you can just sign up with an email address and credit card and start doing stuff. You might also hear the term multi Cloud.
This refers to a single architecture sure or application that combines services from multiple public clouds, usually to prevent things like vendor lock in and optimize pricing. Now let's go ahead and jump into the cloud and take a look at some of its capabilities. We already talked a little bit about virtual machines and cloud storage buckets, but that's just the tip of the iceberg in today's world. AWS alone offers more than a 150 different services and APIs.
infrastructure
technology
software
systems
computers
architecture
amazon
But one thing all these services share in common is a service level agreement or SLA.
This is a contract between you and the cloud provider. The provider generally guarantees a certain uptime and error rate for the service and will generally provide a financial credit or refund back the client if it fails to meet those SLA requirements. On the other side of the coin, the client generally has a quota that they must stay within when using the service.
customer support
billing
data management
Sometimes I like to say the cloud scales infinitely, but I don't mean that to be taken literally. The quota tells you how far you can push the limits. When When getting started with a cloud provider, a great place to start is with identity and access management, the opposite of who am I?
I am. It's the front gate to your structure, and you shouldn't just let anybody in. You can secure your services by attaching security policies to them. For example, you might have a storage bucket, and that policy controls who in the organization can actually access the files inside it. Now if your organization has thousands of employees, who would be very cumbersome to manage policies for every single resource. That's where roles come in. They allow you to group permissions together into a unit that can be reused throughout the cloud, and you can assign roles outside of your account if you're working with consultants or some other third party.
security
management
data management
government
Now in some cases, your machines might need to communicate with each other. For that, you can define resource based policies or service accounts. This would allow a virtual machine, for example, to access a database somewhere else in your cloud. Now that we know a little bit about security, let's take a look at the backbone of the cloud, compute resources. On Google Cloud, we can create a virtual machine with Compute Engine. It will give you some options when you create this machine. The region represents the actual physical location of the data center. A region closer to your end users should be faster, But some companies must follow data residency regulations, which dictate where customer data can actually be stored. Now each region is actually a campus with multiple isolated data centers. That means if you have a mission critical workload, you can put it in the same region in multiple zones. If a meteor destroys one of those data centers, you'll still have a reliable service in that region. That gives you high availability and redundancy. Azure actually has the most data centers of all the clouds, and they have 2 secret government locations that we don't even know about. The next option is the machine type, which defines the amount of memory and CPU in this virtual machine. The bigger they come, the more they cost. But the great thing about the cloud is that everything is pay as you go. You're billed down to the second and you can shut the instance off at any time. From there, you need to determine the operating system by selecting a disk image.
data management
networking
geography
computers
meteorology
cities
infrastructure
microsoft
databases
You have a bunch of different flavors of Linux or Windows to choose from.
From there, you can specify a service account if you have other services that need to access this VM. By default, you have a firewall that makes this instance inaccessible to the outside world, But we can change that by allowing HTTP traffic. Now when it comes to networking, it's important to understand that the instance has an internal IP address and an external IP address. Both of these values are ephemeral or short lived by default. That means if you rebuild the instance, it could be assigned a new IP address. However, if you have a service that relies on an IP address, you can reserve a static one.
networking
So what's the difference between an internal and an external IP? The internal version can only be used to communicate with other compute instances on the same cloud. If you need to communicate with other services on the Internet, then you'll use the external IP. When it comes to networking, you might come across these weird terms, egress and ingress. Egress defines outbound data that's being sent from your instance to the outside world. Ingresses the exact opposite, data that's being sent from the outside world into your instance. Egress is typically the one to watch out for because it can have an impact on your bill. Now remember, we're just talking about a simulated computer here. If we want to access the command line for that instance, we can do so directly in the console with a Cloud Shell session.
computer science
networking
programming
internet
data
And inside the session, you can do pretty much anything you could do in a regular Linux or Windows terminal.
So now that you know all this stuff about virtual machines, it's time to let you in on a little secret. For most applications, it's pretty rare to create them manually like I just showed you. There's just better ways to handle your compute resources, and a lot of it has to do with the way that they scale. Let's imagine we built an app on this VM. It's popular, and now our users are maxing out the CPU and memory on the instance. One option would be to scale it vertically.
computers
computer science
We could do that by adding additional CPU cores and more memory to make this single VM more powerful, but we can only do that to a certain extent. So another option is to scale horizontally. Instead of making our VM bigger, we'll just create more of them. We can create them in regions all over the world and then distribute the workload accordingly.
When you distribute VMs like this, you also need to worry about load balancing. You don't want all of your traffic going to a single VM while the others are just sitting there idle. But all the clouds offer load balancer services to help you manage the stuff. But what if you never had to worry about scaling your infrastructure at all? Well, there are actually already 2 cloud computing paradigms that make that possible today. The first one we'll look at is containerization. Now, a container provides a way for you to simulate an operating system. That may sound very similar to a virtual machine, but there's one key difference. You're inside a simulation of a simulation Inside another giant simulation. A virtual machine sits on top of the hardware directly, but a container sits on top of an underlying operating system to simulate another operating system or application. This is a really awesome thing for development because it means you can put your application in a container and then take it and deploy it to any cloud you want. Or in other words, you avoid the vendor lock in. All of the clouds have container registries where you can upload your containers and then use them across other services. Now, most companies using this strategy have multiple containers to run different services. You might have one container for your Node.
systems
infrastructure
databases
software development
computer science
computers
modeling
aerospace
robotics
technology
software
Js web server, another for sending email, and another for training your machine learning algorithms. And as your business becomes more complex, you'll need a way to orchestrate all of these microservices. And that's where Kubernetes comes in. It organizes all of your containers into groups of pods, then it can automatically scale those pods up or down based on the amount of traffic or utilization. When the traffic goes up, Kubernetes will allocate more virtual machines to run more containers. When the traffic dies off, it'll shut down those virtual machines so they're not sitting there idle, costing you money. But there's a great saying about Kubernetes and it goes something like, why you f -ing around with Kubernetes? Because in 2020, we have serverless or functions as a service.
That was first introduced in 2014 with AWS Lambda. It allows you to run code in response to events, like a regular HTTP request or when something happens in some other cloud service like a write to the database. The code you deploy to one of these functions will scale automatically, so you never have to worry about containers, VMs, or anything like that.
software development
software
databases
programming
data management
And it's truly pay as you go, because you only pay for each individual function and vocation. Now prior to 2019, the big trade off was that you had no control over the actual runtime. So if you needed to install some OS level software, you wouldn't be able to do that. But just in the last year or so, AWS released the runtime API, and Google released a service called Cloud Run. And that means today, we can do pretty much anything we want in a serverless environment. There are still some other trade offs, but generally speaking, it's the easiest, most cost effective way to deploy back end code that scales. And I think that's pretty much everything you need to know about the compute in Cloud Computing. At least until we have quantum computers in the Cloud. Oh, wait. I almost forgot. It's 2020. We have those things already. I'm gonna go ahead and wrap things up there. If you learned something, please like and subscribe and if you wanna see more videos like this, let me know in the comments. Thanks for watching and I will talk to you soon.
October 23, 2019. Google announces it has achieved the impossible goal of Quantum Supremacy. A machine more than 100,000,000 times faster than your 16 inch MacBook. Only 1 month later, AWS releases Quantum Computing as a Service in the Cloud. If you're a software developer in today's world, there's a good chance your infrastructure is on the Cloud, and very likely with a big provider like AWS, Azure, GCP, or IBM. 90% of companies are on the Cloud, 60% of workloads run on the Cloud, 30% of IT budgets are allocated to the Cloud, generating 100 of 1,000,000,000 of dollars in revenue, and those numbers are only expected to increase in the coming years. In today's video, you'll learn exactly what cloud computing is, why companies are adopting it so rapidly, and what you need to know as a software developer. If you're new here, like and subscribe, and you can follow along with the full write up on FireShip. Io. Cloud computing is a win win, both for companies that provide the services and the companies that use them. The providers make tons of money. In fact, AWS makes up more than 13% of Amazon's total sales and operates at a much higher profit margin than its retail business. But, it's also a huge win for their customers. Instead of buying and managing its own hardware, a a startup today has all the infrastructure it could possibly need right at its fingertips. The startup only pays for what it actually uses, it takes almost no effort to scale things up or down, and you don't need to hire an IT guy to wire the thing up. I mean, imagine if I tried to build a server room here in Phoenix, Arizona. My air conditioning bill alone would likely far seed whatever my AWS bill would be for the same set of resources. That's because they build these highly optimized cloud campuses next to rivers to optimize cooling with state of the art equipment that can guarantee uptimes of 99.99% and beyond. I like to think of cloud computing like a power plant. You don't care where or how that power is being generated, you just plug in your device and then pay the bill. In fact, we might as well just call that Electricity as a Service. Because as a developer, it's important to distinguish between the different categories of cloud services out there. The modern cloud can trace its roots back to 2006, when Amazon launched EC 2 and S3. EC 2 stands for Elastic Compute Cloud and it's essentially a virtual computer with its own RAM and CPU, along with an operating system you can administer and an IP address for networking. When you spin up a server in the Cloud, it's called a Virtual Machine because you haven't actually allocated any specific piece of hardware. Rather, the Cloud has virtualized a simulated environment for you that resembles a piece of hardware. There's a lot going on behind the scenes to make this possible that you don't really need to know. Like how they use hypervisors on top of bare metal to handle CPU scheduling and memory allocation. The other big service launched by AWS back in 06 was s 3, which is basically a hard drive with a file system in the cloud where you can store things like images and videos. Things like storage buckets and virtual machines are known as Infrastructure as a Service. They're the low level building blocks of the Cloud, so it's up to the developer to manage and scale them. Once infrastructure became available, it created explosive growth in a new type of software. Software as a Service. A great case study is Dropbox. In the early days, the company didn't have the money to roll out its own infrastructure. So it uploaded its users' files to S3. So so it didn't even really start out as a file storage company. It was more of a software company that helped people get their files uploaded to the Cloud. And it just goes to show you that you can build a $1,000,000,000 business by focusing primarily on the front end user experience. So infrastructure as a service abstracts away hardware. It took no more than of years to see cloud computing rise to another level, a Platform as a Service. When developing an application, developers have a lot more concerns than just hardware. You have to think about security and how to scale the workload, and how to put all the pieces together into a cohesive unit. That's what a Platform as a Service aims to do. Some famous examples include Elastic Beanstalk, Heroku, and Google App Engine. Let's imagine a developer has built an app with Ruby on Rails. In order to be used by people around the world, that app will need a database and a web server with a very specific configuration. The platform is designed to take care of the configuration part. In theory, the only thing the developer has to do is upload their code and the Cloud takes care of the provisioning of the database, provides security, and scales the traffic. So what we have here is a platform for creating software as a service, but we can still take things one step further. The Cloud can also provide SDKs that bring the cloud directly into our front end applications, and that means a developer might not need any back end code at all, giving us a back end as a service. The 2 big players in this space include Firebase from Google and Amplify from AWS. With just a few lines of JavaScript, anybody can create a real time application with user cation hooked up to a cloud database that's way more reliable than any back end you would build from scratch. Sounds awesome, but it's not without its drawbacks. The more you rely on services offered by a given Cloud, the more likely you are to experience vendor lock in. The Cloud can help you get your software off the ground, Once you become successful, like Dropbox, your opinion might start to change. In 2016, Dropbox started to move their customers' data off AWS to their own data centers and cut at least 75,000,000 from their operating expenses. In this case, it made sense to move off the Cloud to on premises, but they're actually not fully on prem. They still use the Cloud to handle about 10% of their file uploads, especially for edge cases and regions that their data centers don't cover. And that's what we call a hybrid Cloud. It generally refers to big enterprises that run a private cloud on their own data centers, but also combine it with services on the public cloud. And by public, I mean the Cloud where you can just sign up with an email address and credit card and start doing stuff. You might also hear the term multi Cloud. This refers to a single architecture sure or application that combines services from multiple public clouds, usually to prevent things like vendor lock in and optimize pricing. Now let's go ahead and jump into the cloud and take a look at some of its capabilities. We already talked a little bit about virtual machines and cloud storage buckets, but that's just the tip of the iceberg in today's world. AWS alone offers more than a 150 different services and APIs. But one thing all these services share in common is a service level agreement or SLA. This is a contract between you and the cloud provider. The provider generally guarantees a certain uptime and error rate for the service and will generally provide a financial credit or refund back the client if it fails to meet those SLA requirements. On the other side of the coin, the client generally has a quota that they must stay within when using the service. Sometimes I like to say the cloud scales infinitely, but I don't mean that to be taken literally. The quota tells you how far you can push the limits. When When getting started with a cloud provider, a great place to start is with identity and access management, the opposite of who am I? I am. It's the front gate to your structure, and you shouldn't just let anybody in. You can secure your services by attaching security policies to them. For example, you might have a storage bucket, and that policy controls who in the organization can actually access the files inside it. Now if your organization has thousands of employees, who would be very cumbersome to manage policies for every single resource. That's where roles come in. They allow you to group permissions together into a unit that can be reused throughout the cloud, and you can assign roles outside of your account if you're working with consultants or some other third party. Now in some cases, your machines might need to communicate with each other. For that, you can define resource based policies or service accounts. This would allow a virtual machine, for example, to access a database somewhere else in your cloud. Now that we know a little bit about security, let's take a look at the backbone of the cloud, compute resources. On Google Cloud, we can create a virtual machine with Compute Engine. It will give you some options when you create this machine. The region represents the actual physical location of the data center. A region closer to your end users should be faster, But some companies must follow data residency regulations, which dictate where customer data can actually be stored. Now each region is actually a campus with multiple isolated data centers. That means if you have a mission critical workload, you can put it in the same region in multiple zones. If a meteor destroys one of those data centers, you'll still have a reliable service in that region. That gives you high availability and redundancy. Azure actually has the most data centers of all the clouds, and they have 2 secret government locations that we don't even know about. The next option is the machine type, which defines the amount of memory and CPU in this virtual machine. The bigger they come, the more they cost. But the great thing about the cloud is that everything is pay as you go. You're billed down to the second and you can shut the instance off at any time. From there, you need to determine the operating system by selecting a disk image. You have a bunch of different flavors of Linux or Windows to choose from. From there, you can specify a service account if you have other services that need to access this VM. By default, you have a firewall that makes this instance inaccessible to the outside world, But we can change that by allowing HTTP traffic. Now when it comes to networking, it's important to understand that the instance has an internal IP address and an external IP address. Both of these values are ephemeral or short lived by default. That means if you rebuild the instance, it could be assigned a new IP address. However, if you have a service that relies on an IP address, you can reserve a static one. So what's the difference between an internal and an external IP? The internal version can only be used to communicate with other compute instances on the same cloud. If you need to communicate with other services on the Internet, then you'll use the external IP. When it comes to networking, you might come across these weird terms, egress and ingress. Egress defines outbound data that's being sent from your instance to the outside world. Ingresses the exact opposite, data that's being sent from the outside world into your instance. Egress is typically the one to watch out for because it can have an impact on your bill. Now remember, we're just talking about a simulated computer here. If we want to access the command line for that instance, we can do so directly in the console with a Cloud Shell session. And inside the session, you can do pretty much anything you could do in a regular Linux or Windows terminal. So now that you know all this stuff about virtual machines, it's time to let you in on a little secret. For most applications, it's pretty rare to create them manually like I just showed you. There's just better ways to handle your compute resources, and a lot of it has to do with the way that they scale. Let's imagine we built an app on this VM. It's popular, and now our users are maxing out the CPU and memory on the instance. One option would be to scale it vertically. We could do that by adding additional CPU cores and more memory to make this single VM more powerful, but we can only do that to a certain extent. So another option is to scale horizontally. Instead of making our VM bigger, we'll just create more of them. We can create them in regions all over the world and then distribute the workload accordingly. When you distribute VMs like this, you also need to worry about load balancing. You don't want all of your traffic going to a single VM while the others are just sitting there idle. But all the clouds offer load balancer services to help you manage the stuff. But what if you never had to worry about scaling your infrastructure at all? Well, there are actually already 2 cloud computing paradigms that make that possible today. The first one we'll look at is containerization. Now, a container provides a way for you to simulate an operating system. That may sound very similar to a virtual machine, but there's one key difference. You're inside a simulation of a simulation Inside another giant simulation. A virtual machine sits on top of the hardware directly, but a container sits on top of an underlying operating system to simulate another operating system or application. This is a really awesome thing for development because it means you can put your application in a container and then take it and deploy it to any cloud you want. Or in other words, you avoid the vendor lock in. All of the clouds have container registries where you can upload your containers and then use them across other services. Now, most companies using this strategy have multiple containers to run different services. You might have one container for your Node. Js web server, another for sending email, and another for training your machine learning algorithms. And as your business becomes more complex, you'll need a way to orchestrate all of these microservices. And that's where Kubernetes comes in. It organizes all of your containers into groups of pods, then it can automatically scale those pods up or down based on the amount of traffic or utilization. When the traffic goes up, Kubernetes will allocate more virtual machines to run more containers. When the traffic dies off, it'll shut down those virtual machines so they're not sitting there idle, costing you money. But there's a great saying about Kubernetes and it goes something like, why you f -ing around with Kubernetes? Because in 2020, we have serverless or functions as a service. That was first introduced in 2014 with AWS Lambda. It allows you to run code in response to events, like a regular HTTP request or when something happens in some other cloud service like a write to the database. The code you deploy to one of these functions will scale automatically, so you never have to worry about containers, VMs, or anything like that. And it's truly pay as you go, because you only pay for each individual function and vocation. Now prior to 2019, the big trade off was that you had no control over the actual runtime. So if you needed to install some OS level software, you wouldn't be able to do that. But just in the last year or so, AWS released the runtime API, and Google released a service called Cloud Run. And that means today, we can do pretty much anything we want in a serverless environment. There are still some other trade offs, but generally speaking, it's the easiest, most cost effective way to deploy back end code that scales. And I think that's pretty much everything you need to know about the compute in Cloud Computing. At least until we have quantum computers in the Cloud. Oh, wait. I almost forgot. It's 2020. We have those things already. I'm gonna go ahead and wrap things up there. If you learned something, please like and subscribe and if you wanna see more videos like this, let me know in the comments. Thanks for watching and I will talk to you soon.
October
october
23,
23
2019.
2019
Google
google
announces
announces
it
it
has
has
achieved
achieved
the
the
impossible
impossible
goal
goal
of
of
Quantum
quantum
Supremacy.
supremacy
A
a
machine
machine
more
more
than
than
100,000,000
100,000,000
times
times
faster
faster
than
than
your
your
16
16
inch
inch
MacBook.
macbook
Only
only
1
1
month
month
later,
later
AWS
aws
releases
releases
Quantum
quantum
Computing
computing
as
as
a
a
Service
service
in
in
the
the
Cloud.
cloud
If
if
you're
you're
a
a
software
software
developer
developer
in
in
today's
today's
world,
world
there's
there's
a
a
good
good
chance
chance
your
your
infrastructure
infrastructure
is
is
on
on
the
the
Cloud,
cloud
and
and
very
very
likely
likely
with
with
a
a
big
big
provider
provider
like
like
AWS,
aws
Azure,
azure
GCP,
gcp
or
or
IBM.
ibm
90%
90%
of
of
companies
companies
are
are
on
on
the
the
Cloud,
cloud
60%
60%
of
of
workloads
workloads
run
run
on
on
the
the
Cloud,
cloud
30%
30%
of
of
IT
it
budgets
budgets
are
are
allocated
allocated
to
to
the
the
Cloud,
cloud
generating
generating
100
100
of
of
1,000,000,000
1,000,000,000
of
of
dollars
dollars
in
in
revenue,
revenue
and
and
those
those
numbers
numbers
are
are
only
only
expected
expected
to
to
increase
increase
in
in
the
the
coming
coming
years.
years
In
in
today's
today's
video,
video
you'll
you'll
learn
learn
exactly
exactly
what
what
cloud
cloud
computing
computing
is,
is
why
why
companies
companies
are
are
adopting
adopting
it
it
so
so
rapidly,
rapidly
and
and
what
what
you
you
need
need
to
to
know
know
as
as
a
a
software
software
developer.
developer
If
if
you're
you're
new
new
here,
here
like
like
and
and
subscribe,
subscribe
and
and
you
you
can
can
follow
follow
along
along
with
with
the
the
full
full
write
write
up
up
on
on
FireShip.
fireship
Io.
io
Cloud
cloud
computing
computing
is
is
a
a
win
win
win,
win
both
both
for
for
companies
companies
that
that
provide
provide
the
the
services
services
and
and
the
the
companies
companies
that
that
use
use
them.
them
The
the
providers
providers
make
make
tons
tons
of
of
money.
money
In
in
fact,
fact
AWS
aws
makes
makes
up
up
more
more
than
than
13%
13%
of
of
Amazon's
amazon's
total
total
sales
sales
and
and
operates
operates
at
at
a
a
much
much
higher
higher
profit
profit
margin
margin
than
than
its
its
retail
retail
business.
business
But,
but
it's
it's
also
also
a
a
huge
huge
win
win
for
for
their
their
customers.
customers
Instead
instead
of
of
buying
buying
and
and
managing
managing
its
its
own
own
hardware,
hardware
a
a
a
a
startup
startup
today
today
has
has
all
all
the
the
infrastructure
infrastructure
it
it
could
could
possibly
possibly
need
need
right
right
at
at
its
its
fingertips.
fingertips
The
the
startup
startup
only
only
pays
pays
for
for
what
what
it
it
actually
actually
uses,
uses
it
it
takes
takes
almost
almost
no
no
effort
effort
to
to
scale
scale
things
things
up
up
or
or
down,
down
and
and
you
you
don't
don't
need
need
to
to
hire
hire
an
an
IT
it
guy
guy
to
to
wire
wire
the
the
thing
thing
up.
up
I
i
mean,
mean
imagine
imagine
if
if
I
i
tried
tried
to
to
build
build
a
a
server
server
room
room
here
here
in
in
Phoenix,
phoenix
Arizona.
arizona
My
my
air
air
conditioning
conditioning
bill
bill
alone
alone
would
would
likely
likely
far
far
seed
seed
whatever
whatever
my
my
AWS
aws
bill
bill
would
would
be
be
for
for
the
the
same
same
set
set
of
of
resources.
resources
That's
that's
because
because
they
they
build
build
these
these
highly
highly
optimized
optimized
cloud
cloud
campuses
campuses
next
next
to
to
rivers
rivers
to
to
optimize
optimize
cooling
cooling
with
with
state
state
of
of
the
the
art
art
equipment
equipment
that
that
can
can
guarantee
guarantee
uptimes
uptimes
of
of
99.99%
99.99%
and
and
beyond.
beyond
I
i
like
like
to
to
think
think
of
of
cloud
cloud
computing
computing
like
like
a
a
power
power
plant.
plant
You
you
don't
don't
care
care
where
where
or
or
how
how
that
that
power
power
is
is
being
being
generated,
generated
you
you
just
just
plug
plug
in
in
your
your
device
device
and
and
then
then
pay
pay
the
the
bill.
bill
In
in
fact,
fact
we
we
might
might
as
as
well
well
just
just
call
call
that
that
Electricity
electricity
as
as
a
a
Service.
service
Because
because
as
as
a
a
developer,
developer
it's
it's
important
important
to
to
distinguish
distinguish
between
between
the
the
different
different
categories
categories
of
of
cloud
cloud
services
services
out
out
there.
there
The
the
modern
modern
cloud
cloud
can
can
trace
trace
its
its
roots
roots
back
back
to
to
2006,
2006
when
when
Amazon
amazon
launched
launched
EC
ec
2
2
and
and
S3.
s3
EC
ec
2
2
stands
stands
for
for
Elastic
elastic
Compute
compute
Cloud
cloud
and
and
it's
it's
essentially
essentially
a
a
virtual
virtual
computer
computer
with
with
its
its
own
own
RAM
ram
and
and
CPU,
cpu
along
along
with
with
an
an
operating
operating
system
system
you
you
can
can
administer
administer
and
and
an
an
IP
ip
address
address
for
for
networking.
networking
When
when
you
you
spin
spin
up
up
a
a
server
server
in
in
the
the
Cloud,
cloud
it's
it's
called
called
a
a
Virtual
virtual
Machine
machine
because
because
you
you
haven't
haven't
actually
actually
allocated
allocated
any
any
specific
specific
piece
piece
of
of
hardware.
hardware
Rather,
rather
the
the
Cloud
cloud
has
has
virtualized
virtualized
a
a
simulated
simulated
environment
environment
for
for
you
you
that
that
resembles
resembles
a
a
piece
piece
of
of
hardware.
hardware
There's
there's
a
a
lot
lot
going
going
on
on
behind
behind
the
the
scenes
scenes
to
to
make
make
this
this
possible
possible
that
that
you
you
don't
don't
really
really
need
need
to
to
know.
know
Like
like
how
how
they
they
use
use
hypervisors
hypervisors
on
on
top
top
of
of
bare
bare
metal
metal
to
to
handle
handle
CPU
cpu
scheduling
scheduling
and
and
memory
memory
allocation.
allocation
The
the
other
other
big
big
service
service
launched
launched
by
by
AWS
aws
back
back
in
in
06
06
was
was
s
s
3,
3
which
which
is
is
basically
basically
a
a
hard
hard
drive
drive
with
with
a
a
file
file
system
system
in
in
the
the
cloud
cloud
where
where
you
you
can
can
store
store
things
things
like
like
images
images
and
and
videos.
videos
Things
things
like
like
storage
storage
buckets
buckets
and
and
virtual
virtual
machines
machines
are
are
known
known
as
as
Infrastructure
infrastructure
as
as
a
a
Service.
service
They're
they're
the
the
low
low
level
level
building
building
blocks
blocks
of
of
the
the
Cloud,
cloud
so
so
it's
it's
up
up
to
to
the
the
developer
developer
to
to
manage
manage
and
and
scale
scale
them.
them
Once
once
infrastructure
infrastructure
became
became
available,
available
it
it
created
created
explosive
explosive
growth
growth
in
in
a
a
new
new
type
type
of
of
software.
software
Software
software
as
as
a
a
Service.
service
A
a
great
great
case
case
study
study
is
is
Dropbox.
dropbox
In
in
the
the
early
early
days,
days
the
the
company
company
didn't
didn't
have
have
the
the
money
money
to
to
roll
roll
out
out
its
its
own
own
infrastructure.
infrastructure
So
so
it
it
uploaded
uploaded
its
its
users'
users'
files
files
to
to
S3.
s3
So
so
so
so
it
it
didn't
didn't
even
even
really
really
start
start
out
out
as
as
a
a
file
file
storage
storage
company.
company
It
it
was
was
more
more
of
of
a
a
software
software
company
company
that
that
helped
helped
people
people
get
get
their
their
files
files
uploaded
uploaded
to
to
the
the
Cloud.
cloud
And
and
it
it
just
just
goes
goes
to
to
show
show
you
you
that
that
you
you
can
can
build
build
a
a
$1,000,000,000
$1,000,000,000
business
business
by
by
focusing
focusing
primarily
primarily
on
on
the
the
front
front
end
end
user
user
experience.
experience
So
so
infrastructure
infrastructure
as
as
a
a
service
service
abstracts
abstracts
away
away
hardware.
hardware
It
it
took
took
no
no
more
more
than
than
of
of
years
years
to
to
see
see
cloud
cloud
computing
computing
rise
rise
to
to
another
another
level,
level
a
a
Platform
platform
as
as
a
a
Service.
service
When
when
developing
developing
an
an
application,
application
developers
developers
have
have
a
a
lot
lot
more
more
concerns
concerns
than
than
just
just
hardware.
hardware
You
you
have
have
to
to
think
think
about
about
security
security
and
and
how
how
to
to
scale
scale
the
the
workload,
workload
and
and
how
how
to
to
put
put
all
all
the
the
pieces
pieces
together
together
into
into
a
a
cohesive
cohesive
unit.
unit
That's
that's
what
what
a
a
Platform
platform
as
as
a
a
Service
service
aims
aims
to
to
do.
do
Some
some
famous
famous
examples
examples
include
include
Elastic
elastic
Beanstalk,
beanstalk
Heroku,
heroku
and
and
Google
google
App
app
Engine.
engine
Let's
let's
imagine
imagine
a
a
developer
developer
has
has
built
built
an
an
app
app
with
with
Ruby
ruby
on
on
Rails.
rails
In
in
order
order
to
to
be
be
used
used
by
by
people
people
around
around
the
the
world,
world
that
that
app
app
will
will
need
need
a
a
database
database
and
and
a
a
web
web
server
server
with
with
a
a
very
very
specific
specific
configuration.
configuration
The
the
platform
platform
is
is
designed
designed
to
to
take
take
care
care
of
of
the
the
configuration
configuration
part.
part
In
in
theory,
theory
the
the
only
only
thing
thing
the
the
developer
developer
has
has
to
to
do
do
is
is
upload
upload
their
their
code
code
and
and
the
the
Cloud
cloud
takes
takes
care
care
of
of
the
the
provisioning
provisioning
of
of
the
the
database,
database
provides
provides
security,
security
and
and
scales
scales
the
the
traffic.
traffic
So
so
what
what
we
we
have
have
here
here
is
is
a
a
platform
platform
for
for
creating
creating
software
software
as
as
a
a
service,
service
but
but
we
we
can
can
still
still
take
take
things
things
one
one
step
step
further.
further
The
the
Cloud
cloud
can
can
also
also
provide
provide
SDKs
sdks
that
that
bring
bring
the
the
cloud
cloud
directly
directly
into
into
our
our
front
front
end
end
applications,
applications
and
and
that
that
means
means
a
a
developer
developer
might
might
not
not
need
need
any
any
back
back
end
end
code
code
at
at
all,
all
giving
giving
us
us
a
a
back
back
end
end
as
as
a
a
service.
service
The
the
2
2
big
big
players
players
in
in
this
this
space
space
include
include
Firebase
firebase
from
from
Google
google
and
and
Amplify
amplify
from
from
AWS.
aws
With
with
just
just
a
a
few
few
lines
lines
of
of
JavaScript,
javascript
anybody
anybody
can
can
create
create
a
a
real
real
time
time
application
application
with
with
user
user
cation
cation
hooked
hooked
up
up
to
to
a
a
cloud
cloud
database
database
that's
that's
way
way
more
more
reliable
reliable
than
than
any
any
back
back
end
end
you
you
would
would
build
build
from
from
scratch.
scratch
Sounds
sounds
awesome,
awesome
but
but
it's
it's
not
not
without
without
its
its
drawbacks.
drawbacks
The
the
more
more
you
you
rely
rely
on
on
services
services
offered
offered
by
by
a
a
given
given
Cloud,
cloud
the
the
more
more
likely
likely
you
you
are
are
to
to
experience
experience
vendor
vendor
lock
lock
in.
in
The
the
Cloud
cloud
can
can
help
help
you
you
get
get
your
your
software
software
off
off
the
the
ground,
ground
Once
once
you
you
become
become
successful,
successful
like
like
Dropbox,
dropbox
your
your
opinion
opinion
might
might
start
start
to
to
change.
change
In
in
2016,
2016
Dropbox
dropbox
started
started
to
to
move
move
their
their
customers'
customers'
data
data
off
off
AWS
aws
to
to
their
their
own
own
data
data
centers
centers
and
and
cut
cut
at
at
least
least
75,000,000
75,000,000
from
from
their
their
operating
operating
expenses.
expenses
In
in
this
this
case,
case
it
it
made
made
sense
sense
to
to
move
move
off
off
the
the
Cloud
cloud
to
to
on
on
premises,
premises
but
but
they're
they're
actually
actually
not
not
fully
fully
on
on
prem.
prem
They
they
still
still
use
use
the
the
Cloud
cloud
to
to
handle
handle
about
about
10%
10%
of
of
their
their
file
file
uploads,
uploads
especially
especially
for
for
edge
edge
cases
cases
and
and
regions
regions
that
that
their
their
data
data
centers
centers
don't
don't
cover.
cover
And
and
that's
that's
what
what
we
we
call
call
a
a
hybrid
hybrid
Cloud.
cloud
It
it
generally
generally
refers
refers
to
to
big
big
enterprises
enterprises
that
that
run
run
a
a
private
private
cloud
cloud
on
on
their
their
own
own
data
data
centers,
centers
but
but
also
also
combine
combine
it
it
with
with
services
services
on
on
the
the
public
public
cloud.
cloud
And
and
by
by
public,
public
I
i
mean
mean
the
the
Cloud
cloud
where
where
you
you
can
can
just
just
sign
sign
up
up
with
with
an
an
email
email
address
address
and
and
credit
credit
card
card
and
and
start
start
doing
doing
stuff.
stuff
You
you
might
might
also
also
hear
hear
the
the
term
term
multi
multi
Cloud.
cloud
This
this
refers
refers
to
to
a
a
single
single
architecture
architecture
sure
sure
or
or
application
application
that
that
combines
combines
services
services
from
from
multiple
multiple
public
public
clouds,
clouds
usually
usually
to
to
prevent
prevent
things
things
like
like
vendor
vendor
lock
lock
in
in
and
and
optimize
optimize
pricing.
pricing
Now
now
let's
let's
go
go
ahead
ahead
and
and
jump
jump
into
into
the
the
cloud
cloud
and
and
take
take
a
a
look
look
at
at
some
some
of
of
its
its
capabilities.
capabilities
We
we
already
already
talked
talked
a
a
little
little
bit
bit
about
about
virtual
virtual
machines
machines
and
and
cloud
cloud
storage
storage
buckets,
buckets
but
but
that's
that's
just
just
the
the
tip
tip
of
of
the
the
iceberg
iceberg
in
in
today's
today's
world.
world
AWS
aws
alone
alone
offers
offers
more
more
than
than
a
a
150
150
different
different
services
services
and
and
APIs.
apis
But
but
one
one
thing
thing
all
all
these
these
services
services
share
share
in
in
common
common
is
is
a
a
service
service
level
level
agreement
agreement
or
or
SLA.
sla
This
this
is
is
a
a
contract
contract
between
between
you
you
and
and
the
the
cloud
cloud
provider.
provider
The
the
provider
provider
generally
generally
guarantees
guarantees
a
a
certain
certain
uptime
uptime
and
and
error
error
rate
rate
for
for
the
the
service
service
and
and
will
will
generally
generally
provide
provide
a
a
financial
financial
credit
credit
or
or
refund
refund
back
back
the
the
client
client
if
if
it
it
fails
fails
to
to
meet
meet
those
those
SLA
sla
requirements.
requirements
On
on
the
the
other
other
side
side
of
of
the
the
coin,
coin
the
the
client
client
generally
generally
has
has
a
a
quota
quota
that
that
they
they
must
must
stay
stay
within
within
when
when
using
using
the
the
service.
service
Sometimes
sometimes
I
i
like
like
to
to
say
say
the
the
cloud
cloud
scales
scales
infinitely,
infinitely
but
but
I
i
don't
don't
mean
mean
that
that
to
to
be
be
taken
taken
literally.
literally
The
the
quota
quota
tells
tells
you
you
how
how
far
far
you
you
can
can
push
push
the
the
limits.
limits
When
when
When
when
getting
getting
started
started
with
with
a
a
cloud
cloud
provider,
provider
a
a
great
great
place
place
to
to
start
start
is
is
with
with
identity
identity
and
and
access
access
management,
management
the
the
opposite
opposite
of
of
who
who
am
am
I?
i
I
i
am.
am
It's
it's
the
the
front
front
gate
gate
to
to
your
your
structure,
structure
and
and
you
you
shouldn't
shouldn't
just
just
let
let
anybody
anybody
in.
in
You
you
can
can
secure
secure
your
your
services
services
by
by
attaching
attaching
security
security
policies
policies
to
to
them.
them
For
for
example,
example
you
you
might
might
have
have
a
a
storage
storage
bucket,
bucket
and
and
that
that
policy
policy
controls
controls
who
who
in
in
the
the
organization
organization
can
can
actually
actually
access
access
the
the
files
files
inside
inside
it.
it
Now
now
if
if
your
your
organization
organization
has
has
thousands
thousands
of
of
employees,
employees
who
who
would
would
be
be
very
very
cumbersome
cumbersome
to
to
manage
manage
policies
policies
for
for
every
every
single
single
resource.
resource
That's
that's
where
where
roles
roles
come
come
in.
in
They
they
allow
allow
you
you
to
to
group
group
permissions
permissions
together
together
into
into
a
a
unit
unit
that
that
can
can
be
be
reused
reused
throughout
throughout
the
the
cloud,
cloud
and
and
you
you
can
can
assign
assign
roles
roles
outside
outside
of
of
your
your
account
account
if
if
you're
you're
working
working
with
with
consultants
consultants
or
or
some
some
other
other
third
third
party.
party
Now
now
in
in
some
some
cases,
cases
your
your
machines
machines
might
might
need
need
to
to
communicate
communicate
with
with
each
each
other.
other
For
for
that,
that
you
you
can
can
define
define
resource
resource
based
based
policies
policies
or
or
service
service
accounts.
accounts
This
this
would
would
allow
allow
a
a
virtual
virtual
machine,
machine
for
for
example,
example
to
to
access
access
a
a
database
database
somewhere
somewhere
else
else
in
in
your
your
cloud.
cloud
Now
now
that
that
we
we
know
know
a
a
little
little
bit
bit
about
about
security,
security
let's
let's
take
take
a
a
look
look
at
at
the
the
backbone
backbone
of
of
the
the
cloud,
cloud
compute
compute
resources.
resources
On
on
Google
google
Cloud,
cloud
we
we
can
can
create
create
a
a
virtual
virtual
machine
machine
with
with
Compute
compute
Engine.
engine
It
it
will
will
give
give
you
you
some
some
options
options
when
when
you
you
create
create
this
this
machine.
machine
The
the
region
region
represents
represents
the
the
actual
actual
physical
physical
location
location
of
of
the
the
data
data
center.
center
A
a
region
region
closer
closer
to
to
your
your
end
end
users
users
should
should
be
be
faster,
faster
But
but
some
some
companies
companies
must
must
follow
follow
data
data
residency
residency
regulations,
regulations
which
which
dictate
dictate
where
where
customer
customer
data
data
can
can
actually
actually
be
be
stored.
stored
Now
now
each
each
region
region
is
is
actually
actually
a
a
campus
campus
with
with
multiple
multiple
isolated
isolated
data
data
centers.
centers
That
that
means
means
if
if
you
you
have
have
a
a
mission
mission
critical
critical
workload,
workload
you
you
can
can
put
put
it
it
in
in
the
the
same
same
region
region
in
in
multiple
multiple
zones.
zones
If
if
a
a
meteor
meteor
destroys
destroys
one
one
of
of
those
those
data
data
centers,
centers
you'll
you'll
still
still
have
have
a
a
reliable
reliable
service
service
in
in
that
that
region.
region
That
that
gives
gives
you
you
high
high
availability
availability
and
and
redundancy.
redundancy
Azure
azure
actually
actually
has
has
the
the
most
most
data
data
centers
centers
of
of
all
all
the
the
clouds,
clouds
and
and
they
they
have
have
2
2
secret
secret
government
government
locations
locations
that
that
we
we
don't
don't
even
even
know
know
about.
about
The
the
next
next
option
option
is
is
the
the
machine
machine
type,
type
which
which
defines
defines
the
the
amount
amount
of
of
memory
memory
and
and
CPU
cpu
in
in
this
this
virtual
virtual
machine.
machine
The
the
bigger
bigger
they
they
come,
come
the
the
more
more
they
they
cost.
cost
But
but
the
the
great
great
thing
thing
about
about
the
the
cloud
cloud
is
is
that
that
everything
everything
is
is
pay
pay
as
as
you
you
go.
go
You're
you're
billed
billed
down
down
to
to
the
the
second
second
and
and
you
you
can
can
shut
shut
the
the
instance
instance
off
off
at
at
any
any
time.
time
From
from
there,
there
you
you
need
need
to
to
determine
determine
the
the
operating
operating
system
system
by
by
selecting
selecting
a
a
disk
disk
image.
image
You
you
have
have
a
a
bunch
bunch
of
of
different
different
flavors
flavors
of
of
Linux
linux
or
or
Windows
windows
to
to
choose
choose
from.
from
From
from
there,
there
you
you
can
can
specify
specify
a
a
service
service
account
account
if
if
you
you
have
have
other
other
services
services
that
that
need
need
to
to
access
access
this
this
VM.
vm
By
by
default,
default
you
you
have
have
a
a
firewall
firewall
that
that
makes
makes
this
this
instance
instance
inaccessible
inaccessible
to
to
the
the
outside
outside
world,
world
But
but
we
we
can
can
change
change
that
that
by
by
allowing
allowing
HTTP
http
traffic.
traffic
Now
now
when
when
it
it
comes
comes
to
to
networking,
networking
it's
it's
important
important
to
to
understand
understand
that
that
the
the
instance
instance
has
has
an
an
internal
internal
IP
ip
address
address
and
and
an
an
external
external
IP
ip
address.
address
Both
both
of
of
these
these
values
values
are
are
ephemeral
ephemeral
or
or
short
short
lived
lived
by
by
default.
default
That
that
means
means
if
if
you
you
rebuild
rebuild
the
the
instance,
instance
it
it
could
could
be
be
assigned
assigned
a
a
new
new
IP
ip
address.
address
However,
however
if
if
you
you
have
have
a
a
service
service
that
that
relies
relies
on
on
an
an
IP
ip
address,
address
you
you
can
can
reserve
reserve
a
a
static
static
one.
one
So
so
what's
what's
the
the
difference
difference
between
between
an
an
internal
internal
and
and
an
an
external
external
IP?
ip
The
the
internal
internal
version
version
can
can
only
only
be
be
used
used
to
to
communicate
communicate
with
with
other
other
compute
compute
instances
instances
on
on
the
the
same
same
cloud.
cloud
If
if
you
you
need
need
to
to
communicate
communicate
with
with
other
other
services
services
on
on
the
the
Internet,
internet
then
then
you'll
you'll
use
use
the
the
external
external
IP.
ip
When
when
it
it
comes
comes
to
to
networking,
networking
you
you
might
might
come
come
across
across
these
these
weird
weird
terms,
terms
egress
egress
and
and
ingress.
ingress
Egress
egress
defines
defines
outbound
outbound
data
data
that's
that's
being
being
sent
sent
from
from
your
your
instance
instance
to
to
the
the
outside
outside
world.
world
Ingresses
ingresses
the
the
exact
exact
opposite,
opposite
data
data
that's
that's
being
being
sent
sent
from
from
the
the
outside
outside
world
world
into
into
your
your
instance.
instance
Egress
egress
is
is
typically
typically
the
the
one
one
to
to
watch
watch
out
out
for
for
because
because
it
it
can
can
have
have
an
an
impact
impact
on
on
your
your
bill.
bill
Now
now
remember,
remember
we're
we're
just
just
talking
talking
about
about
a
a
simulated
simulated
computer
computer
here.
here
If
if
we
we
want
want
to
to
access
access
the
the
command
command
line
line
for
for
that
that
instance,
instance
we
we
can
can
do
do
so
so
directly
directly
in
in
the
the
console
console
with
with
a
a
Cloud
cloud
Shell
shell
session.
session
And
and
inside
inside
the
the
session,
session
you
you
can
can
do
do
pretty
pretty
much
much
anything
anything
you
you
could
could
do
do
in
in
a
a
regular
regular
Linux
linux
or
or
Windows
windows
terminal.
terminal
So
so
now
now
that
that
you
you
know
know
all
all
this
this
stuff
stuff
about
about
virtual
virtual
machines,
machines
it's
it's
time
time
to
to
let
let
you
you
in
in
on
on
a
a
little
little
secret.
secret
For
for
most
most
applications,
applications
it's
it's
pretty
pretty
rare
rare
to
to
create
create
them
them
manually
manually
like
like
I
i
just
just
showed
showed
you.
you
There's
there's
just
just
better
better
ways
ways
to
to
handle
handle
your
your
compute
compute
resources,
resources
and
and
a
a
lot
lot
of
of
it
it
has
has
to
to
do
do
with
with
the
the
way
way
that
that
they
they
scale.
scale
Let's
let's
imagine
imagine
we
we
built
built
an
an
app
app
on
on
this
this
VM.
vm
It's
it's
popular,
popular
and
and
now
now
our
our
users
users
are
are
maxing
maxing
out
out
the
the
CPU
cpu
and
and
memory
memory
on
on
the
the
instance.
instance
One
one
option
option
would
would
be
be
to
to
scale
scale
it
it
vertically.
vertically
We
we
could
could
do
do
that
that
by
by
adding
adding
additional
additional
CPU
cpu
cores
cores
and
and
more
more
memory
memory
to
to
make
make
this
this
single
single
VM
vm
more
more
powerful,
powerful
but
but
we
we
can
can
only
only
do
do
that
that
to
to
a
a
certain
certain
extent.
extent
So
so
another
another
option
option
is
is
to
to
scale
scale
horizontally.
horizontally
Instead
instead
of
of
making
making
our
our
VM
vm
bigger,
bigger
we'll
we'll
just
just
create
create
more
more
of
of
them.
them
We
we
can
can
create
create
them
them
in
in
regions
regions
all
all
over
over
the
the
world
world
and
and
then
then
distribute
distribute
the
the
workload
workload
accordingly.
accordingly
When
when
you
you
distribute
distribute
VMs
vms
like
like
this,
this
you
you
also
also
need
need
to
to
worry
worry
about
about
load
load
balancing.
balancing
You
you
don't
don't
want
want
all
all
of
of
your
your
traffic
traffic
going
going
to
to
a
a
single
single
VM
vm
while
while
the
the
others
others
are
are
just
just
sitting
sitting
there
there
idle.
idle
But
but
all
all
the
the
clouds
clouds
offer
offer
load
load
balancer
balancer
services
services
to
to
help
help
you
you
manage
manage
the
the
stuff.
stuff
But
but
what
what
if
if
you
you
never
never
had
had
to
to
worry
worry
about
about
scaling
scaling
your
your
infrastructure
infrastructure
at
at
all?
all
Well,
well
there
there
are
are
actually
actually
already
already
2
2
cloud
cloud
computing
computing
paradigms
paradigms
that
that
make
make
that
that
possible
possible
today.
today
The
the
first
first
one
one
we'll
we'll
look
look
at
at
is
is
containerization.
containerization
Now,
now
a
a
container
container
provides
provides
a
a
way
way
for
for
you
you
to
to
simulate
simulate
an
an
operating
operating
system.
system
That
that
may
may
sound
sound
very
very
similar
similar
to
to
a
a
virtual
virtual
machine,
machine
but
but
there's
there's
one
one
key
key
difference.
difference
You're
you're
inside
inside
a
a
simulation
simulation
of
of
a
a
simulation
simulation
Inside
inside
another
another
giant
giant
simulation.
simulation
A
a
virtual
virtual
machine
machine
sits
sits
on
on
top
top
of
of
the
the
hardware
hardware
directly,
directly
but
but
a
a
container
container
sits
sits
on
on
top
top
of
of
an
an
underlying
underlying
operating
operating
system
system
to
to
simulate
simulate
another
another
operating
operating
system
system
or
or
application.
application
This
this
is
is
a
a
really
really
awesome
awesome
thing
thing
for
for
development
development
because
because
it
it
means
means
you
you
can
can
put
put
your
your
application
application
in
in
a
a
container
container
and
and
then
then
take
take
it
it
and
and
deploy
deploy
it
it
to
to
any
any
cloud
cloud
you
you
want.
want
Or
or
in
in
other
other
words,
words
you
you
avoid
avoid
the
the
vendor
vendor
lock
lock
in.
in
All
all
of
of
the
the
clouds
clouds
have
have
container
container
registries
registries
where
where
you
you
can
can
upload
upload
your
your
containers
containers
and
and
then
then
use
use
them
them
across
across
other
other
services.
services
Now,
now
most
most
companies
companies
using
using
this
this
strategy
strategy
have
have
multiple
multiple
containers
containers
to
to
run
run
different
different
services.
services
You
you
might
might
have
have
one
one
container
container
for
for
your
your
Node.
node
Js
js
web
web
server,
server
another
another
for
for
sending
sending
email,
email
and
and
another
another
for
for
training
training
your
your
machine
machine
learning
learning
algorithms.
algorithms
And
and
as
as
your
your
business
business
becomes
becomes
more
more
complex,
complex
you'll
you'll
need
need
a
a
way
way
to
to
orchestrate
orchestrate
all
all
of
of
these
these
microservices.
microservices
And
and
that's
that's
where
where
Kubernetes
kubernetes
comes
comes
in.
in
It
it
organizes
organizes
all
all
of
of
your
your
containers
containers
into
into
groups
groups
of
of
pods,
pods
then
then
it
it
can
can
automatically
automatically
scale
scale
those
those
pods
pods
up
up
or
or
down
down
based
based
on
on
the
the
amount
amount
of
of
traffic
traffic
or
or
utilization.
utilization
When
when
the
the
traffic
traffic
goes
goes
up,
up
Kubernetes
kubernetes
will
will
allocate
allocate
more
more
virtual
virtual
machines
machines
to
to
run
run
more
more
containers.
containers
When
when
the
the
traffic
traffic
dies
dies
off,
off
it'll
it'll
shut
shut
down
down
those
those
virtual
virtual
machines
machines
so
so
they're
they're
not
not
sitting
sitting
there
there
idle,
idle
costing
costing
you
you
money.
money
But
but
there's
there's
a
a
great
great
saying
saying
about
about
Kubernetes
kubernetes
and
and
it
it
goes
goes
something
something
like,
like
why
why
you
you
f
f
-ing
-ing
around
around
with
with
Kubernetes?
kubernetes
Because
because
in
in
2020,
2020
we
we
have
have
serverless
serverless
or
or
functions
functions
as
as
a
a
service.
service
That
that
was
was
first
first
introduced
introduced
in
in
2014
2014
with
with
AWS
aws
Lambda.
lambda
It
it
allows
allows
you
you
to
to
run
run
code
code
in
in
response
response
to
to
events,
events
like
like
a
a
regular
regular
HTTP
http
request
request
or
or
when
when
something
something
happens
happens
in
in
some
some
other
other
cloud
cloud
service
service
like
like
a
a
write
write
to
to
the
the
database.
database
The
the
code
code
you
you
deploy
deploy
to
to
one
one
of
of
these
these
functions
functions
will
will
scale
scale
automatically,
automatically
so
so
you
you
never
never
have
have
to
to
worry
worry
about
about
containers,
containers
VMs,
vms
or
or
anything
anything
like
like
that.
that
And
and
it's
it's
truly
truly
pay
pay
as
as
you
you
go,
go
because
because
you
you
only
only
pay
pay
for
for
each
each
individual
individual
function
function
and
and
vocation.
vocation
Now
now
prior
prior
to
to
2019,
2019
the
the
big
big
trade
trade
off
off
was
was
that
that
you
you
had
had
no
no
control
control
over
over
the
the
actual
actual
runtime.
runtime
So
so
if
if
you
you
needed
needed
to
to
install
install
some
some
OS
os
level
level
software,
software
you
you
wouldn't
wouldn't
be
be
able
able
to
to
do
do
that.
that
But
but
just
just
in
in
the
the
last
last
year
year
or
or
so,
so
AWS
aws
released
released
the
the
runtime
runtime
API,
api
and
and
Google
google
released
released
a
a
service
service
called
called
Cloud
cloud
Run.
run
And
and
that
that
means
means
today,
today
we
we
can
can
do
do
pretty
pretty
much
much
anything
anything
we
we
want
want
in
in
a
a
serverless
serverless
environment.
environment
There
there
are
are
still
still
some
some
other
other
trade
trade
offs,
offs
but
but
generally
generally
speaking,
speaking
it's
it's
the
the
easiest,
easiest
most
most
cost
cost
effective
effective
way
way
to
to
deploy
deploy
back
back
end
end
code
code
that
that
scales.
scales
And
and
I
i
think
think
that's
that's
pretty
pretty
much
much
everything
everything
you
you
need
need
to
to
know
know
about
about
the
the
compute
compute
in
in
Cloud
cloud
Computing.
computing
At
at
least
least
until
until
we
we
have
have
quantum
quantum
computers
computers
in
in
the
the
Cloud.
cloud
Oh,
oh
wait.
wait
I
i
almost
almost
forgot.
forgot
It's
it's
2020.
2020
We
we
have
have
those
those
things
things
already.
already
I'm
i'm
gonna
gonna
go
go
ahead
ahead
and
and
wrap
wrap
things
things
up
up
there.
there
If
if
you
you
learned
learned
something,
something
please
please
like
like
and
and
subscribe
subscribe
and
and
if
if
you
you
wanna
wanna
see
see
more
more
videos
videos
like
like
this,
this
let
let
me
me
know
know
in
in
the
the
comments.
comments
Thanks
thanks
for
for
watching
watching
and
and
I
i
will
will
talk
talk
to
to
you
you
soon.
soon
success
The benefits of cloud computing are discussed, including faster speeds, lower expenses, and increased profit margins. Cloud providers such as AWS and Azure offer virtualized environments for cloud computing, including virtualized hardware and software as a service (VPS). The use of Azure for networking and load balancing is also discussed, along with the benefits of hybrid cloud and Kubernetes for serverless environments and the ability to scale and avoid vendor lockups. The speaker emphasizes the importance of considering infrastructure and load balancing when scaling and offers virtual machines for multiple VM sizes.
Cloud Computing in the Year 2020
October 23, 2019. Google announces it has achieved the impossible goal of Quantum Supremacy. A machine more than 100,000,000 times faster than your 16 inch MacBook. Only 1 month later, AWS releases Quantum Computing as a Service in the Cloud. If you're a software developer in today's world, there's a good chance your infrastructure is on the Cloud, and very likely with a big provider like AWS, Azure, GCP, or IBM. 90% of companies are on the Cloud, 60% of workloads run on the Cloud, 30% of IT budgets are allocated to the Cloud, generating 100 of 1,000,000,000 of dollars in revenue, and those numbers are only expected to increase in the coming years. In today's video, you'll learn exactly what cloud computing is, why companies are adopting it so rapidly, and what you need to know as a software developer. If you're new here, like and subscribe, and you can follow along with the full write up on FireShip. Io. Cloud computing is a win win, both for companies that provide the services and the companies that use them. The providers make tons of money. In fact, AWS makes up more than 13% of Amazon's total sales and operates at a much higher profit margin than its retail business. But, it's also a huge win for their customers. Instead of buying and managing its own hardware, a a startup today has all the infrastructure it could possibly need right at its fingertips. The startup only pays for what it actually uses, it takes almost no effort to scale things up or down, and you don't need to hire an IT guy to wire the thing up. I mean, imagine if I tried to build a server room here in Phoenix, Arizona. My air conditioning bill alone would likely far seed whatever my AWS bill would be for the same set of resources. That's because they build these highly optimized cloud campuses next to rivers to optimize cooling with state of the art equipment that can guarantee uptimes of 99.99% and beyond. I like to think of cloud computing like a power plant. You don't care where or how that power is being generated, you just plug in your device and then pay the bill. In fact, we might as well just call that Electricity as a Service. Because as a developer, it's important to distinguish between the different categories of cloud services out there. The modern cloud can trace its roots back to 2006, when Amazon launched EC 2 and S3. EC 2 stands for Elastic Compute Cloud and it's essentially a virtual computer with its own RAM and CPU, along with an operating system you can administer and an IP address for networking. When you spin up a server in the Cloud, it's called a Virtual Machine because you haven't actually allocated any specific piece of hardware. Rather, the Cloud has virtualized a simulated environment for you that resembles a piece of hardware. There's a lot going on behind the scenes to make this possible that you don't really need to know. Like how they use hypervisors on top of bare metal to handle CPU scheduling and memory allocation. The other big service launched by AWS back in 06 was s 3, which is basically a hard drive with a file system in the cloud where you can store things like images and videos. Things like storage buckets and virtual machines are known as Infrastructure as a Service. They're the low level building blocks of the Cloud, so it's up to the developer to manage and scale them. Once infrastructure became available, it created explosive growth in a new type of software. Software as a Service. A great case study is Dropbox. In the early days, the company didn't have the money to roll out its own infrastructure. So it uploaded its users' files to S3. So so it didn't even really start out as a file storage company. It was more of a software company that helped people get their files uploaded to the Cloud. And it just goes to show you that you can build a $1,000,000,000 business by focusing primarily on the front end user experience. So infrastructure as a service abstracts away hardware. It took no more than of years to see cloud computing rise to another level, a Platform as a Service. When developing an application, developers have a lot more concerns than just hardware. You have to think about security and how to scale the workload, and how to put all the pieces together into a cohesive unit. That's what a Platform as a Service aims to do. Some famous examples include Elastic Beanstalk, Heroku, and Google App Engine. Let's imagine a developer has built an app with Ruby on Rails. In order to be used by people around the world, that app will need a database and a web server with a very specific configuration. The platform is designed to take care of the configuration part. In theory, the only thing the developer has to do is upload their code and the Cloud takes care of the provisioning of the database, provides security, and scales the traffic. So what we have here is a platform for creating software as a service, but we can still take things one step further. The Cloud can also provide SDKs that bring the cloud directly into our front end applications, and that means a developer might not need any back end code at all, giving us a back end as a service. The 2 big players in this space include Firebase from Google and Amplify from AWS. With just a few lines of JavaScript, anybody can create a real time application with user cation hooked up to a cloud database that's way more reliable than any back end you would build from scratch. Sounds awesome, but it's not without its drawbacks. The more you rely on services offered by a given Cloud, the more likely you are to experience vendor lock in. The Cloud can help you get your software off the ground, Once you become successful, like Dropbox, your opinion might start to change. In 2016, Dropbox started to move their customers' data off AWS to their own data centers and cut at least 75,000,000 from their operating expenses. In this case, it made sense to move off the Cloud to on premises, but they're actually not fully on prem. They still use the Cloud to handle about 10% of their file uploads, especially for edge cases and regions that their data centers don't cover. And that's what we call a hybrid Cloud. It generally refers to big enterprises that run a private cloud on their own data centers, but also combine it with services on the public cloud. And by public, I mean the Cloud where you can just sign up with an email address and credit card and start doing stuff. You might also hear the term multi Cloud. This refers to a single architecture sure or application that combines services from multiple public clouds, usually to prevent things like vendor lock in and optimize pricing. Now let's go ahead and jump into the cloud and take a look at some of its capabilities. We already talked a little bit about virtual machines and cloud storage buckets, but that's just the tip of the iceberg in today's world. AWS alone offers more than a 150 different services and APIs. But one thing all these services share in common is a service level agreement or SLA. This is a contract between you and the cloud provider. The provider generally guarantees a certain uptime and error rate for the service and will generally provide a financial credit or refund back the client if it fails to meet those SLA requirements. On the other side of the coin, the client generally has a quota that they must stay within when using the service. Sometimes I like to say the cloud scales infinitely, but I don't mean that to be taken literally. The quota tells you how far you can push the limits. When When getting started with a cloud provider, a great place to start is with identity and access management, the opposite of who am I? I am. It's the front gate to your structure, and you shouldn't just let anybody in. You can secure your services by attaching security policies to them. For example, you might have a storage bucket, and that policy controls who in the organization can actually access the files inside it. Now if your organization has thousands of employees, who would be very cumbersome to manage policies for every single resource. That's where roles come in. They allow you to group permissions together into a unit that can be reused throughout the cloud, and you can assign roles outside of your account if you're working with consultants or some other third party. Now in some cases, your machines might need to communicate with each other. For that, you can define resource based policies or service accounts. This would allow a virtual machine, for example, to access a database somewhere else in your cloud. Now that we know a little bit about security, let's take a look at the backbone of the cloud, compute resources. On Google Cloud, we can create a virtual machine with Compute Engine. It will give you some options when you create this machine. The region represents the actual physical location of the data center. A region closer to your end users should be faster, But some companies must follow data residency regulations, which dictate where customer data can actually be stored. Now each region is actually a campus with multiple isolated data centers. That means if you have a mission critical workload, you can put it in the same region in multiple zones. If a meteor destroys one of those data centers, you'll still have a reliable service in that region. That gives you high availability and redundancy. Azure actually has the most data centers of all the clouds, and they have 2 secret government locations that we don't even know about. The next option is the machine type, which defines the amount of memory and CPU in this virtual machine. The bigger they come, the more they cost. But the great thing about the cloud is that everything is pay as you go. You're billed down to the second and you can shut the instance off at any time. From there, you need to determine the operating system by selecting a disk image. You have a bunch of different flavors of Linux or Windows to choose from. From there, you can specify a service account if you have other services that need to access this VM. By default, you have a firewall that makes this instance inaccessible to the outside world, But we can change that by allowing HTTP traffic. Now when it comes to networking, it's important to understand that the instance has an internal IP address and an external IP address. Both of these values are ephemeral or short lived by default. That means if you rebuild the instance, it could be assigned a new IP address. However, if you have a service that relies on an IP address, you can reserve a static one. So what's the difference between an internal and an external IP? The internal version can only be used to communicate with other compute instances on the same cloud. If you need to communicate with other services on the Internet, then you'll use the external IP. When it comes to networking, you might come across these weird terms, egress and ingress. Egress defines outbound data that's being sent from your instance to the outside world. Ingresses the exact opposite, data that's being sent from the outside world into your instance. Egress is typically the one to watch out for because it can have an impact on your bill. Now remember, we're just talking about a simulated computer here. If we want to access the command line for that instance, we can do so directly in the console with a Cloud Shell session. And inside the session, you can do pretty much anything you could do in a regular Linux or Windows terminal. So now that you know all this stuff about virtual machines, it's time to let you in on a little secret. For most applications, it's pretty rare to create them manually like I just showed you. There's just better ways to handle your compute resources, and a lot of it has to do with the way that they scale. Let's imagine we built an app on this VM. It's popular, and now our users are maxing out the CPU and memory on the instance. One option would be to scale it vertically. We could do that by adding additional CPU cores and more memory to make this single VM more powerful, but we can only do that to a certain extent. So another option is to scale horizontally. Instead of making our VM bigger, we'll just create more of them. We can create them in regions all over the world and then distribute the workload accordingly. When you distribute VMs like this, you also need to worry about load balancing. You don't want all of your traffic going to a single VM while the others are just sitting there idle. But all the clouds offer load balancer services to help you manage the stuff. But what if you never had to worry about scaling your infrastructure at all? Well, there are actually already 2 cloud computing paradigms that make that possible today. The first one we'll look at is containerization. Now, a container provides a way for you to simulate an operating system. That may sound very similar to a virtual machine, but there's one key difference. You're inside a simulation of a simulation Inside another giant simulation. A virtual machine sits on top of the hardware directly, but a container sits on top of an underlying operating system to simulate another operating system or application. This is a really awesome thing for development because it means you can put your application in a container and then take it and deploy it to any cloud you want. Or in other words, you avoid the vendor lock in. All of the clouds have container registries where you can upload your containers and then use them across other services. Now, most companies using this strategy have multiple containers to run different services. You might have one container for your Node. Js web server, another for sending email, and another for training your machine learning algorithms. And as your business becomes more complex, you'll need a way to orchestrate all of these microservices. And that's where Kubernetes comes in. It organizes all of your containers into groups of pods, then it can automatically scale those pods up or down based on the amount of traffic or utilization. When the traffic goes up, Kubernetes will allocate more virtual machines to run more containers. When the traffic dies off, it'll shut down those virtual machines so they're not sitting there idle, costing you money. But there's a great saying about Kubernetes and it goes something like, why you f -ing around with Kubernetes? Because in 2020, we have serverless or functions as a service. That was first introduced in 2014 with AWS Lambda. It allows you to run code in response to events, like a regular HTTP request or when something happens in some other cloud service like a write to the database. The code you deploy to one of these functions will scale automatically, so you never have to worry about containers, VMs, or anything like that. And it's truly pay as you go, because you only pay for each individual function and vocation. Now prior to 2019, the big trade off was that you had no control over the actual runtime. So if you needed to install some OS level software, you wouldn't be able to do that. But just in the last year or so, AWS released the runtime API, and Google released a service called Cloud Run. And that means today, we can do pretty much anything we want in a serverless environment. There are still some other trade offs, but generally speaking, it's the easiest, most cost effective way to deploy back end code that scales. And I think that's pretty much everything you need to know about the compute in Cloud Computing. At least until we have quantum computers in the Cloud. Oh, wait. I almost forgot. It's 2020. We have those things already. I'm gonna go ahead and wrap things up there. If you learned something, please like and subscribe and if you wanna see more videos like this, let me know in the comments. Thanks for watching and I will talk to you soon.
The benefits of cloud computing are discussed, including faster speeds, lower expenses, and increased profit margins. Cloud providers such as AWS and Azure offer virtualized environments for cloud computing, including virtualized hardware and software as a service (VPS). The use of Azure for networking and load balancing is also discussed, along with the benefits of hybrid cloud and Kubernetes for serverless environments and the ability to scale and avoid vendor lockups. The speaker emphasizes the importance of considering infrastructure and load balancing when scaling and offers virtual machines for multiple VM sizes.