STRANGLER FIG MIGRATION•
B2B Logistics & Supply Chain Platform
•
7 min czytania

Dekompozycja 8-letniego monolitu bez zatrzymywania sprzedaży i operacji

Bezpieczna dekompozycja 450k linii legacy kodu za pomocą wzorca Strangler Fig z Traefik i Vertical Slice Architecture. Wzrost deployów z 1/msc do 14/tydz bez ani jednej sekundy downtime'u.

Częstotliwość deployów
14 na tydzień1 na miesiąc
+56x
Czas detekcji regresji
4 minuty (CI/CD)3-5 dni (manual)
Instant
Downtime podczas migracji
0.00 sekundRyzyko 24h+
100% uptime
Strangler FigTraefikDDDVertical SliceDockerGitOps CI/CD

Kontekst biznesowy i paraliż release'ów#

Platforma logistyczna B2B obsługująca tysiące operacji łańcucha dostaw dziennie mierzyła się z rosnącym kosztem utrzymania 8-letniego monolitu o objętości przekraczającej 450 000 linii kodu.

Wraz ze wzrostem złożoności modułów rozliczeniowych i integracji kurierskich, system zaczął paraliżować rozwój całego biznesu:

  • Cykl release'u trwający ponad 30 dni: Ze względu na ogromne powiązania w kodzie (tzw. Big Ball of Mud), zespół inżynieryjny bał się jakichkolwiek wdrożeń.
  • Niekontrolowane regresje: Zmiana w module kalkulacji stawek przewozowych potrafiła wywołać błąd w wystawianiu faktur VAT.
  • Długi manualny proces QA: Przed każdym wdrożeniem zespół spędzał od 3 do 5 dni na ręcznych testach regresyjnych.

Zarząd stanął przed dylematem: zarządzić 18-miesięczny „Big Bang Rewrite” (przepisanie wszystkiego od nowa) z ryzykiem katastrofy budżetowej, czy znaleźć bezpieczną alternatywę inżynieryjną.


Architektura przejściowa: Wzorzec Strangler Fig#

Zdecydowaliśmy o natychmiastowym odrzuceniu koncepcji przepisania systemu od nowa. Zamiast tego wdrożyliśmy wzorzec Strangler Fig (Duszącego Figowca) w połączeniu z Traefik Reverse Proxy oraz architekturą Vertical Slice Architecture.

[Klienci B2B / API Consumers]
              │
              ▼
   [Traefik Reverse Proxy (Dynamic Routing)]
       │                              │
       │ (90% legacy ruchu)           │ (Nowe wycięte domeny)
       ▼                              ▼
 [8-letni Monolit]            [Nowe Vertical Slices (DDD)]
   (Baza Legacy)               - Moduł Fakturowania
                               - Moduł Dispatchingu
                                (Dedykowana baza PostgreSQL)
                                      ▲
                                      │ (Event Sync / RabbitMQ)
                                      ▼
                              [CDC / Debezium Outbox]

Schemat Architektury Migracji Monolitu: Wzorzec Strangler Fig w praktyce produkcyjnej
Schemat Architektury Migracji Monolitu: Wzorzec Strangler Fig w praktyce produkcyjnej

Kluczowe założenia transformacji:#

  1. Zero Downtime: Ani na minutę nie zatrzymano procesowania przesyłek i generowania przychodu.
  2. Krokowy podział domenowy: Zastosowaliśmy podejście Domain-Driven Design (DDD) i Event Storming, aby wyznaczyć precyzyjne granice kontekstów (Bounded Contexts).
  3. Outbox Pattern & Change Data Capture (CDC): Synchronizacja danych między bazą legacy a nowymi mikrousługami opierała się na mechanizmie Outbox i RabbitMQ, zapewniając spójność ostateczną (Eventual Consistency).

Wdrożenie techniczne krok po kroku#

Etap 1: Warstwa Edge Routing (Traefik)#

Umieściliśmy Traefik na brzegu sieci jako inteligentny reverse proxy. Początkowo 100% ruchu trafiało do starego monolitu. W miarę wdrażania kolejnych domen, reguły routingu przekierowywały ruch do nowych modułów bez konieczności rekonfiguracji klientów API.

Etap 2: Ekstrakcja modułu fakturowania do Vertical Slice#

Pierwszą domeną poddaną transformacji było fakturowanie. Zamiast warstwowego podziału (Controllers -> Services -> Repositories), zastosowaliśmy architekturę Vertical Slice – cała logika danej komendy biznesowej (np. GenerateInvoiceCommand) znajduje się w jednym autonomicznym katalogu.

Etap 3: Automatyzacja GitOps CI/CD i Kontrakty OpenAPI#

Wprowadziliśmy rygorystyczne testy kontraktowe (Consumer-Driven Contract Testing) z wykorzystaniem OpenAPI. Czas wykonania pipeline'u CI/CD w Dockerze wyniósł zaledwie 4 minuty.


Rezultaty biznesowe i inżynieryjne#

  • Częstotliwość release'ów: Wzrost z 1 wdrożenia w miesiącu do 14 wdrożeń w tygodniu (+56x).
  • Czas wykrywania błędów i regresji: Skrócony z 3–5 dni manualnych testów do 4 minut w zautomatyzowanym CI/CD (natychmiastowy feedback loop).
  • Dostępność systemu w trakcie migracji: 100.00% uptime (0.00 sekund przestoju) dla partnerów logistycznych.
  • Morale zespołu inżynieryjnego: Eliminacja strachu przed deploymentem w piątek – wdrożenia stały się powtarzalnym, bezpiecznym procesem tła.

Lekcja dla liderów technologii#

Przepisywanie całego systemu od zera to najczęstsza przyczyna katastrof budżetowych w branży IT. Wzorzec Strangler Fig udowadnia, że można dekomponować nawet najbardziej zagmatwany monolit, jednocześnie generując stały zwrot z inwestycji (ROI) już po pierwszych tygodniach pracy.

Przemysław Sobolewski
Lead Architect & Autor wdrożenia
Przemysław Sobolewski

Principal System Architect & Fractional CTO. Projektuje i audytuje architektury o wysokim obciążeniu transakcyjnym dla firm w Polsce, UE i USA.

Skonsultuj architekturę