Heroku has deployed more services in a cloud environment than probably any other company. They
operate a massive "Platform-as-a-Service" that enables someone to deploy most kinds of apps just by doing a simple
git push
. Along the way, they developed a pattern for how to write applications so that they can be easily and
consistently deployed in cloud environments. Their platform abides by this pattern, but it can be implemented in many
ways.
The 12-factor pattern can be summed up like this:
Treat all micro-services as disposable services that receive their configuration via environment variables and rely on backing services to provide durability. Any time you need to make a change it should be scripted. Treat all environments (dev, prod, qa, etc) as identical.
Of course, this assumes that the cloud-architecture plays along with this methodology for it to work. For a cloud-architecture to be "12 factor app" compliant, here are some recommended criteria.