Overview

The Twelve-Factor App is a set of best practices designed to enable applications to be built with portability and resilience in mind, specifically for cloud-native environments. It was originally drafted by developers at Heroku.

The Twelve Factors

  1. Codebase: One codebase tracked in revision control, many deploys.
  2. Dependencies: Explicitly declare and isolate dependencies.
  3. Config: Store configuration in the environment.
  4. Backing services: Treat backing services as attached resources.
  5. Build, release, run: Strictly separate build and run stages.
  6. Processes: Execute the app as one or more stateless processes.
  7. Port binding: Export services via port binding.
  8. Concurrency: Scale out via the process model.
  9. Disposability: Maximize robustness with fast startup and graceful shutdown.
  10. Dev/prod parity: Keep development, staging, and production as similar as possible.
  11. Logs: Treat logs as event streams.
  12. Admin processes: Run admin/management tasks as one-off processes.

Benefits

  • Scalability: Applications can be easily scaled horizontally.
  • Portability: Apps can run on any cloud provider or on-premises infrastructure.
  • Maintainability: Clear separation of concerns and explicit dependency management.

Related Terms