Every platform will evolve into a Platform-as-a-Service (and the resulting subcategory explosion)
Platform-as-a-Service (PaaS)… I guess you heard this term quite a bit last months. I wrote about PaaS earlier when arguing that Model-Driven Engineering is essential for the success of a PaaS and when I announced the new major release of our platform.
If you look at the industry perception of PaaS the main definition is something like: it is a public cloud platform where you put code in and get a service out. This is such a broad perception that it is no surprise that new subcategories are emerging every day. I will contribute to this movement by introducing a new one too…
PaaS is a fuzzy term, some subcategories
Let’s first look at some example PaaS subcategories that have been introduced lately. Gartner, for example, sees a main dinstinction between Application Platform-as-a-Service (aPaaS) and Integration Platform-as-a-Service (iPaaS). I think you can imagine what the focus of each of them is. Gartner defines aPaaS as follows:
“Highly productive, easy to learn and use development environment that delivers business applications that are customizable, changeable, capable of implementing serious business functionality and, when deployed, offered with massive scalability, high-end enterprise-class (and eyond) performance and reliability, supporting massive amounts of data, all at SMB prices.”
One could argue that to deliver enterprise-class applications implementing serious business functionality implies middleware and integration capabilities, but I can see the difference between delivering an application server as-a-Service and an ESB as-a-Service.
Other, more domain-specific, species I stumbled upon recently are pPaaS and bpmPaaS. A Portal Platform-as-a-Service and a Business Process Management Platform-as-a-Service.
I think we can agree on the fact that every type of platform can have a cloud twin and thus result in a PaaS subcategory…
Let’s forget the public cloud as the main requirement for a PaaS
However, is being a public cloud platform the main differentiator between a “platform” and a “Platform-as-a-Service”? In my opinion PaaS is all about abstracting (or automating) away from underlying technology layers. You can just start using the services of the platform without bothering about the configuration and maintenance of the underlying infrastructure, operating system, middleware, and runtimes.
It all started with public cloud providers delivering such platforms as a service, but that doesn’t mean it is limited to such providers. In my opinion it doesn’t matter where the infrastructure is. PaaS can be very usefull too if it runs on-premise or maybe in a hybrid infrastructure approach. Just how I think the open source Infrastructure-as-a-Service software project OpenStack will more and more be used in the near future to build private and on-premise cloud infrastructures.
Why every platform will evolve into a PaaS
I think PaaS is another manifestation of what we always strive for in computer science: a clean separation of concerns. Let the platform builders bother about how their platform plays well with the infrastructure, OS, and middleware. Let the users of the platform focus on delivering solutions on top of the platform. There should be a clear contract between de platform and the software running on it, which specifies the language a user can use to define the solution. As IaaS is gaining ground in private datacenters near you, I strongly believe that existing platforms will evolve into a PaaS too.
Introducing a new subcategory
I just don’t want to disappoint you by stopping here. I think there are some important things missing in the current industry views on PaaS. If we want to abstract away from the lower level details and move our focus to things like application development we need to go futher than just the development level. What a business needs are apps that perfectly fit in the business. These apps need to have a short time-to-market and have to be flexible to evolve along with the business. This means the full lifecycle of such applications, from the initial idea to first deployment, and from that first deployment to long-term evolution, needs to be as agile as possible.
I don’t think we can reach this with traditional development approaches. Why not abstract away from low-level code in the same way as PaaS abstracts away from infrastructure by introducing visual modeling? And if our focus should be on apps that fit the business, we need more focus on collaboration with the business. Hence, we do not only need a development and deployment platform. We also need a social collaboration platform.
Ideally a Platform-as-a-Service should support the full application lifecycle. It’s main goal shouldn’t be to support development, it’s main goal should be to deliver applications that fit the business. From capturing requirements to developing and deploying apps, as well as gathering end-user feedback.
Hence, my PaaS subcategory input: Application Delivery Platform-as-a-Service.
Photo by Robby Virus.