Eric Knipp over at Gartner recently wrote a great piece named “PaaS-O-Nomics 101“. I think Knipp’s thesis is extremely accurate, and is the thesis we’ve been operating Apprenda under for some time now. Knipp says “Quite simply, a good PaaS makes development cheaper.” This is true, but a drum we’ve been beating for sometime now is that nearly all PaaS offerings help with application deployment and management, and do very little if nothing at all for actual development.
Most PaaS isn’t all it’s cracked up to be when it comes to driving down actual development costs. PaaS has typically focused on application deployment and ALM, which removes roadblocks to development and reduces the number of distractions a development team encounters in their quest to build and release a new application. Unfortunately, this doesn’t do anything to increase the expressiveness of any single line of code. You see, the core essence of improving developer productivity is helping developers tackle more sophisticated problems with easier/less code. Typically, runtimes do this by implicit value injection; a developer writes code with an explicit expectation of what the code does, and an implicit expectation of what it inherits from its runtine (e.g. managed memory from the JVM or CLR) Essentially, technologies that help developers express higher value outcomes with a fixed code footprint are things that actually impact development-time cycles.
What do I mean by this? Take managed memory runtimes like the JVM or the CLR. Anyone who’s written C/C++ and dealt the malloc()/free() hell of tracking memory allocation references knows that it’s the source of countless bugs. Managed runtimes allowed fixed code footprints to express memory needs without having to deal with the intricacy of managing memory. Application servers allowed developers to write web apps without having to manage threading models, sockets, etc. These technologies allowed development costs in those application architecture archetypes to plummet because they productized architecture patterns, allowing normal developers to achieve extraordinary outcomes.
I’ve always taken a different view of PaaS’ role in the market – and it’s even expressed in our tagline at http://www.apprenda.com – “Empowering enterprises to develop and manage cloud
applications better and faster with private PaaS.” Notice that we don’t lead with a “Deploy Apps Better” mantra. In our view, PaaS is the manifestation of the runtime model in cloud, and not just a deployment tool. Deployment is a tactical value category that can be solved in a plethora of ways: PaaS, IaaS++, etc. Sure, some are better/higher fidelity, but none impact the developers code. Apprenda does things like let developers write plain old .NET web and SOA apps, and when they run in our container, they are enhanced with architecture qualities like multi-tenancy at the application tier. In these cases, we “inject” modern cloud architecture DNA into a standard app, essentially allowing the developer to write more expressively, meaning we increase the value of each line of code as opposed to just remove distractions. The end result is that enterprises get next generation application architectures like multi-tenancy, mobile backends, web scale, and distributed application patterns for “free”. This means that the runtime view of PaaS drives higher savings and productivity through enterprises by equipping them with technology that leverages existing assets and skillsets in a cloud-driven way. The strategic advantage in this is tremendously powerful, unlike the tactical advantages brought to the table by a deploy PaaS.
This is far removed from where all other PaaS vendors are today, but we feel quite strongly that PaaS needs to fill the role in cloud that app servers did in web apps. Unfortunately, most PaaS providers seem hellbent on becoming the InstallShield of the cloud rather than the becoming the cloud’s JVM/CLR equivalent.