Skip to content

XII. Deployment Strategies & Operations

Shipping code to a distributed system is not an event but a controlled, reversible process — because a bad deploy can take down production, and “roll it back” is not always possible once a database schema has changed. The central discipline is separating deployment (code is running) from release (users see it), so risk can be introduced gradually and withdrawn instantly. This part covers the deployment patterns, GitOps and CI/CD, platform engineering, and the testing strategies that catch failures before your users do.

  • 12.1. Deployment Patterns: Replacing running code without downtime: blue/green, canary, rolling updates, feature flags, and zero-downtime database migrations.
  • 12.2. GitOps and CI/CD: Git as the source of truth: GitOps principles, ArgoCD and Flux, progressive delivery, and pipeline as code.
  • 12.3. Platform Engineering: The internal developer experience as a product: developer platforms, Backstage, golden paths, and infrastructure as code.
  • 12.4. Testing in Distributed Systems: Testing the interactions, not the units: contract testing, end-to-end testing, staging fidelity, load testing, and correctness testing.