Let’s try understanding each Cloud Model (IaaS, PaaS, SaaS) with Example.
For IaaS (Infrastructure as a Service) example, We have Amazon Web services
For PaaS (Platform as a Service) example, we have Windows Azure. [Update 7th June 2012: Windows Azure is Now a PaaS as well as IaaS]
For SaaS (Software as a Service) example, we have Google Apps.
Of course, there are other examples out there but I have used Azure, EC2 and Google Apps for a while now and so I was able to tear them apart and understand why they belong to a particular cloud Model.
Let’s start from SaaS with Google Apps as an Example:
So we have Google Apps (Do not confuse it with Google App Engine) which is a cloud based messaging and collaboration platform. They say that it increases productivity while simplifying IT and reducing costs.
In SaaS, The entire stack from Applications to Networking is managed by SaaS vendor:
So when I am using Google Apps (used for email functionality for this domain ParasDoshi.com) – I do not care how the software is managed, I do not care about which technology was used to develop it, I do not worry about backups, I do not worry about capacity management, I am least bothered about what servers it runs on, etc..
All I care is that I can subscribe to new user accounts if need be, my apps are up and running, my emails are sent and received properly, a particular user should not have access to XYZ calendar, And I am able to close the account if I chose to..Questions like that..
Now Let’s talk about PaaS with Windows Azure as an Example:
Windows Azure is an open and flexible cloud platform that enables you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters. You can build applications using any language, tool or framework. More: https://www.windowsazure.com/en-us/home/tour/overview/
Now as opposed to SaaS, here you develop (and own the code) of the App and select your Data Storage. The platform provides you on demand and scalable resources that are used to deploy your application.
So here are tasks that you perform for running a .net app on Windows Azure: For this I did tasks like: Develop the app, publish it to cloud on compute (web/worker) role, select the number of instances of the role, etc..
But I do not have to have worry about server capacity planning, hardware management, Power, datacenter security, hardware failure, Setting up network, setting up hardware, setting up storage, OS updates, managing runtime and middleware etc..
But it’s my Job to monitor my application performance, spin up more resources if need be etc..
Now let’s talk about IaaS with Amazon Web services an Example:
As opposed to PaaS, an IaaS provider does not manage Run-time, Middle-ware and OS for us. So get to choose the OS for your virtual machine, then you install the Run-time and middle-ware as per your requirement. And it’s your job to manage these components. E.g. OS updates, etc..
So recently I was playing with Amazon Web services and my goal was to run a .net web app on Amazon cloud. For this I did tasks like: spin up an Instance running Windows Server as it’s OS, configure IIS, develop and publish my application, etc..
But I do not have to have worry about server capacity planning, hardware management, Power, datacenter security, hardware failure, Setting up network, setting up hardware, setting up storage etc..
But it’s my Job to monitor my application performance, spin up more resources if need be, Update the OS, Manage runtime and middleware etc..