Khader Syed

I love 12 factor

Mon May 29 2017

#12factor#saas

If you haven’t heard or read about 12 factor, read about it here.

The twelve-factor app is a methodology for building software-as-a-service apps that:

  • Use declarative formats for setup automation, to minimize time and cost for new developers joining the project
  • Have a clean contract with the underlying operating system, offering maximum portability between execution environments
  • Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration
  • Minimize divergence between development and production, enabling continuous deployment for maximum agility
  • And can scale up without significant changes to tooling, architecture, or development practices

Listing the 12 factors here:

  • One codebase tracked in revision control, many deploys
  • Explicitly declare and isolate dependencies
  • Store config in the environment
  • Treat backing services as attached resources
  • Strictly separate build and run stages
  • Execute the app as one or more stateless processes
  • Export services via port binding
  • Scale out via the process model
  • Maximize robustness with fast startup and graceful shutdown
  • Keep development, staging, and production as similar as possible
  • Treat logs as event streams
  • Run admin/management tasks as one-off processes