Powrót do przewodników

Strangler Fig Pattern

Punkt wyjścia

Projekty migracyjne w IT dawno przestały być wyjątkiem, to codzienność. Systemy legacy, które działają latami, w końcu docierają do punktu, w którym wdrażanie nowych funkcji kosztuje coraz więcej, a prowizorki stają się normą. Osoby, które znały procesy i funkcje systemu od podszewki, często już nie są dostępne. Zostaje system, który obsługuje krytyczne procesy biznesowe, ale technicznie ma swoje lata.

Główne wyzwanie polega na tym, że klienci i pracownicy aktywnie korzystają z tego systemu na co dzień. Migracja musi się udać bez zakłócania bieżącej pracy — bez długich przestojów, utraty danych ani nieprzyjemnych niespodzianek.

I tu wkracza Strangler Fig Pattern.

Czym jest Strangler Fig Pattern?

Wzorzec został po raz pierwszy opisany w 2004 roku przez Martina Fowlera, zainspirowanego fikusami duszącymi, które zaobserwował w australijskim lesie deszczowym. Nazwa pochodzi od fikusów duszących (Ficus, ang. Strangler Fig) — roślin, które oplatają istniejące drzewo, stopniowo przejmują jego funkcje i w końcu całkowicie je zastępują.

Przeniesione na grunt migracji oprogramowania oznacza to: zamiast wymieniać cały system za jednym zamachem, poszczególne procesy i funkcje są stopniowo przenoszone do nowego systemu. Stary system działa równolegle, dopóki nie zostanie w pełni zastąpiony.

Podstawowa idea opiera się na trzech zasadach:

Migracja przyrostowa — procesy są przenoszone jeden po drugim, nie wszystkie naraz.

Facade jako warstwa sterująca ruchem — warstwa pośrednia (Facade) kieruje żądania do starego lub nowego systemu.

Rollback w każdej chwili — jeśli przeniesiony proces nie działa zgodnie z oczekiwaniami, ruch przez Facade można natychmiast przekierować z powrotem na stary system.

Strangler Fig Pattern — przegląd: Facade kieruje ruch między systemem legacy a nowym systemem
Kiedy Strangler Fig Pattern się opłaca?

Nie każda migracja wymaga tego wzorca. Przy małych, prostych systemach całkowita wymiana może być bardziej efektywna. Strangler Fig Pattern sprawdza się tam, gdzie system jest na tyle duży i złożony, że stopniowa migracja jest uzasadniona.

Kiedy co wybrać: Strangler Fig vs. pełna wymiana
Kryterium Pełna wymiana Strangler Fig Pattern
Wielkość systemu Mały (kilka procesów) Duży (wiele procesów/modułów)
Tolerancja na przestoje Wysoka Niska
Złożoność zależności Niska Wysoka
Migracja danych Prosta, jednorazowa Złożona, wymaga podejścia przyrostowego
Wymagania dotyczące rollbacku Akceptowalna bez rollbacku Rollback musi być możliwy w każdym momencie
Czas trwania projektu Krótki (tygodnie) Długi (miesiące do lat)

Praktyczna zasada: Gdy system obsługuje więcej niż kilka ściśle powiązanych procesów biznesowych, ma aktywnych użytkowników, a jego awaria oznacza straty dla firmy — Strangler Fig Pattern jest bezpieczniejszym wyborem.

Identyfikacja i priorytetyzacja procesów

Zanim migracja się rozpocznie, wszystkie procesy i funkcje starego systemu muszą zostać zinwentaryzowane, skategoryzowane i uporządkowane według priorytetów. Kluczowe są dwa wymiary:

Ryzyko vs. wartość biznesowa
Wysoka wartość biznesowa Niska wartość biznesowa
Wysokie ryzyko Starannie zaplanować, migrować później — tu jest najwięcej zależności i największe potencjalne straty Krytycznie ocenić — czy migracja się opłaca, czy proces można wycofać?
Niskie ryzyko Migrować w pierwszej kolejności — szybka wartość biznesowa przy niskim ryzyku Migrować na końcu lub całkowicie wyłączyć, jeśli proces nie jest już potrzebny

Optymalna kolejność: Zacznij od procesów o niskim ryzyku i wysokiej wartości biznesowej. To szybko daje widoczne rezultaty i buduje zaufanie w zespole oraz wśród interesariuszy.

Jednocześnie analiza daje okazję do zidentyfikowania procesów, które nie są już w ogóle potrzebne. Systemy legacy przez lata obrastają funkcjami, z których nikt nie korzysta — migracja to właściwy moment, żeby świadomie je wyłączyć.

Facade: serce migracji

Facade to centralna warstwa sterująca w Strangler Fig Pattern. Znajduje się między klientami a systemami backendowymi i decyduje, dokąd kierować ruch.

Jak działa Facade

Przed migracją: Facade kieruje cały ruch do starego systemu.

W trakcie migracji: Procesy są przełączane jeden po drugim. Przeniesione procesy trafiają do nowego systemu, pozostałe nadal obsługuje stary.

Po migracji: Stary system jest w pełni zastąpiony. Facade można usunąć — albo pozostawić jako warstwę zarządzania API, np. w celu zapewnienia wstecznej kompatybilności dla starszych klientów.

Zalety Facade

Rollback w każdej chwili: Jeśli przeniesiony proces nie działa jak należy, ruch jest natychmiast przekierowywany z powrotem na stary system.

Testy A/B: Stary i nowy proces mogą działać równolegle, co pozwala porównać zachowanie i wydajność.

Praca równoległa: W idealnym scenariuszu klienci nie zauważają migracji — Facade ukrywa przed nimi całą złożoność.

