Strangler Fig pattern

Azure Migrate

Přírůstkově migruje starší verzi systému, a to postupným nahrazením jednotlivých konkrétních funkcí novými aplikacemi a službami. S tím, jak se nahrazují funkce starší verze systému, nahradí nový systém nakonec všechny funkce starého systému a starý systém se utlumí a bude možné ho vyřadit z provozu.

Kontext a problém

Jak systémy stárnou, můžou postupně zastarávat také nástroje pro vývoj, technologie hostování a dokonce i architektury systému, na kterých jsou systémy založené. Při přidávání nových funkcí se složitost těchto aplikací se může výrazně zvýšit, což bude znamenat, že bude těžší je udržovat nebo přidávat k nim nové funkce.

Úplná výměna složitého systému může být velmi náročná. Často bude nutné migrovat na nový systém postupně a zachovat starý systém, ve kterém bude možné používat funkce, které se zatím nemigrovaly. Při spuštění dvou samostatných verzí aplikací ale budou klienti potřebovat vědět, kde jsou umístěné konkrétní funkce. Pokaždé, když se migruje funkce nebo služba, je potřeba aktualizovat klienty tak, aby ukazovali na nové umístění.

Řešení

Postupně nahrazujte jednotlivé funkce novými aplikacemi a službami. Vytvořte průčelí, které bude přijímat žádosti, které směřují do starší verze systému back-end. Toto průčelí bude směrovat tyto žádosti do starší aplikace nebo na nové služby. Existující funkce se můžou do nového systému migrovat postupně a spotřebitelé můžou dál používat stejné rozhraní, aniž by měli povědomí o tom, že probíhá nějaká migrace.

Diagram vzoru Strangler Fig

Tento model pomáhá minimalizovat rizika vyplývající z migrace a rozložit náročnost vývoje v čase. S průčelím, které bude bezpečně směrovat uživatele do správné aplikace, můžete přidávat k novému systému funkce libovolným tempem a přitom zajistit, že bude starší verze aplikace dál fungovat. Postupně, jak se budou funkce migrovat do nového systému, starší verze systému se nakonec utlumí a dál už ji nebudete potřebovat. Po dokončení tohoto procesu bude možné starší systém bezpečně vyřadit z provozu.

Problémy a důležité informace

  • Zvažte možnosti, jak naložit se službami a úložišti dat, které potenciálně používají nové i starší verze systémů. Zajistěte, aby obě tyto verze měly současný přístup.
  • Strukturujte nové aplikace a služby způsobem, který lze snadno zachytit a nahradit v budoucích škrtglerových fíkových migracích.
  • V určitém okamžiku, kdy je migrace dokončena, se uškrtil obr. fasáda buď zmizí, nebo se bude vyvíjet jako adaptér pro starší klienty.
  • Průčelí musí držet tempo s migrací.
  • Nesmí se z něj stát místo, kde dochází k chybám nebo se snižuje výkon.

Kdy se má tento model použít

Tento model použijte tehdy, když chcete postupně migrovat aplikace back-end na novou architekturu.

Tento model nebude pravděpodobně vhodný v následujících případech:

  • V situacích, kdy není možné zachytit žádosti na systém back-end.
  • U menších systémů, kde se nejedná o složité nahrazení ve velkém měřítku.

Návrh úloh

Architekt by měl vyhodnotit způsob použití modelu Strangler Fig v návrhu úlohy k řešení cílů a principů popsaných v pilířích architektury Azure Well-Architected Framework. Příklad:

Pilíř Jak tento model podporuje cíle pilíře
Rozhodnutí o návrhu spolehlivosti pomáhají vaší úloze stát se odolnou proti selhání a zajistit, aby se po selhání obnovila do plně funkčního stavu. Přírůstkový přístup tohoto modelu může pomoct zmírnit rizika během přechodu komponent vs.

- RE:08 Testování
Optimalizace nákladů se zaměřuje na udržení a zlepšení návratnosti vašich úloh. Cílem tohoto přístupu je maximalizovat využití stávajících investic do aktuálně běžícího systému při postupné modernizaci, například umožňuje provádět vysoce návratnost investic před nahrazeními s nízkou návratností investic.

- CO:07 Náklady na komponenty
- CO:08 Náklady na prostředí
Efektivita provozu pomáhá poskytovat kvalitu úloh prostřednictvím standardizovaných procesů a týmové soudržnosti. Tento model poskytuje nepřetržitý přístup ke zlepšování, ve kterém je upřednostňované přírůstkové nahrazení malými změnami v průběhu času místo velkých systémových změn, které jsou pro implementaci rizikové.

- Vývoj úloh OE:06
- Postupy bezpečného nasazení OE:11

Stejně jako u jakéhokoli rozhodnutí o návrhu zvažte jakékoli kompromisy proti cílům ostatních pilířů, které by mohly být s tímto vzorem zavedeny.

Další kroky