Twenty years after AWS introduced the modern cloud model it is still as relevant as ever, if not more. Almost all companies have migrated some, or all, of their IT workloads to the cloud. Some companies went full on cloud native, others chose for a more careful approach. If you work in IT, at some point in your career, you will undoubtedly come in contact with the cloud. If you don't have any cloud experience yet, this article is the perfect starting point to get you up to speed on the modern world of cloud computing.
Cloud computing is the on-demand delivery of managed computing resources over the internet by a third party. This means that it is possible to essentially "rent" huge amounts compute power and data storage, without ever having to make the large upfront expenses that are necessary for owning them. These rented resources can be provisioned instantly and globally, as the average cloud provider maintains dozens of data centers around the world.
In this article we will go over the very basics of cloud computing. We'll start with an explanation of why you should consider using the cloud. After that we'll tackle a few topics that are essential to be aware of when dealing with cloud computing. To finish we'll give you a bird's eye view of the cloud provider landscape.
Benefits of cloud computing
Before we continue talking about the cloud, it might be a good idea to make it clear why we should be using it. Every cloud provider has their own marketing talk about why you should be using their cloud. Not all of it is very important, but there are certain recurring benefits that are accurate and good to know about.
Scalability
In the cloud you can instantly provision resources when you need them. Think of it as a just-in-time system where there is no need anymore to plan your server capacity months in advance. When you don't need your resources anymore, you can also decomission them in an instant. This is also called horizontal scaling.The scalability benefit is also present on a per-resource basis, better known as vertical scaling. Almost every compute resource that you provision in the cloud can be increased or decreased in capacity. This is very useful for in certain scenario's, such as a sudden increase in application traffic or a periodic usage of compute resources.
Global reach
Because of the global reach of the internet it is important to be as close to your users as possible so you can decrease latency. The difference in waiting times that a well-placed server can make for your end-user is huge. Cloud providers know this, and each of them has built a network of data centers all around the world to serve this need.Cost savings
Cloud providers operate at mind-boggling scale. The size of their operations means that they start to utilize cost savings that are only available to them (the so called economies of scale). This makes the services and resources they provide more efficient than otherwise possible, which theoretically means that they can provide them at a cheaper price than anyone else.Besides cheap prices in general, with cloud-based computing you also only pay for what you need. You provision resources instantly when you need them, and decomission them when you're not using them anymore. This is much more efficient than having to buy and run your own hardware, which you might only use a few percent of the majority of the time.
Lastly, cloud computing turns up-front expenses into variable expenses. Instead of paying large amounts up front for resources that you want to use, you now pay in monthly installments based on what you used in those months.
Agility
A new idea can be turned into a working proof of concept very quickly with the use of the many managed resources and services available on the cloud. Not having to create and manage these things yourself makes a huge difference in the speed with which you can develop new applications and make changes to existing ones.Reliability
Having to maintain infrastructure is a huge hassle. You want to make sure that your clients are always able to reach your application or website. To do this you need to start thinking about failure rates of hardware, how many replacements to keep in stock, and much much more. In the cloud all of this is already taken care of. You won't have to worry about hardware failure, since AWS solved this for you. They even provide Service Licence Agreements (SLAs), where they promise on paper how reliable their services are. If they don't keep their promises, the SLA grants compensation to cloud customers.
Be aware that many of these advantages aren't as clear-cut as they seem. For example, while many cloud providers claim cost-savings as a benefit of using their cloud, this might only be the case from certain perspectives. No up-front expenses does mean less expenses initially, but it might be more expensive in the long run. As a second example, many cloud providers sell additional functionality on top of the basic infrastructure resources. All this added functionality increases the costs for the basic resources, such as servers and storage. This causes the awkward situation where cloud providers that only sell simple servers might be up to ten times cheaper than the three "big cloud" providers, which all claim "cost savings" as a major benefit.
Types of cloud computing
Cloud computing covers a broad area. People usually distinguish between three distinct types of cloud computing: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS). The distinction between these different types of cloud computing is based on the amount of responsibility that the cloud provider takes.
When using the cloud you are essentially using someone else hardware. You don't have physical access to this hardware, but you are allowed by the cloud provider to remotely use it. In this situation it would seem logical that the cloud provider is responsible for maintaining and protecting the hardware, while you are responsible for your usage of the hardware. Both you and the cloud provider share responsibility for operating the cloud.
This is a simplified but accurate depiction of how responsibility is divided between you and the cloud provider. The actual method of dividing responsibility is called the "Shared Responsibility Model". Each type of cloud computing has a different responsibility model, where the cloud provider might take more or less responsibility from the hands of the client.
- Infrastructure as a Service
With IaaS you buy basic infrastructure such as storage, servers and virtualization straight from the cloud provider. Everything that is built on top of this layer, such as operating systems and applications, is your responsibility. - Platform as a Service
With PaaS you are taking on a bit less responsibility compared to IaaS. You pay for a service on a cloud provider, that runs your application for you. Things such as the operating systen, middleware and the software runtime are all taken care of. You, as a PaaS client, are only responsible for the software and data that runs on the PaaS platform. A good example would be Google App Engine. - Software as a Service
The last type of cloud computing, SaaS, basically removes all responsibility from you. You are basically paying to use a managed third-party software service (such as an API) that provides functionality that you need. You are responsible for nothing except for how you use the service. A good example might be Gitlab or Auth0, both SaaS companies that provide useful software services.
Cloud deployment models
There are four types of "deployment models" for clouds. This distinction is made from the perspective of the user.
There is the private cloud, which is a cloud service that you operate on your own hardware (i.e. on-premises). This is usually something that is only done by software companies that are big enough to be able to afford the overhead of operating a cloud service. When you have dozens of software teams, each requiring their own hardware and people capable of managing that hardware, it makes sense to reorganize and create a new team solely responsible for providing and managing hardware in an easy-to-use way. For other companies it is simply a result of the type of service they operate. For example, both AWS and GCP originated from the systems that respectively Amazon and Google had to build to handle the enormous amounts of internet traffic that came their way.
Then you have the public cloud, which is usually what people mean when they talk about "the cloud". This is the third-party model where you pay for cloud computing that somebody else manages. AWS, GCP and Microsoft Azure are perfect examples of this.
Combine both public and private cloud and you get the hybrid cloud. In this deployment model you deploy systems to both the public cloud and your own cloud. Why would this be a preferrable option? Cloud providers usually encourage you to move all of your systems to their cloud, but many companies are smart enough to avoid "lock-in" and maintain a healthy divide between deploying applications on-premises and on the (private) cloud. The thing about public clouds is, they make it very easy to migrate your systems to them, but very difficult and expensive to migrate your systems off. Often cloud providers might entice potential clients by offering free data traffic into their cloud. What they usually don't mention is that it will be very expensive to move your data out.
Finally you have the multi-cloud model, where you use multiple public clouds simultaneously. This is another good way to avoid lock-in to a single cloud provider.
Cloud computing providers
As of 2023 there are three major cloud providers: Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform. When starting out in cloud computing, these are the three options you want to choose from. There are other providers of course, such as IBM Cloud or Oracle Cloud, but none of them even come close to the amount of services and features available in AWS, Azure or GCP.
We are assuming a western-centric view of the cloud computing industry. In other parts of the world you undoubtedly have cloud providers that have the same functionality and features as provided by the three major western providers. In China you have Alibaba cloud for example, and in Russia you have Yandex cloud. However, due to political reasons these cloud providers should be avoided if you live in America or Europe. Therefore we will not be covering these cloud providers.
Probably the most well known cloud provider is Amazon Web Services (AWS). Starting off in 2006, as an offshoot of the Amazon.com retail platform, it was the first cloud provider of its kind. As of 2023 they are arguably the market leader, with 34% market share, continuous customer growth over the years and over 200 services deployed. Their most famous services are AWS Lambda, a serverless function service, and AWS EC2, a service providing virtual machines.
Shortly after AWS got started Microsoft launched a competitor in 2010: Azure Cloud. Azure is a tiny bit less popular than AWS, but has been gaining ground recently. Google Cloud (GCP) was launched in 2013, a significant amount of time behind AWS and Azure. It has seen a steady 10% market share in the last few years.
If you want to go cloud native, these are the three clouds you will want to choose from. The breadth of services they provide means basically everything you might want to do has a corresponding service. Besides the basics of compute and storage the three big clouds also provide networking, identity and access management, cost management, developer tooling, managed databases, IoT services, serverless computing, and many many more.
If you do not want to go full cloud native, but only need a small virtual machine for example, there are other types of cloud providers on the market that you might want to consider. Digital Ocean and Hetzner both provide virtual private servers (VPS) at a price far lower than the three main cloud providers. Both companies have also started to release cloud services to support their VPS offering, such as managed kubernetes or managed databases. If this is all you need from a cloud provider, definitely consider them as you will have far fewer costs.
Next steps
Now that you have (hopefully) gained some basic knowledge on cloud computing, where do you go from here? What cloud provider do you choose to use? What's the next topic you should learn about?
To get an answer to your questions you can take a look at these articles: