Cloud computing is the talk of the town nowadays and it's not surprising that it has spread across all tiers of businesses all the way from small startups to big enterprise organizations. When we look at cloud computing, we actually look at an ocean of opportunities. In fact, it wouldn't be wrong if I say it is still growing and developing by leaps and bounds.
I had my share of experience getting acquainted with cloud computing during my initial days, especially when it came to deciding between the terminologies IaaS vs PaaS vs SaaS, what they are, what they are used for, and more importantly when to use over another.
The above paragraph sounds hectic, right? Don’t worry! We will take a look at each of the terminology and their application in real life. Let’s begin.
SaaS: Software as a Service
SaaS is probably the most used service worldwide. It is a kind of service where a user can connect to and use an application over the internet without needing to download or install it locally. SaaS service providers are third-party vendors that can serve their users directly and if needed, charge them accordingly.
Consider an example of a company that develops an application to manage accounts (an account management application) to be used by their customers. Now, it can be done by using a legacy method, i.e. - create an executable file, start selling the exe, and the user pays for the license to use the application.
Well and good, but there is a shortcoming to the process. The user has to install the application locally to use it and also, the users have to make sure they have all the required resources, such as a monitor, CPU, HDD or SSD, etc. specified by the vendor to use the application. Now, all these resources come at a cost. Also, consider another scenario where the company that is supposed to use this application plans to use it in three different departments (ex-IT, Finance, Admin, etc.) inside the organization. Well, just multiply the number of resources to be used.
Now, how to overcome this situation? The answer is SaaS.
What if we create a web app of the same application and host it in the cloud? This way, whoever wants to use the application, just needs a browser, internet connection, and authorization to use the application provided by the vendor (same as licenses in exe file). There is no need to take care of additional resources to run the application ultimately saving time and money. Bingo!! you have an application as SaaS.
Examples of SaaS
- Google Apps
- Dropbox
- Salesforce
- Cisco WebEx
- Concur
- GoToMeeting
Benefits of SaaS
- Managed from a central location
- Hosted on a remote server
- Accessible over the internet
- Users not responsible for hardware or software updates
PaaS: Platform as a Service
PaaS can be considered as an environment in the cloud that a user can use to develop or deploy their respective application which could range from simple applications to huge enterprise applications with ease by using the resources available in the cloud with pay-as-you-go.
If the above paragraph does not make much sense, then don’t worry. I will elaborate on it further. As in the above section, we discussed SaaS where you deploy the whole application in the cloud to be used by the user; in the same way, PaaS lets the developers or teams develop the application in the cloud by using available resources in the cloud, like editor to write code, storage to store files and images etc. And, after developing the application, it can be made available for use, just like before.
Thus, we can say that PaaS provides a platform for the developers, which gives them complete freedom to create an application while still not having to worry about the operating systems, storage, HDD, software updates, or the complete developing infrastructure in total.
Examples of PaaS
- AWS Elastic Beanstalk
- Windows Azure
- Heroku
- Force.com
- Google App Engine
- Apache Stratos
- OpenShift
Benefits
- Cost-effective as no additional resources are required (at least in 99% of cases)
- Highly scalable (can increase RAM size, switch to SSD from HDD, etc.)
- Highly available (because it's been hosted in the cloud)
- Less time-consuming and fast.
- Only pay for the resources used.
IaaS: Infrastructure as a service
IaaS can be considered as an easy and instant way to provision and manage IT infrastructure online. IaaS lets you provision the resources and scale them up and down instantly as per the need. It also follows the same Pay-as-you-go policy, i.e., pay for what you use. All in all, it provides an infrastructure online where you can develop, deploy, or manage applications.
Let's consider the previous accounts management application. Suppose the company decided not to host the application in the cloud like Azure or AWS for some security reasons and went ahead to host it in their on-premise server. So, the IT infra team was called up for provisioning (providing a readymade server) to the dev team to create, test, and host the application. Now, the IT team initially provided the resources, such as the dev server, test server, etc. for the team to start working with but after the work was done, at the time of application deployment in the production server, there came a problem of unavailability of server as asked by the dev team. So, it took the IT infra team almost a month to provision the server to the dev team. After getting the server, the dev team realized that they needed 24 GB of RAM instead of the 16 GB that was requested earlier. They again raised a ticket for additional RAM which again took the IT infra team almost 3 weeks to provide.
Now, what is the moral of the story? Common, think, think!
It’s the improper use of human resources in the team. The dev team is just sitting idle all the time during the provisioning of resources by the IT infra team. Also, the IT infra team is also responsible for all the maintenance work for the servers allocated. Now, is there a way out of this problem? Of course, there is - IaaS.
What IaaS does is it provides a platform same as on-premise to work on, but online.
Let's take the above use case and provide a solution to those miserable guys.
Dev team wanted resources to start working?
A: The IT infra admin would create a VM (virtual machine) with the required resources, such as an editor to write code (Visual Studio Enterprise, Visual Studio Code, Netbeans, etc.), DB(SQL Server, MySQL, etc.), IIS (internet information server to deploy the app) in minutes.
Does the testing team require a test environment to test the app?
A: IT infra admin creates another VM with the required resources and specifications in minutes.
Dev team need to update or add additional RAM or memory etc?
A: IT infra admin will scale the VM up or down accordingly in minutes.
Dev team need a production server to host the final application?
A: The IT infra team creates another VM with production specs mentioned by the dev team instantly.
So, we just saw that IaaS helped the admin team to do their job efficiently and instantly without wasting the dev team's time.
Thus all in all Iaas provided hassle-free/instant infrastructure for the development/deployment online with the pay-as-you-go model. As compared to PaaS and SaaS, the user has to manage the resources.
Examples of IaaS
Virtual Machines (VMs)
Benefits
- It’s the most flexible cloud computing model
- Easily allows for automated deployment of storage, networking, servers, and processing power
- Hardware can be purchased based on consumption
- Gives clients complete control of their infrastructure
- Resources can be purchased as needed
- Is highly scalable
Overview of usage
The below image shows the basic difference between Iaas vs PaaS vs SaaS in pictorial representation.