The Twelve-Factor App
A methodology for building modern, scalable, maintainable software-as-a-service apps.
Codebase: One codebase tracked in revision control, many deploys.
Dependencies: Explicitly declare and isolate dependencies.
Config: Store config in the environment.
Backing services: Treat backing services as attached resources.
Build, release, run: Strictly separate build and run stages.
Processes: Execute the app as one or more stateless processes.
Port binding: Export services via port binding.
Concurrency: Scale out via the process model.
Disposability: Maximize robustness with fast startup and graceful shutdown.
Dev/prod parity: Keep development, staging, and production as similar as possible.
Logs: Treat logs as event streams.
Admin processes: Run admin/management tasks as one-off processes.