12 Factor dev/prod parity

Keep development, staging, and production as similar as possible.

  • Gaps between development and production manifest in three areas:
  • Apps are designed for Continuous Delivery by shrinking these gaps.
    • Deployments should coincide with development completion.
    • Developers who write code should be able to deploy it either themselves or with the support of operations personnel.
    • Tooling should be as closely aligned across environments as possible.
  • 12 Factor backing services are typically abstracted away using the adapter pattern (Private).
    • Lightweight services can be used in development environments.
    • Heavier weight alternatives in production.
  • We should reduce differences as these are susceptible to incompatibilities.
    • Containers can greatly reduce the amount of friction here.
    • VMs may be necessary for some more enterprisey software.
  • Adapters are valuable for migrations between technologies, but use across environments should be minimised.