• Home
  • BVSSH
  • Engineering Enablement
  • Playbooks
  • Frameworks
  • Good Reads
Search

What are you looking for?

Practice : Strangler Fig Pattern

Purpose and Strategic Importance

The Strangler Fig Pattern is an incremental approach to modernising legacy systems. It involves building new functionality around the edges of an existing system and gradually replacing parts of it over time, much like a strangler fig plant that slowly envelops and replaces its host tree.

This pattern reduces risk by avoiding big-bang rewrites, supports continuous delivery of value, and allows modern architecture to emerge iteratively - enabling technical renewal while preserving operational continuity.


Description of the Practice

  • The legacy system continues to run while new services are developed and routed into production alongside it.
  • A routing layer (e.g. proxy, API gateway) decides whether a request goes to the legacy or the new system.
  • Functionality is extracted, rewritten, and deployed incrementally.
  • Over time, the legacy core is reduced until it can be safely retired.
  • Observability and parity testing ensure behaviour remains consistent during transition.

How to Practise It (Playbook)

1. Getting Started

  • Identify the legacy entry points (e.g. APIs, user interfaces, jobs) and their usage patterns.
  • Implement a façade or routing mechanism that allows traffic redirection by feature or user.
  • Start with a non-critical feature or isolated function and build the modern equivalent.
  • Use side-by-side testing or shadow traffic to verify correctness.

2. Scaling and Maturing

  • Continuously extract additional features or domains from the legacy system.
  • Apply Domain-Driven Design to carve out bounded contexts during extraction.
  • Use feature flags and traffic shaping for progressive rollout.
  • Monitor performance, error rates, and usage to guide and validate the migration.
  • Retire legacy components incrementally, reducing system complexity and operational cost.

3. Team Behaviours to Encourage

  • Celebrate every slice of legacy code replaced or deprecated.
  • Collaborate closely with users and stakeholders to ensure functional parity.
  • Use metrics to guide the migration roadmap - focus on business value.
  • Share learnings and patterns across teams to accelerate safe modernisation.

4. Watch Out For…

  • Migrating without a clear strategy or business alignment.
  • Reinventing legacy issues in the modern system due to unclear requirements.
  • Inconsistent behaviour between old and new systems without test coverage.
  • Routing complexity or duplication that becomes hard to manage.

5. Signals of Success

  • Legacy code footprint shrinks incrementally with every release.
  • Teams deliver modern features while reducing legacy risk.
  • Routing shifts steadily to the modern platform with high user confidence.
  • Migration efforts are transparent, measurable, and business-aligned.
  • The organisation becomes more responsive, agile, and forward-looking.
Associated Standards
  • All infrastructure modules are versioned and backwards-compatible
  • Domains are integrated through stable, loosely coupled interfaces
  • Platform capabilities include clear boundaries of responsibility
  • Systems are architected to minimise the cost of change

Technical debt is like junk food - easy now, painful later.

Awesome Blogs
  • LinkedIn Engineering
  • Github Engineering
  • Uber Engineering
  • Code as Craft
  • Medium.engineering