Self-Service Delivery

I remember the first time I experienced Heroku. The simplicity of deployment via git push heroku master was so elegant. It gave every developer the power to ship from a simple push. It was also a PaaS, so you didn't need to ask anyone for infrastructure to run your app. There was no deployment script to write and no CI configuration to craft and test, thanks to pre-defined buildpacks. The assumption that apps were similar and could be built by standard buildpacks freed us from the need to define the build and deployment ourselves. We were free to focus on writing code, to develop and ship without needing permission and with minimal or no toil to deploy.

The experience as a developer was delightful and it empowered us. But then pesky requirements like support for more sophisticated architectures than a simple app instance, and more rigorous build, test, and deployment support reared their heads. PaaS fell short of the demands of most real-world apps because it wasn't flexible enough.