Strangler Fig Pattern: scenariusz rollbacku — Facade przekierowuje ruch z powrotem do systemu legacy
Typowe scenariusze migracji

Strangler Fig Pattern nie jest ograniczony do konkretnego stacku technologicznego. Sprawdza się wszędzie tam, gdzie rozbudowany system ma być stopniowo zastępowany. Oto najczęstsze scenariusze:

Migracja monolitu na mikroserwisy — Monolityczny system jest stopniowo rozkładany na poszczególne mikroserwisy. Każdy serwis przejmuje jasno wydzielony proces. Facade steruje tym, które żądania nadal trafiają do monolitu, a które obsługuje już nowy serwis.

Wymiana platformy integracyjnej — Rozbudowane platformy integracyjne łączą często dziesiątki systemów. Pełna wymiana jest tu szczególnie ryzykowna, bo każda integracja ma własne formaty danych, protokoły i obsługę błędów. Dzięki Strangler Fig Pattern integracje są przenoszone na nową platformę jedna po drugiej. Przykład: migracja integracji BizTalk na usługi Azure — np. Logic Apps, Azure Functions, Service Bus i API Management.

Migracja z on-premises do chmury — Lokalna infrastruktura jest stopniowo przenoszona do chmury. Poszczególne obciążenia (workloady) migrują jedno po drugim, a Facade steruje ruchem między środowiskiem on-premises a chmurą. Dzięki temu korzyści z chmury można czerpać wcześnie, bez konieczności przestawiania całej infrastruktury naraz.

Modernizacja legacy frontendu — Starsze aplikacje desktopowe lub przestarzałe interfejsy webowe są stopniowo zastępowane nowoczesnymi frontendami. Poszczególne obszary lub moduły interfejsu są przebudowywane jeden po drugim, podczas gdy reszta aplikacji działa bez zmian. Facade kieruje użytkowników do starego lub nowego interfejsu w zależności od modułu. Warunek: logika biznesowa nie może być na stałe wbudowana w warstwę UI. Jeśli tak jest, trzeba ją wcześniej wydzielić do osobnych serwisów.

Zależności i dane: niedoceniane wyzwanie

Największym wyzwaniem w Strangler Fig Pattern rzadko jest migracja samej logiki — to dostępność i migracja danych.

Na co zwrócić uwagę

Dostęp do danych: W trakcie pracy równoległej zarówno stary, jak i nowy system muszą mieć dostęp do spójnych danych. Kto zapisuje i gdzie? Który system jest źródłem prawdy?

Migracja danych: Dane muszą być przenoszone przyrostowo, nie wszystkie naraz. Wymaga to jasnej strategii synchronizacji i rozwiązywania konfliktów.

Śledzenie zależności: Przeniesione procesy mogą zależeć od danych, które nadal znajdują się w starym systemie — i odwrotnie. Te zależności trzeba dokumentować i aktywnie zarządzać nimi na bieżąco.

Dokładne i przyrostowe zarządzanie już przeniesionymi procesami i funkcjami jest kluczowe dla powodzenia całego projektu.

Zapewnienie widoczności: monitoring jako bonus

Systemy legacy często cierpią na brak widoczności — monitoring jest szczątkowy lub nie istnieje, brakuje metryk i alertów. Migracja to idealna okazja, żeby ten deficyt nadrobić.

Każdy przeniesiony proces można od samego początku wyposażyć w monitoring, logowanie i alerty. To nie tylko zapewnia bezpieczeństwo operacyjne nowych komponentów, ale też poprawia ogólną przejrzystość systemu. Korzyść, która wykracza daleko poza sam projekt migracyjny.

Największe ryzyko: zbyt wiele naraz

Strangler Fig Pattern działa, ponieważ dzięki zasadzie dziel i zwyciężaj czyni złożoność zarządzalną. Największe ryzyko polega na złamaniu tej zasady.

Kuszące jest przenoszenie kilku procesów jednocześnie, bo zespół wierzy, że da radę ogarnąć złożoność. Ale właśnie to prowadzi do problemów, których wzorzec miał pomóc uniknąć:

Zależności zostają przeoczone

Rollback staje się skomplikowany lub niemożliwy

Błędy trudniej zlokalizować

Dyscyplina w przenoszeniu procesów jeden po drugim to kluczowy czynnik sukcesu. Chodzi o minimalizację ryzyka — nie o to, żeby skończyć jak najszybciej.

Strangler Fig Pattern zdejmuje z zespołu presję czasową. Niespodziewana złożoność czy braki w wiedzy trafiają każdy projekt migracyjny. Plan projektu można wtedy dostosować bez narażania całego przedsięwzięcia. Odpowiedzialność przechodzi stopniowo ze starego systemu na nowy — w sposób kontrolowany i przejrzysty.

Podsumowanie

Strangler Fig Pattern nie jest narzędziem na każdą migrację, ale na te najtrudniejsze: duże, rozbudowane systemy legacy z aktywnymi użytkownikami, lukami w dokumentacji i wysoką krytycznością biznesową.

Podstawowe zasady:

Migruj przyrostowo — jeden proces po drugim

Wykorzystuj Facade — steruj ruchem, umożliwiaj rollback, zapewniaj pracę równoległą

Minimalizuj ryzyko — nie maksymalizuj prędkości

Traktuj dane jako osobne wyzwanie — aktywnie planuj dostępność, synchronizację i migrację danych

Zapewnij widoczność — wbuduj monitoring od samego początku

Na końcu mamy w pełni zastąpiony system legacy — przeniesiony krok po kroku, bez zbędnego ryzyka i z ciągłą wartością biznesową na każdym etapie.

Strangler Fig Pattern: pełna migracja zakończona — Facade kieruje cały ruch do nowego systemu