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
- Codebase: One codebase tracked in revision control, many deploys.
- Dependencies: Explicitly declare and isolate dependencies.
- Config: Store configuration 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.
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.