(Also published on my blog)

The cloud has become mainstream for many businesses. Big companies like Netflix are deployed on Amazon Web Services, others do hybrid solutions and then there are companies that are even moving away of big cloud vendors create their own data centers/cloud (e.g. Dropbox).

As a developer, the chances of working with a cloud service or vendor grow by the day, some of you might have worked only with the cloud. In this article, I will elaborate on how the major cloud vendors (Google Cloud, AWS and Azure) are build and how you can easily understand their numerous products which all seem so similar. The goal is that after reading this article, you can easily understand any cloud product of any provider on what it does and how it distinguishes itself from other products.

The Core Resource Types

Cloud vendors provide you with different types of resources that help you build any type of solutions:

Compute : Your computing power to run code, software, jobs and such. (e.g. EC2, Lambda, Cloud Functions, and Azure Virtual Machines)

: Your computing power to run code, software, jobs and such. (e.g. EC2, Lambda, Cloud Functions, and Azure Virtual Machines) Storage : Methods to data, this can be to store simple files, the filesystem for your virtual machine, or the storage space for your database.

(eg. AWS S3, AWS EBS, and Azure Storage Disk)

: Methods to data, this can be to store simple files, the filesystem for your virtual machine, or the storage space for your database. (eg. AWS S3, AWS EBS, and Azure Storage Disk) Networking: Resources for organizing your network of storage and compute resources, how do they communicate? Can they communicate? How can we access these resources?

(e.g. VPC, Virtual Network, Fixed IP addresses, and DNS)

The majority of cloud services and products usually delivery some service based one of the above resource types or a combination. When you are reading about a product/service, ask yourself:

Which resource type(s) does the product/service use?

E.g. A database service like AWS RDS is a combination of compute and storage resources. A service like AWS S3 is a storage resource.

One could argue that each resource is always combined with networking resource(s) for access, which might be true, but this is something the cloud vendor takes care of under the hood.