Over the past few months, I’ve read a number of articles and reports (like this one by David Linthicum, this one by Brandon Butler, and this fine specimen by Alex Freedland of Mirantis) that predict or speculate about the demise of pure-play PaaS layer (software or otherwise). The prediction is that IaaS will subsume PaaS in an engulfing process that I can only visualize as some sort of phagocytic event. My take? It’s a batty idea and I have history and logic on my side to dismiss it so readily.
First, let’s talk about the concept of technology stacks. Generally speaking, any layer of abstraction (e.g. application server) forces any layers above that abstract layer (e.g. application) to be indifferent of what sits below it (e.g. hardware). A true “upstack” play minimizes the importance of components that are downstack. This is the fundamental reason one can write a Tomcat application and run that app on Tomcat regardless of whether the container is sitting atop of Windows or Linux. Tomcat minimizes the importance of the OS.
That isn’t to say OSs aren’t important, just that from the perspective of an application sitting in Tomcat, it is much less important to the architecture of the app than if the app was sitting on the OS directly. An upstack layer makes an effort to treat components downstack from it as fungible, with no specific implementation having an unnatural advantage. Why? Because otherwise it would be a terribly leaky abstraction. We all know that every abstraction is leaky to some degree, but good architectures tend toward the “not so leaky” side of the spectrum.
Now, back the specific question of “Will PaaS become a feature of IaaS?” One of the primary tenets of PaaS software is that it provides the customer infrastructure independence. I have not had a single Apprenda customer not be interested in either the story of infrastructure independence or the real end-state of infrastructure independence. If we think about this tenet and the leaky abstraction discussion, one of two things must be true if PaaS were to become a feature of IaaS:
The end result of the first of these is blunt stack lock-in. The second reality mentioned is more subtle because leakiness will cause guest application to inadvertently bind to the IaaS layer and not to the PaaS layer. Neither of these outcomes is customer-friendly. If we look to history, the customer push has always been as rigid of a decoupling as possible. It’s why OS, app servers, and runtimes like the JVM work the way they do. No one that I know of would willingly choose to let the tail wag the dog in an architecture stack and be happy with the outcome.
In reality, the opposite will happen. PaaS software will dominate the discussion and provide for a future where infrastructure is minimized in the context of upstack decisions. Customers will have freedom to optimize the layers independently and not be shackled by a “downstack dictator.”