We're hiring — join the team.
Modernization

Modernize without the rewrite: the strangler-fig path off a legacy core

A big-bang rewrite is the riskiest way to escape a legacy monolith. The strangler-fig pattern lets you peel off capabilities one at a time while the business keeps shipping.

CodeStakes Cloud & Modernization Practice9 min read

Part of our work in Cloud, Modernization & Product Engineering

Cloud-native services incrementally replacing a legacy monolith

The instinct, when a legacy system becomes the thing slowing everyone down, is to rewrite it. Start fresh, do it properly this time, and switch over when the new system is ready. It is also the way most modernization efforts get into trouble. A big-bang rewrite asks a team to reproduce years of accumulated behavior — including the undocumented edge cases that quietly keep the business running — and then cut over in one high-stakes moment. Meanwhile the legacy system keeps changing, so the rewrite is aiming at a moving target. For any platform with real uptime obligations, that risk profile is hard to justify.

The strangler-fig pattern offers a different shape entirely. Named after the vine that grows around a host tree and gradually takes its place, the approach modernizes a system incrementally: you route traffic through a façade, peel off one capability at a time into a new service, and let the legacy system shrink until what remains is small enough to retire safely. At every step the system is whole and shippable. There is never a moment where the business is betting everything on a single cutover that either works or does not.

It begins with mapping. Before extracting anything, we map the monolith's domains and dependencies to find the seams — the boundaries where a capability is coherent enough to stand on its own and valuable enough to be worth extracting first. Good first candidates are high-value and relatively low-coupling: a capability the business wants to evolve quickly, but one that does not have tendrils into every corner of the system. Extracting the right thing first builds momentum and proves the pattern; extracting the wrong thing first can stall the whole effort.

A façade or routing layer sits in front of the legacy system and the new services, directing each request to whichever currently owns that capability. As a capability moves out, the façade's routing updates to point at the new service, and the change is invisible to callers. This is what makes the migration gradual and reversible: if an extracted service misbehaves, you can route back to the legacy implementation while you fix it, rather than scrambling through an emergency rollback of a monolithic deploy.

Extracted services are built the way you wish the whole system had been built. They are containerized and deployed on a cloud-native platform defined by infrastructure-as-code, with CI/CD and automated testing in front of every change. Observability comes first, not last: SLOs, autoscaling, and right-sizing mean that as load moves onto the new services, spend tracks real usage and incidents are caught before customers feel them. Each extraction is an opportunity to pay down not just code debt but operational debt.

The business case is usually compelling precisely because the value arrives incrementally. You do not wait two years for a rewrite to deliver; each extracted capability improves deploy speed, reliability, or cost the moment it ships. In one banking-services engagement, an incremental strangler-fig migration off an aging on-premise monolith cut monthly cloud run cost by 42% and lifted deploy frequency eightfold — with zero downtime at cutover, because there was never a single big cutover to fail.

The pattern's quieter benefit is organizational. Because the team modernizes alongside the running system rather than disappearing into a parallel rewrite, knowledge transfers continuously and the people who will own the new platform build it themselves. We deliberately pair with the client's engineers throughout, so that when the engagement ends they are not handed an unfamiliar system but one they helped shape and can confidently keep evolving.

Modernization is rarely a single project with a finish line; it is a capability a team should own permanently. The strangler-fig approach is valuable not only because it de-risks the immediate migration, but because it leaves behind the façade, the pipelines, the observability, and the habits that make the next round of change routine instead of terrifying. The goal is not just to escape today's legacy system, but to never accumulate another one.

  • Strangler-fig
  • Microservices
  • Cloud-native
  • Legacy modernization

Part of our work in Cloud, Modernization & Product Engineering

Want to talk through a challenge like this?

Start a conversation