This is the most basic model which is essentially your virtual machines in a cloud data center. You set up, configure, and manage VMs that run in the data center infrastructure, and you put whatever you want on them. A hypervisor such as Hyper-V runs the virtual machines as guests. Pools of hypervisors installed at a data center can support large numbers of virtual machines and the ability to scale services up and down according to customers’ varying requirements. Windows Azure, Hortonworks Data Platform, Amazon Elastic Compute Cloud (EC2), Rackspace, and Google Compute Engine are the most popular examples.
Traits of IaaS:
- You Build/Upload Virtual Machines to a DC on the Internet – e.g. Windows Azure
- You PAY for time/resources used and the software in your VM’s
- Your virtual machines RUN on hardware shared with other organizations
- You manage ALL aspects of the software stack inside your virtual machines
- You perform OS updates and manage runtime and middleware
- VM’s can be moved to/from the Cloud and your own data center
- App development is unchanged
With PaaS, a provider delivers a computing platform, typically including operating system, programming language execution environment, database, and web server. You don’t have to worry about OS updates or managing runtime and middleware. The provider manages the hardware and software infrastructure and you just use the service. It is usually a layer on top of IaaS. Examples are Microsoft Azure SQL Database, HDInsight, AWS Elastic Beanstalk, Windows Azure BLOB Storage, and Google App Engine.
Using a Windows Azure BLOB Storage example:
- You SUBSCRIBE to the service and create a unique name
- You GIVE Blobs(Files) to the Storage Service – simple API or REST
- The service provides resilience and scale, you don’t have to.
- You ask for them back – you don’t care or know where they really are (which VM’s)
- The service and the fabric controller make sure your data is stored so there is no single point of failure
- You pay for the amount of storage you use – the service manages everything
- The service can also geo-replicate, provide disaster recovery
With SaaS, users are provided access to application software and databases. Cloud providers manage the infrastructure and platforms that run the applications. SaaS is sometimes referred to as “on-demand software”. Google Apps (which includes GMail), Salesforce, and Microsoft Office 365 are good examples.
Traits of SaaS:
- Complete apps you use
- Subscribe, on-board, normally pay for the # of users who use the app
- No access to underlying platform
- Software may support some customizations
- Shared hardware, platform and finished software across multiple customers
- A layer on top of PaaS
To summarize, when you have a data center on site, you manage everything. When it’s infrastructure as a service, part of that stack is outsourced to a vendor. With platform as a service, you’re responsible for the application and data – everything else is outsourced to the vendor. With software as a service, you outsource everything. Using a “pizza-as-a-service” analogy:
- On Premise = you buy everything and make the pizza at home
- IaaS = take and bake (pick up the pizza, you cook it at home)
- PaaS = pizza delivered
- SaaS = dining in the restaurant