Playbook

Legacy Modernisation Without Downtime (Strangler Fig)

How to replace a monolith slice by slice while it keeps serving traffic — the pattern, the order, and how to know a slice is safe to cut over.

Legacy Modernisation Without Downtime (Strangler Fig)

A big-bang rewrite fails for the same reason every time: the old system is the specification, and nobody has read all of it. The strangler-fig pattern avoids that by never asking you to.

The idea

Put a routing layer in front of the monolith. Build one new slice behind it. Send a little traffic to the new slice, then all of it, then delete the old code path. Repeat. The old system keeps serving throughout, and each step is individually reversible.

Which slice to take first

How we know a slice is safe

StageTraffic to new sliceExit condition
Shadow0% (runs in parallel, results discarded)Outputs match for a week
Canary5%No new errors, latency within budget
Majority50%Stable for several days
Cutover100%Old path deleted, not just disabled

What it looks like in practice

For a mid-size bank we re-platformed a .NET monolith this way. No outage window was ever used, and at every point in the project there was a working system in production. The order was: reporting first, then documents, then the customer-facing reads, and only last the transactional core.

If your problem is version age rather than architecture, an upgrade is cheaper and quicker than modernisation. We will say so if that is the case.

Questions

How long does modernisation take?

It runs slice by slice, so it is measured in sprints rather than a single date. Modernisation starts at $999 and is quoted per slice after a review — you can stop between slices with a working system.

Is a rewrite ever the right answer?

Occasionally — when the old system is small, well understood, and the platform is genuinely dead. For anything business-critical and undocumented, incremental replacement wins.

Read next