Legacy Rescue
Audit, stabilize, modernize — without taking the system offline.
- Read-only audit
- Stabilization sprint
- Modernization roadmap
- Cutover under load
Most rescues fail at the same point. A team inherits a system everyone is afraid of, the natural instinct is to rewrite it, and the rewrite collides with a six-month runway and a customer base that does not care about the internals. The system that has to be rescued is also the system that is paying the salaries to rescue it. The pattern below is what we reach for when the right answer is neither rewrite nor leave-alone.
Audit first. Stabilize second. Modernize on a route the system can survive.
The first two weeks are read-only. We map the live request paths, the cron jobs that nobody documented, the modules with the most error logs, and the places where the test suite is silent. Stabilization comes next — backfill tests around the load-bearing paths, repair the alerting gaps, restore the deploy story. Only then does modernization begin, and it begins on a route the system can survive: strangler-pattern boundaries around the parts that will be replaced, feature flags to gate every cutover, and a roadmap whose smallest unit of progress is a reversible change. The system stays online the whole time, and the team that owns it stays in the loop.

The right answer is rarely a rewrite.
- Lead ArchitectMirko Vanzo
- PatternReference architecture · keelroot studio
- Year2024
- Read-only audit playbook
- Strangler-pattern boundaries
- Feature-flagged cutover
- Observability backfill before migration