Skip to main content
Articles/architecture/modernization-architecture-patterns-strangler-fig-and-acl
Series: Enterprise Patterns Playbook•Part 13 of 16
Scenario Article

Modernization Architecture Patterns: Strangler Fig, Anti-Corruption Layers, and Modular Monoliths

Real-World Applications: Realistic Scenario: Billing Extraction from Legacy Commerce Core

Abstract Algorithms•Mar 13, 2026
💡 Executive Summary

Large-scale modernization usually fails when teams try to replace an entire legacy platform in one synchronized rewrite.

🎯 System Scenario & Requirements

System Goal

Large-scale modernization usually fails when teams try to replace an entire legacy platform in one synchronized rewrite.

Actors & Components

  • Application or API tier
  • Core service under design
  • Operator or SRE observer

Functional Requirements

  • TLDR: Large-scale modernization usually fails when teams try to replace an entire legacy platform in one synchronized rewrite.
  • The safer approach is to create seams, translate old contracts into stable new ones, and move traffic gradually with measurable rollback points.
  • TLDR : Modernization is safe only when it is reversible: build seams first, translate semantics explicitly, and migrate traffic in measurable steps.

Constraints & Assumptions

⚡ Execution Stages & Decision Trace

1

Stage 1 — When Modernization Patterns Beat Big-Bang Rewrites

Action / Decision:

Legacy systems survive because they contain real business knowledge.

Component Behavior:

Rewriting everything at once usually loses hidden rules and creates high-risk cutovers.

Observable Output: Use modernization patterns to change architecture without breaking meaning.
Read Full Stage in Deep Dive ↓
📖

Deep Dive

Detailed Architectural Analysis

Scenario context

Large-scale modernization usually fails when teams try to replace an entire legacy platform in one synchronized rewrite. The safer approach is to create seams, translate old contracts into stable new ones, and move traffic gradually with measurable rollback points.

TLDR: Modernization is safe only when it is reversible: build seams first, translate semantics explicitly, and migrate traffic in measurable steps…

This walkthrough focuses on Real-World Applications: Realistic Scenario: Billing Extraction from Legacy Commerce Core.

Before making a design choice, clarify:

  • Constraints: - Legacy monolith handles billing, checkout, and support adjustments.
    • Refund correctness must exceed 99.95%.
    • Cutover window cannot exceed 10 minutes.

Concepts in play: design-patterns-gof, api-gateway, sorting-and-searching-algorithms, consistency-replication

Stage 1 — When Modernization Patterns Beat Big-Bang Rewrites

  • Legacy systems survive because they contain real business knowledge.
  • Rewriting everything at once usually loses hidden rules and creates high-risk cutovers.
  • Use modernization patterns to change architecture without breaking meaning.

Observable outcome: Use modernization patterns to change architecture without breaking meaning.

Stage 2 — When to Use Strangler Fig, ACL, and Modular Monolith

  • When not to use these patterns - If the system is tiny and low-risk, full rewrite might be cheaper.
    • If you cannot define rollback points, do not begin migration traffic moves.

Observable outcome: - If you cannot define rollback points, do not begin migration traffic moves.

Stage 3 — How Seam-First Modernization Works

  • Choose one business capability with clear owner.
  • Define stable contract for callers.
  • Insert seam (gateway/facade/abstraction).
  • Add ACL to isolate target model from legacy semantics.

Observable outcome: Add ACL to isolate target model from legacy semantics.

Stage 4 — How to Implement: Migration Checklist

  • Baseline current behavior and edge-case inventory.
  • Build seam at API/gateway/facade boundary.
  • Create ACL mapping table for entities and enums.
  • Add shadow reads or mirrored execution for comparison.

Observable outcome: Add shadow reads or mirrored execution for comparison.

Stage 5 — Deep Dive: Internals of Safe Extraction

  • The Internals: Routing Seams, Translation Rules, and Dual-Run Safety Seam design determines migration quality more than the new service framework.
  • Core seam components: - routing decision point, - stable caller contract, - ACL translation layer, - comparison and audit telemetry.
  • ACL best practice: make translation tables explicit and versioned.
  • Do not hide semantic mappings inside ad hoc code branches.
sequenceDiagram
    participant NS as NewService
    participant ACL as ACL Translator
    participant LS as LegacySystem
    NS->>ACL: Call in new domain model
    ACL->>ACL: Translate to legacy model
    ACL->>LS: Call legacy API
    LS-->>ACL: Legacy response
    ACL->>ACL: Translate to new model
    ACL-->>NS: Clean domain response
    Note over ACL: Shields new service

Observable outcome: Do not hide semantic mappings inside ad hoc code branches.

Stage 6 — Strangler Migration Flow: Route, Translate, Compare, Promote

  • This flowchart maps the complete request journey through a live Strangler Fig migration: the seam gateway decides per-capability whether to route to the legacy path or through the ACL to the new service, then comparison…
  • The divergence check at the bottom is what makes continuous safe traffic promotion possible—when outputs align within the agreed threshold, migrated traffic increases; when they diverge, an automatic rollback is trigger…
  • The seam gateway is the single most important control point in the entire migration because all rollback and promotion decisions flow through it.
flowchart TD
  A[Client request] --> B[Seam gateway or facade]
  B --> C{Migrated capability?}
  C -->|No| D[Legacy path]
  C -->|Yes| E[ACL translation]
  E --> F[New service path]
  D --> G[Legacy datastore]
  F --> H[Target datastore]
  D --> I[Comparison telemetry]
  F --> I
  I --> J{Divergence within threshold?}
  J -->|Yes| K[Increase migrated traffic]
  J -->|No| L[Rollback and investigate]

Observable outcome: The seam gateway is the single most important control point in the entire migration because all rollback and promotion decisions flow through it.

End-to-end outcome

After working through the stages, you should be able to explain:

    • Seam quality is more important than migration speed.
    • ACLs prevent legacy semantics from polluting new domain boundaries.

Alternatives considered

Decision Guide: First Pattern to Apply

If rollback route is unclear, postpone migration traffic expansion.

Failure and degraded modes

Trade-offs & Failure Modes: Pros, Cons, and Risks in Modernization Programs

  • Detection: Trade-offs & Failure Modes: Pros, Cons, and Risks in Modernization Programs
  • User or operator impact: Trade-offs & Failure Modes: Pros, Cons, and Risks in Modernization Programs

Share this case study

Discuss architecture trade-offs and lessons with your team.

Share:XLinkedInReddit