Explain it to me like I am a 5-year old: Cloud Delivery Models: IaaS, PaaS, and SaaS (with use cases)
I always wondered what the cloud is and wanted to start exploring the cloud. When people around me used to say words like PaaS, IaaS, Microservices, Docker, I used to be so overwhelmed that I used to just nod my head so that I don’t look dumb. But soon I realized that it's not just me, but also people who talk about IaaS and all these words, have little idea about what it actually means in real-world so I thought to not only educate myself to understand the meaning but also to make sure I know when to use what given a real-world scenario.
This blog is dedicated to all who want to learn cloud concepts but in a simple and easy manner.
The best way to learn anything is to visualize it so here is something that I found, which sums up the whole topic:
Let’s say your end goal is to go from point A to point B:
You can consider IaaS as buying a car, While buying a car, you look for all the specs, the color of the car, interior design and also do a lot of research before actually buying it. Once you decide on the car, you pay for it and then you can drive the car. Here the car is the ‘infrastructure’, you driving it is ‘using it’ and you pay for it is ‘service’. Another example is like going on AWS, renting an EC2 instance and spinning up Windows machine.
On the same grounds, PaaS is analogous to renting a car where you do not have to do any research on specific specs but there are few already bought cars that come with in-built specs. You just have to pay for it and then you can drive. Here the rental car is the ‘Platform’ and rest everything stays the same as the previous one. Another example is like using AWS BeanStalk where you tell what you want, and it automatically runs an instance and downloads all the software you want.
SaaS, on the other hand, can be considered as a taxi where you are not even driving the car but using someone else’s service to go from point A to point B. Here using someone else’s service is ‘Software’ and rest everything stays the same. Another example would be to use Microsoft 365 services online.
Going into specifics and real-world use cases:
- Storage, computer and other infra services you leverage from some local or remote resource
- Mostly used to replace what you have in the data centers like storage and compute services
- A third-party provider hosts hardware, software, server, storage and other infra components on behalf of the user
- Application and data hosting for existing enterprise workloads
- Pros: Elastic Scaling, Expenses shifts from capital expenses to operational expenses, Avoid buying hardware and software, Supports public, private and hybrid deployment models
- Eg. AWS, Azure, GCP
- For real-world use cases, visit: https://blog.equinix.com/blog/2015/12/17/top-cloud-iaas-use-cases/
- Application development, testing and deployment platform you leverage on demand
- Reduce application development and deployment cost
- It’s a cloud version of app dev, deployment and hosting of apps
- Provides complete development, testing and deployment platforms
- Reduces the complexity of development and testing by placing the developer in a limited environment.
- Supported by most IaaS cloud providers, including AWS, Google and Microsoft
- Integration of PaaS and IaaS is the trend going forward
- Eg. Google App Engine, Microsoft Azure and AWS BeanStalk
Why can’t we use PaaS instead of IaaS?
If you have existing legacy applications already running on your private servers, moving them on PaaS will be difficult because let’s say you want to use AWS as PaaS then as you can see from the above diagram, you will be using the database provided by AWS. This means you will need to change your code to use AWS SDK which can be a tough task.
In simple terms, it is easy to deploy an application when written in one specific language, for example, Java application can be deployed as WAR and Fabric can be used for python application. But as we all know, each language is best in doing its own thing so if you want to develop an application that uses multiple languages(polyglot), how would you deploy it? With multiple languages involved, it becomes really difficult to deploy it hence Heroku started working on Polyglot PaaS where you can just develop the application using whichever language you want and it will deploy it for you.For more information visit: https://blog.heroku.com/polyglot_platform
- Pros: Faster time to Market, Lower Cost, More Responsive
- Cons: Lack of control, Vendor lock-in, Performance @ scale
- For real-world use cases, visit: https://cloudramblings.me/2014/08/08/9-use-cases-for-paas-why-and-how/
- A finished application that you can rent and customize
- Mostly used to replace enterprise application like CRM
- A third-party provider hosts app software on behalf of end-user
- Removes the need for organizations to install and run hardware and software within their own data centers, and eliminates the waves of hardware and software acquisitions as well as provisioning, maintenance and software licensing
- No need to spend a large amount of cash on software and hardware
- Unlimited scalability for growing enterprises
- Continuous automatic updates
- Supports both desktop and mobile computing
- Eg. Salesforce, Microsoft 365, Google Apps
A very good example of the difference between IaaS, PaaS, and SaaS:
That’s all for today! I will be writing future blogs where I break down Microservices, Docker, and Containers and make it explainable in very simpler terms.
I am just a beginner in this cloud journey so if there is anything that I missed out and explained in a different way, please do let me know. Also if there are any other cloud concepts that you want me to write on, let me know in the comment section below.
I can be reached via Linkedin.
Credits: LinkedIn Learning, IBM Cloud