Skip to content

Rollback Beats Forward-Fix

Rollback beats forward-fix is the reliability principle that, during a bad release, restoring the last known-good version is usually safer and faster than repairing production in place. It shortens the incident feedback loop from investigation and new deployment to a controlled reversal of code, traffic, or artifact state.

The problem is that user-visible downtime is spent in the recovery loop, not in the engineering intention. A forward-fix asks the team to diagnose the fault, design a patch, review it, test it, build it, and deploy it while production is broken. Even a good team is then spending outage minutes on uncertain work. Availability improves when recovery time falls, so shortening the loop often matters more than hoping failures become rarer.

Rollback works by keeping a deployable record of known-good releases and making the release mechanism reversible. Instead of creating a new fix, the operator moves traffic back to the previous revision, reactivates an older artifact, or asks the deployment controller to restore the previous ReplicaSet. The important detail is immutability: the old version must be exactly the thing that was running before, not a hand-edited approximation made during the incident.

The trade-off is that rollback is only simple when the rest of the system is compatible with going backwards. Database migrations, cache formats, queues, feature flags, and external side effects can make old code unsafe after new code has run. A schema change that removes a column, for example, may break the previous application. The honest rule is not rollback always, but rollback by default unless the prior state is also dangerous or irreversible.

Engineers meet this in deployment tooling and incident practice. Kubernetes can undo a rollout to an earlier ReplicaSet; progressive delivery systems can abort a canary when metrics degrade; serverless and container platforms often retain revision history and let traffic move back without rebuilding. The cultural part matters too: treating rollback as failure wastes the very minutes rollback is meant to save. It should be a normal recovery action, not a debate.

Common questions

Why is rollback often better than fixing forward?
Because the rollback path has fewer uncertain steps. A forward-fix requires understanding the bug, writing new code, testing it enough to trust it, building, and deploying. A rollback mainly requires deciding that the release is bad and restoring a known-good version. That shorter feedback loop reduces user exposure during the incident.
When should you not roll back?
Do not roll back blindly when the previous version is also unsafe, or when new state is incompatible with old code. Examples include destructive schema changes, changed cache encodings, irreversible writes, or a bug that already existed in the earlier release. In those cases, a forward-fix or a targeted operational repair may be the safer path.
What makes rollback reliable in practice?
Reliable rollback depends on immutable release artifacts, recorded deployment history, backwards-compatible data changes, and rehearsed operational commands. Feature flags and progressive delivery help because they separate exposure control from rebuilding software. The goal is for recovery to be a small, known procedure rather than a fresh engineering project during an outage.