The most famous laptop sticker in history offers a humorously simplistic definition of cloud computing:
There is no cloud. It’s just somebody else’s computer.
The “cloud” is nothing more than a collection of computers sitting in data centers around the world. You can rent these computers by the hour. Some are pre-configured to run higher-level services such as database management systems, DNS servers, authentication, load balancers, machine learning algorithms. These higher-level services tend to cost a little bit more.
However, while the cloud is nothing more than somebody else’s computer, “cloud computing” has changed how developers and system designers approach web development. Initially, the benefit is having “somebody else” care for physical handling and maintenance of the equipment (purchasing, shipping, installation, power, cooling, physical security, network connections). However, once you no longer own the equipment, you can rent precisely what you need, when you need it, for as long as you need it, and as much of it as you need.
The flexibility is extraordinary. AWS Lambda allows you to rent a computer for 100 milliseconds for $0.0000002083. [1]
The flexibility also brings about a mindset shift from thinking about computers as things that need to be individually managed, to the idea of a web application as a growing and shrinking pool of computing resources. Some servers will crash or be overloaded, but the system should adapt automatically and add or replace servers as needed.
Service providers
The three most significant and most well-known cloud providers are US-based organizations but with data centers around the world:
Other reputable cloud providers include the following:
Cloud providers targeting regional customers include:
In Australian universities (if you’re doing a research project for a research degree), there is also a research cloud provider:
Service offerings
The easiest way to get started is to rent a Linux or Windows server:
Once provisioned, you can connect to the server using SSH (for Linux Servers) or Remote Desktop (RDP) (for Windows Servers), and install/deploy software as you would with your equipment.
Moving beyond renting raw infrastructure, the cloud service providers provide frameworks and sophisticated services, including programming language runtimes (AWS Elastic Beanstalk, Google App Engine, Azure App Service) and databases (including SQL databases, document-oriented databases and simple distributed tables that allow key-based lookup).
In the remainder of this chapter, I will discuss two emerging trends in cloud computing: serverless computing and containerization.