Deploy Is a Dangerous Event
Deploy Is a Dangerous Event
After understanding that Latency is born from decisions, and that Metrics can reassure even when you should be worried - comes the moment when you try to “fix” it.
And then you Deploy.
The Illusion: “It’s a Small Change”
Deploy is perceived as a technical action:
- We shipped a version
- We added a field
- We fixed a specific bug
The change looks minor. The risk - negligible.
That’s one of the most dangerous illusions in production.
Why Deploy Is Dangerous by Nature
Deploy isn’t just a code change. It’s a change to the system’s state.
During a Deploy, these change simultaneously:
- The running code
- Timing
- Interactions between components
- And hidden assumptions built up over time
Even if the code is “correct” - the context it runs in has changed.
Why Deploys Break More Than You’d Think
Most breakages don’t stem from a direct bug.
They stem from:
- A change in the order of operations
- A change in load at one point
- A change in response time
- Or a change in expectations between services
A small deploy can:
- Move a Bottleneck
- Trigger code that hadn’t run before
- Or expose a dependency that wasn’t noticeable
The breakage isn’t in the new code - it’s in its encounter with a live system.
Rollback Is a Comforting Illusion
“If there’s a problem - we’ll roll back.”
That sounds responsible. It feels safe.
But in production:
- The system has already seen the change
- Data has already been written
- Queues have already filled up
- And clients have already responded
Rollback reverts code - it doesn’t revert state.
It helps, but it almost never erases the impact.
Change as a Chain Reaction
Deploy isn’t a single point event. It’s the start of a chain.
A small change:
- Shifts Latency
- Changes usage patterns
- Triggers Retries
- And creates secondary load
The response to the change can be bigger than the change itself.
This is why Deploys are dangerous: not because of what you planned - but because of what you didn’t anticipate.
An Analogy
Think of a small change in a river.
Moving one rock:
- Changes the flow
- Shifts sediment
- And opens a new path
The rock is small. The impact - isn’t.
The Bottom Line
Deploy isn’t a technical moment. It’s a systemic event.
Stable systems don’t ask: “is the code correct?”
They ask:
- What else does this change
- Where might it amplify load
- And how will we detect a problem early
A small change in production isn’t small at all.
Looking Ahead
Out of fear of a sharp Deploy, a solution that sounds safer was born:
doing everything gradually.
But “gradual” isn’t always gentle - and sometimes it’s more dangerous than a sharp change.
In the next post we’ll examine why Gradual rollout can create dangerous intermediate states, and why partial failure is harder than total failure.
📚 More in this Series: When the System Is Already Running
- Part 1 Production Is the System's Point of Truth
- Part 2 Latency as an Organizational Problem, Not a Technical One
- Part 3 When Metrics Lie
- Part 5 Gradual Rollout: Why "Gradually" Isn't Always Safe
- Part 6 Backward Compatibility as a Long-Term Commitment
- Part 7 When a System Reflects Organizational Structure
- Part 8 Incident Response Is Culture, Not Procedure
- Part 9 Good Enough Engineering
- Part 10 Over-Engineering and Under-Engineering: Two Sides of the Same Mistake
- Part 11 Mature Engineers Don't Seek Control