- Infrastructure as a Service (IaaS): The provider gives you on-demand access to compute infrastructure, with console access (RDP or SSH) to a server that you completely own. Application administrators can request as many servers as necessary to meet the scalability needs of their application. IaaS is typified by the Amazon Web Services cloud.
- Platform as a Service (PaaS): In this case the provider gives you on-demand access to infrastructure, but does not give access to the underlying console. Programmers can request as much compute capacity as is required to run their application. The underlying technology will distribute and run the application on as many servers as is required. PaaS is typified by Microsoft Azure and Google AppEngine.
IaaS is your familiar application deployment environment, where a program needs to be installed and configured to run on the box, necessitating a mix of programming and server administration skills to succeed. Conversely, the PaaS concept tries to abstract away the underlying hardware, such that programmers can simply load their application and see it run auto-magically in the cloud.
IaaS and PaaS are different operating models, and selection between them is frequently a matter of skills, technical feasibility, development language preference and simple belief in the model's ability to succeed.
The separation between IaaS and PaaS is somewhat arbitrary. It just so happens that Amazon got into the IaaS business as a way to re-sell hardware capacity that sits idle for much of the year (most of the hardware exists to absorb the load of the Christmas shopping period). Google got into the PaaS business as a sensible extension of their skills in building highly scalable web applications on commodity hardware and opensource software. Microsoft... Well, Microsoft got into PaaS as a way to ensure that their technology (.NET) remains competitive as people move to the cloud.
But cloud computing is now maturing. And as it matures, people request more flexibility, somewhat blurring the lines between IaaS, PaaS and general application delivery services. Take a look at Amazon's recent offerings (last 2 years): CDN, SimpleDB, DNS and Email Services. These are not just solutions to deploy more server hardware, but rather they are ancillary services that help applications work more effectively in the cloud. In fact, the most recent announcement from Amazon is Elastic Beanstalk, a solution built specifically to help developers to migrate their Java applications to the cloud -- sounds like PaaS, no?
With the release of Amazon BeanStalk you can see that Amazon is truly going to mix IaaS and PaaS, and go head-to-head in competition with Google and Microsoft. And to remain viable the two big PaaS vendors will need to extend some of their services into Infrastructure offerings. After all, application developers do frequently need OS level controls to deliver their solutions (for example, our product LabSlice needs to use the Windows Task Scheduler for daily reports and cleanup tasks). In short, by 2012 you will see that cloud computing becomes a mishmash of hardware and application services, and that the unnatural boundaries of IaaS and PaaS will disappear.
My bet for 2012
- Amazon to go head-to-head with Microsoft and Google. New solutions from Amazon will be aimed at developers who don't want or need access to Amazon's underlying infrastructure, and just want their application to work in the cloud.
- Microsoft and Google to give more access to the underlying operating system. Certain switches and features will start to appear that will give developers access to the underlying OS.
In short, by 2012 the concept of IaaS and PaaS will disappear, and IT professionals will discuss the more generic feature offerings of each cloud vendor.