Over the past few years the software development industry has been struggling to define Cloud Computing in a way that a mere-mortal could understand. I like the explanation of Cloud Computing from IBM:
Cloud computing enhances business agility through consumable services for infrastructures, platforms, and applications. It can be loosely defined as using scalable computing resources provided as a service from outside a company’s environment on a pay-per-use basis.
While a concise and decent explanation, it does use some jargony stuff that can scare away mere mortals. As everything becomes “consumable services”—as the explanation describes (or what we know as the “as-a-Service” model)—how do we understand the difference of the “aaS”es? What actually is Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS), and why should you care? How are they different? What can PaaS do for you that IaaS can’t?
It’s clear that the industry is intent in furthering cloud computing, and for good reason. Cloud computing (all of these aaS offerings) enables companies of all sizes to pay for only what they use, and to access their resources from anywhere without having to worry about behind-the-scenes maintenance. So what are the differences?
Vendors of IaaS are in the business of providing the core infrastructure for applications to run on. This includes the required hardware and bandwidth. As a customer of an IaaS offering, configuration of the infrastructure, including such things as installing operating systems, and other required software, is left to you. You pay the vendor for the hardware and bandwidth management, and manage the development, deployment and management of your applications the same way you always have. IaaS gives you a way to outsource your core IT department – no more load balancing to worry about, no more servers to maintain (other than software updates).
PaaS providers enable you to build, deploy and manage your applications all from their Internet-based solution. According to Wikipedia…
Platform as a Service (PaaS) is the delivery of a computing platform and solution stack as a service. PaaS offerings facilitate deployment of applications without the cost and complexity of buying and managing the underlying hardware and software and provisioning hosting capabilities, providing all of the facilities required to support the complete life cycle of building and delivering web applications and services entirely available from the Internet.
While this definition is good at describing what could be a Platform-as-a-Service offering, it fails to be specific in terms of what specifically makes up a PaaS offering – the min-bar. It seems the only thing that is consistent about the definition of PaaS as you read the marketing information from one vendor to the next is the first and last part of the Wikipedia definition:
Platform as a Service (PaaS) is the delivery of a computing platform and solution stack as a service…entirely available from the Internet
The Platform-as-a-Service Components
While there are a lot of different definitions of PaaS (depending on who’s marketing you’re reading), this is one of the consistent truths – PaaS is the combination of a computing platform and a core set of tools and infrastructure exposed as services entirely available from the Internet. The minimum (min-bar) appears to be that there must be at least a computing platform, deployment infrastructure, development tools, application monitoring and management, and a pay-as-you-go billing model to be considered truly a PaaS offering.
PaaS offerings are generally hosted web application development platforms that rely on an underlying computing platform that doesn’t require anything on-premise or installed locally. Windows Azure, Amazon EC2, and Force.com are examples of computing platforms that could be part of a PaaS solution. While some feel that to be a true PaaS offering, all of the components must be provided by a single vendor, I think its fair to say that with white labeling you may never know. It is feasible to have a PaaS offering from a vendor leverage the computing platform from another vendor. I could provide a PaaS offering that uses Windows Azure or Amazon EC2 as its computing platform, even if as my customer you weren’t aware of it because I adequately abstracted it). This is not unlike how Apple’s iCloud cloud computing platform manages links to uploaded content in Windows Azure and Amazon Web Services.
A true pass offering provides the infrastructure and tools to deploy an application to the computing platform, and should simplify the deployment process by handling as much of the “heavy lifting” as possible.
Depending on the provider, a PaaS offering could provide simple, browser-based development tools that enable you to do everything from modify a template-based solution to edit source code. Some PaaS offerings will include design and testing tools in addition to the basic development tools, but it appears there is no requirement to have these tools to be considered a PaaS solution.
Application Monitoring and Management
Once you’ve developed and deployed your web- or cloud-based application you need to be able to monitor it and manage it in the wild. A PaaS offering includes a monitoring solution (e.g. a dashboard) and tools to manage the application (add users, allocate resources, etc.). These should be self-service tools enabling the PaaS user to manage their own applications.
One of the advantages of PaaS is the significant reduction in capital expenditures (e.g. not having to buy servers, data centers), but also the ability to manage costs effectively. Using a PaaS offering enables you to only commit financial resources as they are needed (in other words, pay monthly and scale up when and if needed).
SaaS is the great vision of how software will be delivered in the future, and has some historical ancestors. In the 1990’s there was a class of software businesses called Application Service Providers (ASPs). These were businesses with an expertise in hosting, managing and providing software – typically from other vendors – for businesses that didn’t want to or couldn’t do it themselves. The key difference between ASPs and SaaS is that SaaS vendors are not typically middlemen like ASPs. SaaS vendors are typically providing the software they produce in the form of a service, rather than shipping a DVD and having the customer install, host and manage the software themselves. Office 365 is a fine example of SaaS. For years Microsoft has created and shipped versions of Office. With each new version you would upgrade from the previous version by uninstalling the old software from your computer, and installing the new software in its place (or just buying a new computer and starting from scratch). Office 365 provides an Internet-based alternative to the traditionally client-based software, including hosted versions of Exchange and SharePoint, as well as browser-based version of Word, Excel, PowerPoint and OneNote.
While a computing platform, deployment infrastructure, development tools, monitoring and management tools and pay-as-you-go billing are required to be a true PaaS offering, the capabilities for software design (UX, prototyping, etc.), testing (functional, regression, etc.) and team collaboration are not required and are likely to become differentiators for vendors who can provide a more complete solution.
Many of the PaaS vendors, including Force.com (SalesForce) and emerging players like LongJump, are claiming to have complete lifecycle offerings, including project management tools, team collaboration capabilities and at least some design and testing capabilities in addition to the min-bar for PaaS. This is likely the battlefield for PaaS in the near future. Just as we saw the battle for Application Lifecycle Management (ALM) playing out between a variety of players, including Microsoft, IBM Rational, HP and niche players like Serena, we’re likely to see a battle for PaaS that has these “differentiator” capabilities at the center of the war.
Its not clear who the players are yet, although we can all make some pretty good guesses. The real question will be, who can provide the best set of capabilities to The Right User™. As this war looms on the horizon, determining what the war is over (who is The Right User™) will be equally, or perhaps more important, than how big the guns are.