Strangler Fig Execution
Incrementally replacing a legacy system by routing slices of functionality to new implementations behind a facade, until nothing routes to the original.
The pattern is widely cited and its execution details are where programmes succeed or fail.
The mechanism is a facade — a routing layer in front of the legacy system through which all traffic passes. Initially it routes everything to the legacy. Functionality is then built in the new system and the facade redirects that slice. Over time more routes move, and eventually the legacy system receives nothing and is switched off.
The advantages over a rewrite are decisive: value arrives incrementally rather than at the end, each step is individually reversible by flipping a route, and the programme can be paused or stopped without having wasted everything.
The hard parts, in the order they bite. Data is the difficulty, not the code — the two systems need consistent data during the transition, which means either the new system reads the legacy store, or bidirectional synchronisation with all the conflict and lag problems that implies. Choosing slices requires them to be genuinely separable, and a highly entangled legacy may need a period of internal restructuring before any slice can be cut. And finishing is the failure most programmes actually suffer: the valuable 70% is migrated, the remaining functionality is awkward and unloved, funding moves elsewhere, and the organisation now operates both systems permanently — which is more expensive than either.
The countermeasure is to plan the decommissioning date at the start, and treat the last slice as part of the deal rather than a follow-on.