I'm pretty impressed with Heroku co-founder Adam Wiggins' perspective into doing good cloud-based apps


epub: http://12factor.net/12factor.epub

Introducing the Twelve Factor Application pattern

Software is commonly delivered as a service - web apps, SaaS.

The twelve-factor app methodology for building SaaS apps:

  • Uses declarative formats for setup automation, minimizing time/cost for new devs joining projects
  • Has clean contracts with the underlying operating system, offering maximum portability between execution environments;
  • Is suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
  • Minimizes development and production divergence, enabling CICD for maximum agility;
  • Can scale up without significant changes to tooling, architecture, or development practices.

The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).

AppFactorCodebase One codebase tracked in revision control, many deploys

AppFactorDependencies Explicitly declare and isolate dependencies

AppFactorConfig Store config in the environment

AppFactorBackingServices Treat backing services as attached resources

AppFactorBuildReleaseRun Strictly separate build and run stages

AppFactorProcesses Execute the app as one or more stateless processes

AppFactorPortBinding Export services via port binding

AppFactorConcurrency Scale out via the process model

AppFactorDisposability Maximize robustness with fast startup and graceful shutdown

AppFactorDevProdParity Keep development, staging, and production as similar as possible

AppFactorLogs Treat logs as event streams

AppFactorAdminProcesses Run admin/management tasks as one-off processes

The Twelve Factors App idea originated with Adam Wiggins, co-founder of Heroku.


Topic revision: r1 - 2016.01.26 - PaulReiber
Copyright © is by author. All material on this collaboration platform is the property of its contributing author.