I spend more time developing a PaaS than I do reading about them, but when I consider things I’ve seen written I can’t help but feel there’s an important topic that nobody is talking about. One of the great benefits of PaaS, and private PaaS in particular, is the way that it allows both developers and operators to efficiently perform their jobs without the frustration and finger-pointing that usually occurs.
A good PaaS simultaneously provides developers guarantees for their applications while allowing operators to manage the infrastructure on which it runs. Features like automatic recoverability, guaranteed instance counts and the ability to specify an application’s requirements allow the developer to control the aspects of the application that he cares about (availability, dependencies, performance, etc.) while remaining blissfully ignorant to the details on how he gets them.
Let’s shift the focus from the developers to the operator’s perspective. As an operator I have to know servers, networking, storage and operating systems (and I’m sure a number of things developers like me don’t even realize). I don’t really want to also know the subtle differences in configuration required by your FrobNobber and NobFrobber apps, nor should I need to. With a PaaS I get the same interface for managing every application, which lets me stop worrying about individual applications and get back to focusing on the infrastructure concerns that I really care about.
When I need to take a host machine offline, a PaaS lets me move all of the workloads off of that machine so that the guest applications receive no disruption of service. The platform is responsible for preventing disruptions to the applications, and as a result I am free to do what I need to do without having to schedule downtime and work while the rest of the company is at home with their families. Also, because PaaS applications run safely on the same operating system, I am not standing up new servers for each one. Even with my highly automated IaaS implementation there is a cost to me for every server I have to manage. Essentially, PaaS creates economies of scale beyond even what my IaaS implementation gave me.
When I think of what private PaaS has to offer both operators and developers, I see a rare win-win scenario. By giving up complete flexibility in their application’s architecture, developers get the ability to declaratively opt in to the capabilities their application needs from the platform, and every application can reap the benefits of platform improvements over time. Likewise, by “giving up” the provisioning of every application themselves, operators get to reduce their support footprints and don’t have to worry about the unique details of individual applications. In other words, both sides of the equation get to stop caring so much about the other side’s area of expertise and concentrate their efforts on doing what they’re paid to do.