Van monolith naar microservices met behulp van het strangler pattern

Crowds of fun-seekers exploring a city on foot, "

Arjan Franzen

20 April 2023

Vision-care with style: stylish goggles protect eyes & music artist in

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:

  1. 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.
  2. 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)
  3. 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.
Trees: sturdy trunks, twisted twigs, and lush branches

de wurgerplant

  1. 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.
  2. 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.

"Modern software: Zello, Original & Monolith w/ DB,

Monolith naar Microservice met behulp van het strangler pattern

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.

A boat sailing across an azure afterglow on a calm body

AI-schip van Theseus

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.

background

Softwareontwikkeling ontmoeilijken

Laat ZEN Software uw softwareontwikkeling analyseren en optimaliseren.