Van monolith naar microservices met behulp van het strangler pattern
Het strangler pattern is een techniek uit Dave Farley's 'Continuous Delivery' voor het transformeren van een monolithisch softwaresysteem naar een op microservices gebaseerde architectuur. Het omvat het geleidelijk vervangen van delen van een groot monolithisch softwaresysteem door kleinere microservices, waardoor de monolith na verloop van tijd wordt "gewurgd" totdat deze volledig is vervangen. De naam 'strangler pattern' is afgeleid van de wurgliaan die op een andere boom groeit en deze als fysieke steun gebruikt, terwijl hij ook zonlicht en voedingsstoffen van de boom steelt, wat uiteindelijk de gastheerplant doodt.
Stap voor stap
Hier zijn de stappen om een monolithisch softwaresysteem te transformeren naar een op microservices gebaseerde architectuur met behulp van het strangler pattern:
- Bepaal de grenzen: De eerste stap is het identificeren van de afzonderlijke grenzen binnen het monolithische systeem die kunnen worden opgesplitst in afzonderlijke microservices. Dit kan gebeuren op basis van zakelijke mogelijkheden, functionele domeinen of technische afhankelijkheden.
- Bepaal de interfaces: Zodra de grenzen zijn bepaald, is de volgende stap het definiëren van de interfaces tussen de microservices en de monoliet. Dit omvat het specificeren van de gegevens die zullen worden uitgewisseld tussen de microservices en de monoliet en de API's die zullen worden gebruikt voor de communicatie. (tip: gebruik technieken uit Domain Driven Design om dit proces te begeleiden)
- Implementeer de microservices: Als de interfaces gedefinieerd zijn, is de volgende stap om de microservices één voor één te implementeren. Dit houdt in dat je een nieuwe service maakt die een klein deel van de functionaliteit van de monolith implementeert en de API definieert die gebruikt zal worden voor de communicatie.
- Routeer het verkeer naar de microservices: De volgende stap is om het verkeer naar hen te routeren zodra de microservices geïmplementeerd zijn. Dit kan gedaan worden door geleidelijk de routeringsregels van de monoliet aan te passen om verkeer naar de microservices te sturen in plaats van naar de monoliet.
- Bruik de monoliet: Naarmate meer en meer verkeer naar de microservices wordt gerouteerd, wordt de monoliet minder kritisch. Uiteindelijk, wanneer microservices alle functionaliteit van de monoliet hebben vervangen, kan de monoliet buiten gebruik worden gesteld.
Het strangler pattern is een geleidelijk en iteratief proces; het is belangrijk om klein te beginnen en je eerst te richten op de meest kritieke onderdelen van de monoliet. Na verloop van tijd kan steeds meer functionaliteit worden gemigreerd naar microservices totdat de monoliet niet langer nodig is.
Het schip van Theseus
Het verhaal van het schip van Theseus is een filosofische paradox die de vraag oproept naar identiteit in de tijd. Het verhaal gaat dat de Atheners het schip van Theseus in een dok bewaarden als een gedenkteken voor hun held. Naarmate de jaren verstreken, begonnen de planken van het schip te rotten en werden ze één voor één vervangen totdat er geen originele plank meer overbleef. De vraag rijst dan: is het schip dat overblijft nog steeds het schip van Theseus, of is het een geheel nieuw schip?
Op dezelfde manier houdt het strangler pattern in dat delen van een monolithisch softwaresysteem geleidelijk worden vervangen door microservices totdat het oorspronkelijke systeem volledig is vervangen. De vraag rijst dan: is het resulterende systeem nog steeds hetzelfde systeem als de oorspronkelijke monoliet, of is het een volledig nieuw systeem?
In beide gevallen wordt de identiteit van de oorspronkelijke entiteit in twijfel getrokken door de geleidelijke vervanging van de samenstellende delen. In het geval van het strangler pattern is het resulterende systeem functioneel nog steeds hetzelfde als de oorspronkelijke monoliet, maar het is geherstructureerd tot een nieuwe architectuur.
Conclusie
Uiteindelijk illustreren het Schip van Theseus verhaal en het strangler pattern de uitdagingen van de geleidelijke vervanging van onderdelen van een groter systeem (monoliet/schip). Beide gevallen roepen vragen op over continuïteit en verandering. Het strangler pattern is de beste manier om een anders extreem riskante vervangingsoperatie van een monoliet minder risicovol te maken. Als je zorgvuldig plant welke delen van de monoliet in welke volgorde migreren, kun je veilig genieten van een transformatie die anders veel hartzeer en stress zou veroorzaken.
Softwareontwikkeling ontmoeilijken
Laat ZEN Software uw softwareontwikkeling analyseren en optimaliseren.
Read more:
Van monolith naar microservices met behulp van het strangler pattern
Het strangler pattern is een techniek uit Dave Farley's 'Continuous Delivery' voor het transformeren van een monolithisc...
Amazon Prime Video ruilt Microservices in voor Monolith: 90% kostenreductie
Onlangs publiceerde Amazon Prime Video een verrassend artikel [waarin ze onthulden hoe ze 90%](https://www.primevideotec...
Continuous Delivery 3.0 training
For the 6 week long NISI training Continuous Delivery 3.0 hosted at the Universiteit Utrecht I was guest trainer for the...
AI is het ontbrekende stukje van de productiviteitspuzzel
Vandaag wil ik betogen dat Kunstmatige Intelligentie (AI) het ontbrekende stukje van de productiviteitspuzzel is, een re...
Obeya, Cloud transformation Start
“Obeya” or ‘big room’ is what we used at Maxeda to jump start our Cloud Transformation and implementation of new cloud b...
Strategy & OKR at home
With the first wave of COVID-19 behind us and offices still not completely available we decided to meet in person, at 1,...