Strangler Fig-mönster

Azure Migrate

Migrera ett äldre system stegvis genom att gradvis ersätta specifika delar av funktionerna med nya program och tjänster. Vartefter funktioner från det äldre systemet byts ut kommer det nya systemet så småningom att byta ut alla funktioner från det gamla systemet, vilket hindrar det gamla systemet och gör att du kan ta det ur drift.

Kontext och problem

När systemen åldras kan utvecklingsverktygen, värdtekniken och till och med systemarkitekturen som de har byggts på bli allt mer föråldrade. Vartefter nya egenskaper och funktioner läggs till kan programmens komplexitet öka dramatiskt, vilket gör dem svårare att underhålla eller lägga till nya funktioner i.

Det kan innebära enormt mycket arbete att byta ut ett komplext system. Man behöver ofta göra en gradvis migrering till ett nytt program, så att det gamla systemet fortsätter att hantera funktioner som inte har migrerats än. Att köra två separata versioner av ett program innebär dock att klienterna måste veta var vissa funktioner finns. Varje gång en funktion eller tjänst migreras måste klienterna uppdateras så att de pekar mot den nya platsen.

Lösning

Byt gradvis ut specifika delar av funktionerna med nya program och tjänster. Skapa en fasad som fångar upp begäranden som går till det äldre serverdelssystemet. Fasaden leder dessa begäranden antingen till det äldre programmet eller de nya tjänsterna. Befintliga funktioner kan migreras gradvis till det nya systemet, och konsumenterna kan fortsätta att använda samma gränssnitt utan att veta att migrering har skett.

Diagram över Strangler Fig-mönstret

Det här mönstret hjälper till att minimera risken med migreringen och sprider ut utvecklingsarbetet under en längre tid. När fasaden leder användare på ett säkert sätt till rätt program kan du lägga till funktioner i det nya systemet i den hastighet du önskar, samtidigt som du ser till att det äldre programmet fortsätter att fungera. Vartefter funktioner med tiden migreras till det nya systemet kommer det äldre systemet så småningom att "hindras" och det behövs inte längre. När den här processen är klar går det att ta bort det äldre systemet på ett säkert sätt.

Problem och överväganden

  • Fundera över hur du ska hantera tjänster och datalager som eventuellt används av både nya och äldre system. Se till att båda kan komma åt dessa resurser sida vid sida.
  • Strukturera nya program och tjänster på ett sätt som enkelt kan fångas upp och ersättas i framtida strypning av fikonmigreringar.
  • Vid något tillfälle, när migreringen är klar, kommer den strypade fikonfasaden antingen att försvinna eller utvecklas till en adapter för äldre kunder.
  • Se till att fasaden håller jämna steg med migreringen.
  • Se till att fasaden inte blir en felkritisk systemdel eller en flaskhals för prestanda.

När du ska använda det här mönstret

Använd det här mönstret vid gradvis migrering av ett serverdelsprogram till en ny arkitektur.

Det här mönstret kanske inte lämpar sig:

  • När begäranden till serverdelsystem inte kan fångas upp.
  • Vid mindre system där komplexiteten i bytet är låg.

Design av arbetsbelastning

En arkitekt bör utvärdera hur Strangler Fig-mönstret kan användas i arbetsbelastningens design för att uppfylla de mål och principer som beskrivs i grundpelarna i Azure Well-Architected Framework. Till exempel:

Grundpelare Så här stöder det här mönstret pelarmål
Beslut om tillförlitlighetsdesign hjälper din arbetsbelastning att bli motståndskraftig mot fel och se till att den återställs till ett fullt fungerande tillstånd när ett fel inträffar. Det här mönstrets inkrementella metod kan bidra till att minska riskerna under en komponentövergång jämfört med stora systemändringar.

- RE:08-testning
Kostnadsoptimering fokuserar på att upprätthålla och förbättra arbetsbelastningens avkastning på investeringen. Målet med den här metoden är att maximera användningen av befintliga investeringar i det system som körs samtidigt som du moderniserar inkrementellt, eftersom det gör att du kan utföra hög ROI-ersättningar före ersättningar med låg ROI.

- CO:07 Komponentkostnader
- CO:08 Miljökostnader
Operational Excellence hjälper till att leverera arbetsbelastningskvalitet genom standardiserade processer och teamsammanhållning. Det här mönstret ger en kontinuerlig förbättringsmetod, där inkrementell ersättning med små ändringar över tid föredras snarare än stora systemförändringar som är mer riskfyllda att implementera.

- OE:06 Arbetsbelastningsutveckling
- Distributionsmetoder för OE:11 Valv

Som med alla designbeslut bör du överväga eventuella kompromisser mot målen för de andra pelarna som kan införas med det här mönstret.

Nästa steg