Strangler Fig Pattern
Das Strangler Fig Pattern beschreibt die schrittweise Ablösung eines Legacy-Systems: Neuer Code wächst parallel um das alte System herum, übernimmt nach und nach einzelne Funktionen, bis das Legacy-System vollständig ersetzt ist und abgeschaltet werden kann. Kein Big-Bang-Rewrite, kein Systemstillstand.
Der Name kommt von der Feigenart, die einen Wirtsbaum langsam umwächst und schliesslich ersetzt.
Warum kein Big-Bang-Rewrite?
Big-Bang-Rewrites scheitern regelmässig: Der neue Code muss alle Funktionen des alten Systems nachbauen, gleichzeitig neue Features liefern und dabei monatelang ohne produktiven Mehrwert existieren. Das Risiko ist extrem hoch.
Das Vorgehen
- Facade / Proxy aufbauen: Ein HTTP-Proxy oder API-Gateway wird vor das Legacy-System gestellt. Alle Anfragen laufen zunächst unverändert durch.
- Ersten Use Case extrahieren: Eine klar abgegrenzte Funktion (Bounded Context) wird im neuen System neu implementiert.
- Traffic umleiten: Der Proxy leitet Anfragen für diesen Use Case ab sofort an das neue System.
- Iterieren: Schritt 2 und 3 werden für weitere Use Cases wiederholt.
- Legacy abschalten: Wenn alle Funktionen migriert sind, wird das Legacy-System stillgelegt.
Der Fokus: Immer lieferfähig bleiben
Nach jedem Schritt ist das Gesamtsystem produktionsfähig. Das Business läuft ununterbrochen.
FAQ
Wie lange dauert eine Strangler-Fig-Migration?
Das hängt von der Grösse des Legacy-Systems ab. Typisch sind 6-24 Monate für ein mittelgrosses System. Die Iteration muss aber von Anfang an konsequent sein, sonst entsteht ein dauerhafter Parallelbetrieb.
Was ist, wenn das Legacy-System keine klaren APIs hat?
Dann ist der erste Schritt, eine Anti-Corruption Layer (ACL) zu bauen, die das Legacy-System sauber kapselt. Erst dann kann schrittweise migriert werden.
Reference Guide
- Martin Fowler: Originalbeschreibung des Musters. martinfowler.com/bliki/StranglerFigApplication.html
- Monolith to Microservices (Newman): Praktische Migrationsmuster. O'Reilly