Nowadays Cloud is a very popular word. Everybody is speaking about THE CLOUD. However, what does this means. Is it the clouds above our heads on a rainy day or something else.
Most people would say the Cloud is most likely one of those AWS, Azure, GCP or DigitalOcean (There also many others). However, we need to look more into details what are those companies actually doing that they are called "Cloud" and your OnPrem is not. Looking into details we can observe that if we compare them to other companies offering you IT infrastructure, the following differences are unique:
Service concept > Everything inside the cloud platforms is a different service – Database, Virtual Machine, Authentication & Authorization, Cluster and many other services. This is a logical separation for each type of offering you are using and usually you can have multiple separated instances of this services called resource.
Shared Responsibility Model > This is a model explaining who is responsible for what. For example if you are using Virtual Machines, the cloud provider would be accountable only for the physical aspect of this infrastructure and you will need to do your own patch management. On the opposite side if you are using service which provides you with 1 click deploy only your code, then the cloud provider usually maintains the underlaying OS and patching.
Types of Services >
IaaS (Infrastructure as a Service) – This would be typically a Virtual Machine where you receive only an infrastructure components of some sort and you decide how you are going to utilize it.
PaaS (Platform as a Service) – Platforms are something similar to IaaS, but there somebody needs to maintain and make it easy to use the underlaying infrastructure. This is great, but it comes with limitations. Such service can be AWS Lambda, you do not maintain any infrastructure and care only about your code.
SaaS (Software as a Service) – A very different type of offering that is an already bundled and ready to use software. The perfect example is Azure DevOps as a product which can be used as an alternative to many other products or AWS Workspaces(This also can be considered a PaaS).
Please note that many services cannot really be strongly put into only 1 of those devisions. You should imagine it more like a bar chart where you do not have only 3 points where you can classify a service, but many.
General differences (There are many more):
You can pay not only per month, but also per hours or even per minute depending on the service.
They largely focus on Virtual Services and not so much on physical ones.
You can one click deploy, but that is also present in many other providers. The difference here is that you can deploy in almost the entire world.
Deployed infrastructure is in most cases fault tolerant in the background as the Cloud providers is migrating your services to another DataCenter automatically. (Not for all services)
Many, many services. Usually logging into a cloud provider panel you will see not only Virtual Machines and Physical servers, but also Database, several Storage, network and other types of services.
Back to the above point. Yeah, but those services can easily be implemented by anybody. True, but the difference here is who is doing the management. You can just consume it, without taking care of the underlying stuff.
And yet another point for services. There are so called "managed services" companies, but they usually have great deal of manual work in the back. In the Cloud automation is the king. All of the services you click to deploy are actually automated. Also you cannot really scale through the entire world in seconds and there are a lot of limits as well.
Developer’s eco system is great. What I mean here is that you will have also access to create and manage infrastructure resources via APIs, CLIs and SDKs which can be a very useful thing which deserves it’s own article.
Yes, there are many things which can be said about the cloud and what is it. However, trying to define all cloud providers under one “hat” is hard and maybe almost impossible. There are some core principles you should know and start from there. Even stating that you know a specific cloud provider is completely wrong as the rate which AWS & Azure are adding new services will most likely exceed the rate you are able to learn them. AWS is even offering a satellite service with which the chances to work with are very small, but generally you should learn the basic most used services like Virtual Machine, Database, Storage, Networking and popular PaaS solutions.