EAOT
Patterns / Application Architecture

Strangler Pattern

Route capability-by-capability away from a legacy system until the old core can be retired safely.

Consumers
Routing Facade
New Capability
Legacy Core
Decommission

Conceptual flow

Problem

Big-bang replacement of a business-critical legacy platform carries unacceptable delivery and operational risk.

Context

Monolithic legacy applications with entangled business logic and no realistic freeze window.

Solution

Insert a routing facade, migrate one capability at a time behind it, run comparison in parallel, then cut traffic over and decommission the corresponding legacy module.

Benefits

  • Incremental risk
  • Value delivered continuously
  • Reversible steps

Risks

  • Facade becomes permanent
  • Dual-run data divergence
  • Programme fatigue

Trade-offs

  • Longer overall timeline for lower failure probability

When to use

  • Business-critical legacy core
  • No acceptable downtime
  • Capability boundaries are identifiable

When not to use

  • Small applications
  • Legacy scheduled for retirement anyway

Discuss this pattern

How have you applied it — and where did it break? Bring your experience to the community.

Open the discussion