The riskiest routine act in software
A deploy replaces a running system with a different one while people are using it. Nothing else in normal operations changes so much at once, on purpose, with users attached.
The failure modes are not exotic, which is what makes them worth enumerating:
- The new version is simply wrong. Tests passed, production disagreed, usually about data or scale that no test environment had.
- The environment differs. Configuration, secrets, network policy, a dependency version, a resource limit that only exists in production.
- The transition itself breaks. Old and new run simultaneously for a period and disagree about a data format, a cache key, or an API contract.
- Load arrives before readiness. Traffic reaches instances that are up but not yet warm, connected, or migrated.
Key idea: deployment strategies are not about deploying faster. They exist to control one variable, how many users encounter a bad version before somebody notices, and to make undoing it cheap. Everything in this course follows from taking that variable seriously.
The instinct that follows from all this is to deploy less often. The evidence says the opposite.

