Is 12 factor still relevant?
9 April 2021 · Filed in Infrastructure DevelopmentIn 2011 Adam Wiggins created 12factor. It describes the 12 factors modern applications should have.
Based on these 12 Factors, he went on to co-found Heroku a platform to easily host applications.
But what are these 12 factors? They describe where the code and configuration is stored, how dependencies should be defined and the processes that should be followed during development, testing and deployment.
- 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
Fast forwarding to today, they look very similar in nature to serverless architecture programs. Stateless, fast startup and shutdown. One hit runs for admin tasks. Ensuring the tasks can scale by running concurrently.
So in short, yes they are still the founding principles for all robust, scalable and responsive applications.
Previous Post: git push -u origin <branch>? Next Post: What does cloud application architecture look like? Tags: automation · devops · immutable · ops