Part 9 · 1 chapters · ~8 min

Rollback, Roll-Forward and Release Engineering

When to roll back and when to roll forward, what makes rollback unsafe (migrations, data written by the new version, external side effects), practising rollbacks, release trains versus continuous deployment, deploy freezes, and release engineering as a role.

10

Rollback or roll forward

situationchoosewhy
bad code, compatible schema, no new data shapesroll backfastest path to known good
new version already wrote data the old version cannot readroll forward with a fixrollback would break on the new data
a destructive migration ranrestore or roll forwardcode rollback cannot bring dropped data back
external side effects (emails, payments) already happenedroll back the code, then compensateside effects need their own repair
feature problem behind a flagflip the flagno deploy at all
making rollback safe
  1. Follow expand and contract, so the previous version always works with the current schema.
  2. Practise: roll back a harmless deploy every few weeks so the path is known and fast.
  3. Keep the previous artifact and its config ready; never rebuild to roll back.
  4. Decide in advance who can call a rollback (anyone on call, without asking).

Release engineering as a role owns the pipeline, the release calendar, freezes (tied to error budgets, SRE part 5), versioning and changelogs, and the tooling that lets product teams deploy safely many times a day.