While attending Cloudy Mondays at the Microsoft NERD Center last week, I realized Platform as a Service (PaaS) is an overloaded term. I posed the question: where does IaaS stop and PaaS start? For example, was a database service PaaS? Was an object store PaaS? A distributed memory cache? The opinions were mixed, with most attendees concluding that services such as Amazon S3 and Dynamo were PaaS, but with much less audience consensus on services based on existing technologies, such as Amazon RDS.
I typically leave the taxonomy to industry analysts, but feel there is confusion in the cloudosphere over PaaS. When we first started using the term in 2007, it was to refer to emerging horizontal development platforms such as Force.com, EngineYard and Heroku. PaaS offered a one stop shopping ecosystem for developers to develop, deploy and manage their applications, with features such as built-in multi-tenancy, browser-based development tools, seamless deployment to hosted runtimes, integrated billing, and management & monitoring tools.
The confusion started a few years later when we overloaded the term by referring to cloud services such as Amazon S3 as PaaS. These emerging services were clearly different from the compute, storage and network services of IaaS, offering new vertical building blocks for the development and deployment of software. Since the existing taxonomy lacked a layer between IaaS and PaaS, we instinctively reused the term PaaS.
Unfortunately Amazon S3 is no more like Force.com than a rock is to a bird. By calling these both PaaS, we dilute the meaning of each, and make it hard to engage in meaningful discussions. For example, is the future of the cloud in vertical services provided by multiple vendors, or in horizontal platforms with an integrated ecosystem? With the current definition, this question could be re-phrased: is the future in PaaS or PaaS?
So I propose we return to our pre-cloud terminology to eliminate the confusion. Before the cloud we relied on a variety of standalone software for the delivery of our SaaS applications (e.g. databases, distributed memory caches, application servers). But we called these applications not platforms. So I propose we introduce a new term to our cloud taxonomy consistent with our pre-cloud world: Application as a Service (AaaS).
AaaS refers to the application-level services that reside on top of IaaS compute, storage and network infrastructure. This includes services based on both existing and new technologies - e.g. Amazon RDS, Rackspace CloudFiles, and Microsoft Table Storage. Some of the common standard categories available today include object store, NoSQL database, memory cache, and queue service.
So let’s eliminate the confusion by separating our cloud terminology for vertical services and horizontal platforms. So don’t be an AaaS, and stop overloading the term PaaS. ;)
Related Posts: Cloud Escape Velocity: PaaS on IaaS