Release Engineering with a Real Rollback Plan
A rollback instruction is only useful if binaries, configuration and database changes remain compatible. Teams need a known-good version, health signals and a clear authority to stop the release.
اقرأ بالعربية
On this page
Define what returning to a known-good version means
“Redeploy the old version” is not a complete rollback plan. A release consists of application artifacts, dependencies, configuration assumptions, database compatibility and background processing. Reverting only one part can produce a system that starts successfully but handles business records incorrectly.
This guide is for the person who owns the release decision. The plan should name the known-good version, explain how to restore it and identify the evidence required to resume normal operation. It should also specify when rollback would be unsafe and a forward repair or controlled pause is preferable.
Trace one release across the whole workflow
Imagine a hypothetical customer portal adding a new appointment status. The web application writes that status, while a worker sends reminders and a reporting task exports appointment totals. Rolling back the web application will not remove the new status from existing records or automatically restore a compatible worker.
Before release, list the components that must move together and those that can remain compatible independently. Verify the older application can tolerate records the newer version may create. Keep backward-compatible database changes through the rollback window, and delay destructive cleanup until the relevant owners approve it.
A database backup is essential recovery evidence, but restoring it can remove valid later transactions. Treat data restoration as a separate decision with its own impact assessment. An interface regression often needs an application rollback, not replacement of the entire live database.
Keep a release package that can actually run
Record the source revision, dependency lockfile, build identity, required runtime version and configuration references. Preserve a complete known-good artifact rather than assuming the same source will rebuild identically later. Keep secrets in their approved secret store; release records should reference them without copying their values.
Perform a rehearsal in an isolated environment. Have an authorized operator who did not prepare the candidate restore the older version using the written procedure. Check static assets, API behavior, database access and the worker. Instructions that depend on the original developer's memory are incomplete.
Choose exposure according to available control
A controlled cutover can suit a small installation with a short approved maintenance window. A canary can expose a candidate to a limited population when routing, metrics and isolation support it. Blue-green environments can simplify switching application traffic, but shared database compatibility still needs explicit verification.
Google's SRE workbook describes evaluating canary signals separately from the control population. Its central lesson is that whole-system averages can hide a bad candidate. Kubernetes documents deployment revisions and rollback operations; those mechanisms restore workload configuration, not every external side effect produced by an application. Neither reference implies that every project needs Kubernetes or a complex traffic platform.
Decide the stop conditions before deployment
- Define business checks such as creating and retrieving an authorized appointment.
- Compare candidate errors and latency with the appropriate baseline.
- Observe queue age and processing failures, not just web-server health.
- Name the person who may stop rollout and the person who executes rollback.
- State the observation window and any delayed effects that need longer monitoring.
A process returning HTTP success is not sufficient if reminders stop or writes go to the wrong record. Include at least one end-to-end journey with safe test data. Do not send real customer notifications merely to prove the release works without an approved test procedure.
Execute without creating two competing systems
When rolling back, understand which processes are still writing and whether jobs may be retried. A worker running against an incompatible schema can cause more damage while the web application is being restored. Follow a documented order for pausing, switching and resuming affected components, with explicit ownership of in-flight work.
Avoid building a new artifact during an incident unless recovery depends on it. The saved known-good package should be ready to restore. Preserve restricted diagnostic evidence from the failed candidate and record the actual rollback time and outcome.
Accept the plan through a recovery exercise
For the appointment example, acceptance means the older release reads records created by the candidate, authorized users can continue the core journey, reminders resume without duplicate business actions, and operators can reconcile any incomplete work. Document remaining limitations and the separate decision needed for data repair.
Review the plan when the release architecture changes. A successful rehearsal is evidence for the tested combination, not a permanent guarantee. Include operating compatibility and rollback evidence in software delivery planning, before scheduling the production change.
Primary references and further reading
Connect the idea to your business.
Start with your goals, existing systems and constraints before choosing a solution.
Software Solutions
