For the last few weeks, an interesting and timely debate has been brewing among the technology press and various technology vendors and users about whether or not platform as a service, or PaaS, will survive as an independent cloud computing service category.
NetworkWorld’s Brandon Butler asked if “the PaaS market is dying as we know it”. Long-time cloud bloggers David Linthicum and Reuven Cohen concurred with Butler’s theory that PaaS was being absorbed into the IaaS and SaaS categories. This was met with counterarguments from EMC’s JP Morgenthal and Red Hat’s Krishnan Subramanian that PaaS is indeed a key service catagory.
I think this discussion is worth commenting on largely because it highlights the distinction between what services exist in the cloud and how those services are acquired. This is a common confusion, in part because the distinction is occasionally detrimental to various vendors’ attempts to differentiate themselves, and in part because the cloud services market is really quite immature when it comes to platform services for developers. (I’m not talking about the platforms themselves, but the market of those providing those platforms as services.)
First, let’s review what is meant by “platform as a service.” The years-old definition provided by the U.S. National Institute of Standards and Technology is:
The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
Thus, to be considered a platform service, the service has to hide much of the vagrancies of coding for operations. The service provides the libraries, services and tools needed to build an application that (a) runs, and (b) deploys scales, and recovers with a minimum of attention on the part of the developer.
Blurring the lines
Two things have happened since that definition was first put forth. The first is that IaaS providers, especially Amazon Web Services and Microsoft, have delivered services that blur the lines between platform and infrastructure. In Amazon’s case, it evolved a set of a services from the infrastructure up to include middleware services (RDS and Elastic Beanstalk, for instance), as well as deployment and ongoing operations services such as Autoscaling and Opsworks.
Microsoft, on the other hand, worked from the platform functionality down toward the infrastructure, adding “virtual machines” to its existing platform service portfolio. Why would it do this? Because as good as the Azure platform services may be at supporting generalized application development, developers often found they wanted to deploy their own software stacks that bypassed the platform.
This is the crux of the problem with claiming that PaaS, IaaS or SaaS will be the “winning mode.” From a developer’s perspective, it just doesn’t matter. Development is a collection of activities, some of which can benefit from automation of highly routine tasks, and others require extreme flexibility in how software is built, deployed and operated. You can’t pick one model over the other except in the most extreme edge cases.
SaaP — Services as a Platform
This is why I prefer the term “Services as a Platform,” once posited by Cisco’s Lew Tucker (but, according to Lew, having originated from a source long forgotten) as the “winning cloud model.”
By focusing on the fact that cloud is about the consumption (and delivery) of services to be consumed by those that need them, and that development in the cloud is largely centered on how those services are composed into solutions to a wide range of problems, we cover the entire blurry distinction between IaaS, PaaS and SaaS. We also create a term that’s basically synonymous with cloud computing itself — from a developers perspective — and is thus just as useless in describing anything concrete.
Let’s not get hung up on how “important” PaaS is relative to IaaS or SaaS. Some platform tools, such as Cloud Foundry or OpenShift, will be important for creating common interfaces for application development. Some platform services, such as Salesforce.com’s Heroku or Microsoft’s Azure, will be successful as parts of larger cloud service portfolios. But developers won’t bond to one and only one model for long. The composability of the overall cloud market will drive them to explore other models.
And this, ultimately, is a great thing for the future of software innovation.
What do you think? Is it important to choose a winning model, and is PaaS that model? Is “Services as a Platform” a better way to think about software development in the cloud? Let me know in the comments below, or on Twitter, where I am @jamesurquhart.