Introducing the 12-factor app
The 12-factor app is a description of how cloud-native applications should preferably be constructed. Initially proposed by the guys from Heroku, it has since become the de facto standard for cloud-native applications or software-as-a-service (SaaS).
The most important aspect of these rules is that they can be applied in any programming language. In the following sections, we will walk through each of these 12 factors and highlight what makes them important:
- Code base
- Dependencies
- Config
- Backing services
- Build, release, run
- Processes
- Port binding
- Concurrency
- Disposability
- Dev/prod parity
- Logs
- Admin processes
Code base
One code base tracked in revision control, many deploys.
We already touched upon this before; there must be a central code base, stored in some kind of SCM system. Only sources should be kept here; binaries or other artifacts should be kept at a different location.
Nowadays...