Een verouderd systeem incrementeel migreren door specifieke functionaliteit geleidelijk te vervangen door nieuwe toepassingen en services. Terwijl functies van het oude systeem worden vervangen, vervangt het nieuwe systeem uiteindelijk alle functies van het oude systeem, waarbij het oude systeem wordt onderdrukt zodat u het uit bedrijf kunt nemen.
Context en probleem
Naarmate systemen ouder worden, kunnen ook de ontwikkelhulpprogramma's, hostingtechnologie en zelfs de architecturen waarop die systemen zijn gebaseerd, in onbruik raken. Als er nieuwe functies en functionaliteit worden toegevoegd, kan de complexiteit van deze toepassingen aanzienlijk toenemen, wat het onderhoud ervan of het toevoegen van nieuwe functies moeilijker maakt.
Een complex systeem volledig vervangen kan een gigantische onderneming zijn. Vaak zal er een geleidelijke migratie naar een nieuw systeem nodig zijn, waarbij het oude systeem blijft behouden voor het afhandelen van functies die nog niet zijn gemigreerd. Het gebruik van twee afzonderlijke versies van een toepassing betekent echter wel dat clients moeten weten waar bepaalde functies zich precies bevinden. Telkens wanneer er een functie of service wordt gemigreerd, moeten clients worden bijgewerkt om naar de nieuwe locatie te verwijzen.
Oplossing
Specifieke functionaliteit geleidelijk vervangen door nieuwe toepassingen en services. Maak een gevel waarmee aanvragen naar het verouderde back-endsysteem worden onderschept. De gevel stuurt deze aanvragen door naar de verouderde toepassing of de nieuwe services. Bestaande functies kunnen geleidelijk aan worden gemigreerd naar het nieuwe systeem en gebruikers kunnen met dezelfde interface blijven werken, zonder enige weet te hebben van de migratie die heeft plaatsgevonden.
Dit patroon helpt bij het verlagen van het risico als gevolg van de migratie en bij de verdere implementatie in de loop van de tijd. Met de gevel veilig doorsturen van gebruikers naar de juiste toepassing, kunt u functionaliteit toevoegen aan het nieuwe systeem in elk tempo dat u wilt, terwijl ervoor zorgt dat de verouderde toepassing blijft functioneren. Na verloop van tijd, terwijl functies naar het nieuwe systeem worden gemigreerd, wordt het oude systeem uiteindelijk 'de nek omgedraaid' omdat het niet meer nodig is. Zodra dit proces voltooid is, kan het oude systeem veilig buiten gebruik worden gesteld.
Problemen en overwegingen
- Denk na over de verwerking van services en gegevensarchieven die door zowel de nieuwe als bestaande systemen kunnen worden gebruikt. Zorg ervoor dat beide toegang tot deze resources hebben.
- Structureer nieuwe toepassingen en services op een manier die ze eenvoudig kunnen worden onderschept en vervangen in toekomstige strangler fig-migraties.
- Op een bepaald moment, wanneer de migratie is voltooid, zal de strangler fig façade verdwijnen of zich ontwikkelen tot een adapter voor verouderde clients.
- Zorg ervoor dat de gevel de migratie bijhoudt.
- Zorg ervoor dat de gevel geen single point of failure wordt of een prestatieknelpunt.
Wanneer dit patroon gebruiken
Gebruik dit patroon bij de geleidelijke migratie van een back-endtoepassing naar een nieuwe architectuur.
Dit patroon is mogelijk niet geschikt in de volgende gevallen:
- Wanneer aanvragen voor het back-endsysteem niet kunnen worden onderschept.
- Voor kleinere systemen waarbij de vervanging op grote schaal laag niet complex is.
Workloadontwerp
Een architect moet evalueren hoe het Strangler Fig-patroon kan worden gebruikt in het ontwerp van hun workload om de doelstellingen en principes te verhelpen die worden behandeld in de pijlers van het Azure Well-Architected Framework. Voorbeeld:
Pijler | Hoe dit patroon ondersteuning biedt voor pijlerdoelen |
---|---|
Beslissingen over betrouwbaarheidsontwerp helpen uw workload bestand te worden tegen storingen en ervoor te zorgen dat deze herstelt naar een volledig functionerende status nadat er een fout is opgetreden. | De incrementele benadering van dit patroon kan helpen bij het beperken van risico's tijdens een onderdeelovergang versus grote systemische wijzigingen. - RE:08 Testen |
Kostenoptimalisatie is gericht op het ondersteunen en verbeteren van het rendement van uw workload op investering. | Het doel van deze aanpak is om het gebruik van bestaande investeringen in het huidige actieve systeem te maximaliseren en incrementeel te moderniseren, zodat u met een hoog RENDEMENT vervanging kunt uitvoeren vóór vervangingen met een lage ROI. - CO:07 Componentkosten - CO:08 Omgevingskosten |
Operational Excellence helpt bij het leveren van workloadkwaliteit via gestandaardiseerde processen en teamcohesie. | Dit patroon biedt een continue verbeteringsbenadering, waarbij incrementele vervanging met kleine wijzigingen in de loop van de tijd de voorkeur heeft in plaats van grote systeemwijzigingen die riskanter zijn om te implementeren. - OE:06 Workloadontwikkeling - Veilige implementatieprocedures voor OE:11 |
Net als bij elke ontwerpbeslissing moet u rekening houden met eventuele compromissen ten opzichte van de doelstellingen van de andere pijlers die met dit patroon kunnen worden geïntroduceerd.
Volgende stappen
- Blogpost van Martin Fowler over StranglerFigApplication