There's been a lot of discussion on the Internet about the definition of Platform-as-a-Service. Here's just a few very active Twitter discussions to illustrate the level of activity and passion over the topic:
This is just a few of the hundreds of tweets returned when I queried "Paas" and "definition". The interesting thing is that the sheer breadth of the discussion makes it very difficult to nail down exactly what it is.
Gartner Group's method of responding to the madness was to develop their own taxonomy of PaaS, which seems to have been very helpful for them in organizing their research, but, in contrast to many other things Gartner has led on defining, their PaaS taxonomy has not really caught on with the cloud community. The Gartner taxonomy breaks things out based upon the primary functionality of the platform, such as application development, business process management and event processing. However, this dichotomy actually impairs their ability to abstractly define the essential characteristics of a PaaS.
At a minimum, PaaS is a cloud service model and as such should meet the NIST essential characteristics for cloud computing, which are:
- On-demand self-service
- Broad network access
- Resource pooling
- Rapid elasticity
- Measured service
The question then becomes what are the essential characteristics that follow on from these? Some that come to mind include:
- Support binding and unbinding from composable multi-tenant services. This binding can be explicit as it is with some of the container-based PaaS or implicit through the use of APIs.
- Enforce scaling of platform services. In the case of container-based PaaS, the user has the option of having their application also participate as a service and, thus, be managed by the container's scaling capabilities.
- Ensure appropriate authorization for use of given services.
- Provide a means for monitoring and ensuring the health of the platform and its services.
Putting the above list together was an exercise in remaining non-exclusionary. It's easy to think about all the great capabilities that container-based PaaS provides and add those to the list, but container-based PaaS is not always the best option for existing workloads that were developed as silo applications stacks. It also doesn't account for the platforms that deliver platform extensibility, such as Force.com and NetSuite.
To keep me pure of heart, I leveraged my three archetypes of PaaS that I presented in my PaaS workshops at Cloud Connect. These are presented as follows:
Application Infrastructure Platform
As much as I would have liked to add characteristics, such as, manages application lifecycle, supports routing of messages into and across services, etc. that clearly would have been establishing a bias toward container-based PaaS. The above archetypes provide a wide berth against which to select the best architecture for a given cloud application and keeps the established characteristics to those items that are common across all PaaS archetypes.