Twelve-Factor App
Twelve-principle methodology for building modern SaaS applications that are portable, scalable, and deployable on cloud platforms.
What it is
The Twelve-Factor App is a 12-principle methodology for building modern SaaS applications. Published by Heroku in 2011, it remains the foundation of cloud native best practices.
The 12 factors
- Codebase: one repo, multiple deploys
- Dependencies: explicitly declare and isolate dependencies
- Config: configuration in environment variables
- Backing services: treat external services as attached resources
- Build, release, run: strictly separate stages
- Processes: run as stateless processes
- Port binding: export services via port binding
- Concurrency: scale via processes
- Disposability: fast startup, graceful shutdown
- Dev/prod parity: keep environments similar
- Logs: treat logs as event streams
- Admin processes: run admin tasks as one-off processes
Current relevance
Despite being over a decade old, the 12 factors remain relevant. Serverless and containers implement many of these principles by design.
Factors in modern practice
| Factor | Principle | Modern implementation |
|---|---|---|
| III. Config | Environment variables | AWS SSM Parameter Store, Secrets Manager |
| V. Build, release, run | Separate stages | CI/CD pipelines, GitOps |
| VI. Processes | Stateless | Containers, Lambda |
| IX. Disposability | Fast startup | Health checks in Kubernetes, graceful shutdown |
| X. Dev/prod parity | Similar environments | DevContainers, Docker Compose |
| XI. Logs | Event streams | Structured logging, stdout → CloudWatch |
Limitations
The 12 factors don't cover aspects that are essential today:
- Security: no mention of authentication, authorization, or zero trust
- Observability: only discusses logs, not metrics or distributed tracing
- Resilience: doesn't address circuit breakers, retries, or chaos engineering
- API contracts: no mention of API versioning or service contracts
Why it matters
The twelve factors remain relevant as design principles for cloud-native applications. Environment-based configuration, stateless processes, logs as streams, and dev/prod parity are practices that prevent entire categories of operational problems.
References
- The Twelve-Factor App — Adam Wiggins, 2011.
- Config — 12 Factor — Adam Wiggins, 2011. Factor III: environment-based configuration.
- CNCF Projects — CNCF, 2024. Cloud-native ecosystem implementing twelve-factor principles.