ExVersion All articles
Engineering Practices

Deployed Is Not Shipped: The Rollback Path Your Team Forgot to Build

ExVersion
Deployed Is Not Shipped: The Rollback Path Your Team Forgot to Build

Photo: Cory Huston, Public domain, via Wikimedia Commons

There is a particular species of dread that arrives around 2 a.m. during a production incident. The on-call engineer, bleary-eyed and facing a wall of alerts, asks the question every team believes it can answer: "Can we roll back?"

The honest answer, in a surprising number of American engineering organizations, is no. Not "no, we lack permission" or "no, the process takes too long" — but no in the sense that nobody has verified the rollback path in months, and the assumptions underpinning it have quietly rotted away.

The Asymmetry We Built On Purpose

Modern deployment tooling is a marvel of forward motion. Continuous integration pipelines, container orchestration, progressive delivery platforms — the entire ecosystem is optimized to get new code into production faster than ever. GitHub Actions, Argo CD, Spinnaker: the tooling market has poured billions into making the forward arrow shorter.

The reverse arrow got almost nothing.

This asymmetry is not an accident. It reflects a cultural belief, common across US tech companies from seed-stage startups to Fortune 500 platform teams, that rollback is a failure state — something that happens to careless teams. If your testing is good enough, the thinking goes, you will never need to go backward. So nobody budgets for it, nobody tests it, and nobody owns it.

The result is what incident researchers sometimes call "theoretical reversibility": a rollback capability that exists on paper but has never survived contact with a real outage.

When the Escape Hatch Was Painted Shut

Postmortems from high-profile incidents share a telling pattern. Teams attempted to roll back and discovered, mid-crisis, that the path was broken in one of three ways.

First, the database had migrated forward in an irreversible way. The application binary could revert, but the schema could not — the new code was the only code compatible with the new data.

Second, the artifacts were gone. A registry had been pruned under a retention policy, and the previous known-good image no longer existed. Rolling back would have meant rebuilding from a commit hash, with all the uncertainty that implies.

Third, and most common, the rollback had simply never been rehearsed. The command existed. The documentation existed. But the last time anyone ran it, three refactors ago, the environment looked different — and no one had noticed.

Each of these failures shares a root cause: rollback was treated as an artifact of the deployment process rather than a capability in its own right, with its own maintenance burden and its own failure modes.

Rehearsal Is the Only Proof

The fire service does not wait for a blaze to test its ladders. Aviation does not discover mid-flight whether the evacuation procedures work. Yet software teams routinely discover, during their worst hour, whether their rollback path functions — which is precisely the worst possible time to find out.

A growing number of platform engineering teams are adopting a practice borrowed directly from these older disciplines: the rollback drill. On a scheduled cadence — monthly for high-velocity teams, quarterly for most — the team deliberately reverts the most recent production deployment in a staging environment that mirrors production as closely as possible. The drill is timed, documented, and treated as a first-class engineering exercise.

The drill exposes what dashboards cannot. It surfaces schema migrations that cannot be unwound. It reveals missing artifacts, stale credentials, runbook steps written for an architecture two quarters old. And critically, it produces a number: rollback time. Not estimated, not hoped for — measured.

Measuring Deployability in Both Directions

Deployment frequency and lead time have become standard metrics across the industry, popularized by DORA research and echoed in nearly every engineering scorecard. But these metrics describe only half of deployability. A team that deploys forty times a day and cannot revert in under an hour is not more agile than a team that deploys weekly and can revert in ninety seconds. It is merely faster at getting into trouble.

Mature teams should track rollback time with the same rigor: the median and 95th-percentile duration to return production to the previous known-good state, measured through drills rather than incidents. Some organizations go further, requiring that every deployment plan include a validated reversal plan before it may proceed — a discipline that forces schema design, feature flag strategy, and artifact retention decisions to account for the backward path from the start.

There is also a quieter benefit. Teams that trust their rollback move faster in general. When reversal is cheap and proven, engineers ship smaller changes more confidently, because the cost of a bad release is measured in minutes rather than weekends. Reversibility, it turns out, is not a brake on velocity. It is the foundation of it.

A Capability, Not a Contingency

The teams that emerge from bad incidents strongest are rarely the ones with the best forward pipelines. They are the ones who treated going backward as a product feature of their delivery system — something designed, tested, and maintained with intention.

The next time your team reviews its deployment metrics, add a row to the spreadsheet: when did we last roll back on purpose, and how long did it take? If the answer is "we are not sure," you do not have a rollback capability. You have a rollback theory. And production incidents have a way of testing theories at the least convenient moment.

All Articles

Related Articles

The Versioning Graveyard: How Accumulated Debt Is Quietly Killing Your Shipping Cadence

The Versioning Graveyard: How Accumulated Debt Is Quietly Killing Your Shipping Cadence

Invisible at the Worst Moment: Why Your Production Build Metadata Is Working Against You

Invisible at the Worst Moment: Why Your Production Build Metadata Is Working Against You

Shipping Fast, Deploying Slow: The Versioning Trap at the Heart of Modern DevOps

Shipping Fast, Deploying Slow: The Versioning Trap at the Heart of Modern DevOps