After moving to the cloud, there was no more capacity planning for peak load, you could scale up on demand and scale down to save money.
The twelve principles are given by Adam Wiggins:
- One repo, many deployments
- Explicitly declared dependencies
- Environmentally stored configs
- Backing services treated as attached resources
- Builds, releases, and runs are strictly separated
- Processes are stateless and share-nothing
- Services are self contained
- Scale processes instead of managing concurrency
- Services should have fast startup times and graceful shutdown
- Keep environments similar (dev, prod)
- Logs are treated as event streams
- Admin processes run as one-off tasks