The future of Platform as a Service
Open source software to standardize, automate and scale deployment, modeled after well-known "Platform as a Service" (PaaS) providers is right now on the cusp of completely changing the way we do ops. In this post I'm going to first go over what you'll need from your app, then the most well known PaaS providers, and then look at the alpha-quality free software projects that I predict will form the backbone of many web app deployments in the near future.
What you need from your app
First, PaaS is not applicable to everyone. Generally, you will need to follow the principles called the 12 Factor App. If your app presently doesn't fit these criteria, then you would be unable to use PaaS, as PaaS architectures require self-contained, stateless applications. However, these should be followed regardless as they are best practices for web app design.
Quick survey of commercial PaaS offerings
Now let's look at the state of established production-ready Platform as a Service companies. I picked out 3 of the most popular:
- Heroku is by far the most well known, and the one I am most familiar with. They support most languages and platforms, and their popularity makes it relatively easy to find help online.
- Nodejitsu focuses on supporting modern node.js stacks. They are a bit more competitively priced compared to Heroku, and have historically supported new web standards faster (notably, WebSockets).
- I've never personally used Appfrog, but it seems to have broad application support, and very compettive pricing compared to Heroku for lower pricing tiers as they bundle database cost.
There's one thing that all 3 of these have in common: very steep pricing compared to rolling your own. For Heroku, for example, just having 2 web drones, 1 worker drone, a Postgres DB, Redis as a message queue, and memcache, could cost over $150 per month! Compare this with rolling your own deployment on something like Digitial Ocean (a rising star in virtual servers), where servers start at $5 per month, and you can get the same performance for a fraction of the cost, plus a lot more flexibility and control. Considering PaaS companies actually use AWS, that means you are mostly buying the ease of the PaaS web app they have deployed, and renting use of the routing / load balancing network they have.
What if we could get both the ease of deployment and future-proofing of Platform as a Service, but roll our own on a cheap hosting provider? If its mostly software you are buying, what if took the principles of 12 Factor App design and built the same experience with open source software?
Platform as a Service free software
The first big open source development which is opening the doors for open source PaaS is Docker. Docker replaces traditional virtualization with extremely light-weight app sandboxing, allowing very well contained apps and speedy deployment. It's still under heavy development, but it forms the backbone for all of the PaaS softwares we'll look at.
Here's a quick overview of some of the PaaS software projects under heavy development:
- Dokku started as a minimalist experiment: create a PaaS software in 100 lines of Bash code. It combines Docker and Heroku buildpacks, and after being posted on hacker news several months ago, received a lot of attention and development. You might not want to use Dokku because of its minimalist approache, but you might want to use…
- Flynn evolved out of Dokku. Just a few days ago, Flynn released it's first "alpha release". While still very firmly saying it's not yet ready for production, this demo gives us a glimpse of things to come: a very easy, Heroku-like web interface with that silver bullet provisioning "slider" that lets us adjust resources on our web apps.
- Deis also is also based on Docker and Heroku buildpacks, with the additional power of Chef, allowing for easy integration of the existing vast collection of Chef recipes for quick deployments of popular software. Also in rapid development, Deis is focusing mostly on building a solid commandline interface, supporting AWS, Digital Ocean, and more, in multi-user environments.
- OpenShift is a PaaS project by Red Hat. OpenShift has both a enterprise solution hosted by Red Hat's servers, comparable to Heroku, and the entirety of its source code online.
The future of web app hosting
Considering the price difference, will Heroku and the others be able to compete with these up-and-coming free software offerings? I expect there'll be many more competitors in this arena, thinly skinning over open source PaaS platforms, selling, essentially, just the ease of using a well-known, already-deployed PaaS system, for only a tiny price over the cost provisioning your own. I bet that because of this the price for existing platforms like Heroku is going to plummet as viable, production ready open source PaaS platforms become a reality. In short, everybody wins! In the mean time, we just need to make sure all our apps follow best practices and to be easily deployed on PaaS platforms.