[MELDEN] Von der Vision zum Code: Ein Leitfaden zur Ausrichtung der Geschäftsstrategie auf die Ziele der Softwareentwicklung ist veröffentlicht!
HOL ES DIR HIER

Migration von Monolith zu Microservices mit Strangler Pattern

readtime
Last updated on
February 17, 2025

A QUICK SUMMARY – FOR THE BUSY ONES

10 Phasen der Migration von Monolith zu Microservices

1. Identifizieren und isolieren Sie Komponenten

2. Baue die Strangler-Fassade

3. Entwerfen und entwickeln Sie Microservices

4. Entwickeln Sie eine Strategie für Datenmigration und -management

5. Funktionen schrittweise ersetzen

6. Testen Sie jeden Microservice

7. Richten Sie eine kontinuierliche Bereitstellung und Integration ein

8. Den Monolithen schrittweise außer Betrieb nehmen

9. Überwachen und optimieren Sie die Leistung

10. Aktualisieren Sie die Dokumentation und teilen Sie Wissen

TABLE OF CONTENTS

Migration von Monolith zu Microservices mit Strangler Pattern

Einführung

In diesem Artikel führen wir Sie durch 10 Phasen und 21 detaillierte Schritte der Migration von Monolith zu Microservices mithilfe des Strangler-Musters.

Was sonst?

  • Beispiel für eine Migration unter Verwendung des Strangler-Pattern- und Trickle-Ansatzes bei der Datenmigration,
  • eine Reihe wichtiger Informationen über potenzielle Risiken (mit Tipps zur Minderung),
  • potenzielle Vorteile der Migration.

Lass uns eintauchen.

Warum Microservices?

Microservices bieten Skalierbarkeit, technologische Flexibilität, schnellere Bereitstellungen, Widerstandsfähigkeit und einfachere Wartung in komplexen Anwendungen. Sie passen gut zu modernen DevOps-Praktiken und ermöglichen eine bessere Handhabung großer Systeme durch unabhängige Skalierung und Aktualisierung von Diensten.

Warum das Würgermuster?

Das Strangler-Pattern wird für die Migration von einer monolithischen Architektur zu Microservices aufgrund seiner schrittweiser, weniger riskanter Ansatz. Es ermöglicht einen kontrollierten Übergang, indem Teile des Monolithen langsam ausgetauscht werden, wodurch minimale Unterbrechungen und ein kontinuierlicher Betrieb gewährleistet werden.

Dieses Muster ist besonders effektiv beim Risikomanagement, ermöglicht das Lernen während des Übergangs und bietet Flexibilität bei der Priorisierung der Komponenten, die zuerst migriert werden sollen.

Warum Monolith zu Microservices mit einem Würgermuster?

Der Übergang von einem Monolithen zu Microservices mithilfe des Strangler-Musters wird aufgrund seiner Fähigkeit, Komplexität und Risiken während des Migrationsprozesses effektiv zu managen. Dieser Ansatz ermöglicht einen schrittweisen, kontrollierten Übergang, was in großen, komplexen Systemen, in denen eine plötzliche Überarbeitung riskant und störend sein könnte, unerlässlich ist.

Das Strangler Pattern ermöglicht es, die neue Microservice-Architektur zusammen mit dem bestehenden monolithischen System zu erstellen und zu testen, wodurch ein kontinuierlicher Betrieb gewährleistet und Ausfallzeiten minimiert werden. Dieser stufenweise Ansatz ermöglicht es den Teams außerdem, im Laufe ihrer Entwicklung zu lernen und sich anzupassen, wodurch die Wahrscheinlichkeit groß angelegter Ausfälle verringert und ein reibungsloserer, besser kontrollierbarer Übergang ermöglicht wird.

Hauptschritte der Migration von Strangler Pattern für Monolith zu Microservices

Beginnen wir mit den drei Hauptschritten, die alle Phasen beschreiben: Transformieren, Koexistieren, Eliminieren:

Verwandeln

In dieser ersten Phase werden spezifische Funktionen innerhalb der monolithischen Anwendung identifiziert und isoliert, die für die Umwandlung in Microservices geeignet sind.

Bei diesen Funktionen handelt es sich in der Regel um solche, die mit minimalen Abhängigkeiten entkoppelt werden können, oder um solche, die von einer Microservice-Architektur erheblich profitieren würden, wie z. B. Skalierbarkeit oder Leistungsverbesserungen. Sobald diese Komponenten identifiziert sind, werden sie schrittweise in separate, eigenständige Dienste umgewandelt.

Diese Transformation beinhaltet häufig die Neudefinition des Datenmodells, die Entwicklung neuer APIs und die modulare Neuimplementierung der Geschäftslogik.

Koexistieren

Während der Koexistenzphase arbeiten die neuen Microservices neben den verbleibenden Teilen der monolithischen Anwendung. Diese Phase ist entscheidend, um einen kontinuierlichen Betrieb ohne Betriebsunterbrechung sicherzustellen.

Ein wichtiger Aspekt ist dabei die Etablierung von Kommunikationsmechanismen zwischen den Microservices und dem Monolith, die häufig über APIs oder Messaging-Systeme erreicht werden. Diese Phase ermöglicht das iterative Testen und Verfeinern der neuen Microservices in einer Live-Umgebung, um sicherzustellen, dass sie korrekt mit den vorhandenen monolithischen Komponenten interagieren.

Eliminieren

In der letzten Phase werden die verbleibenden Teile des Monolithen systematisch entfernt. Da immer mehr Funktionen in Microservices umgewandelt werden, schrumpft der Monolith und wird weniger komplex. Schließlich werden alle wichtigen Funktionen auf Microservices migriert, und der Monolith kann außer Betrieb genommen werden. Dieser Schritt ist entscheidend, um die Vorteile der Microservices-Architektur voll auszuschöpfen, einschließlich verbesserter Skalierbarkeit, einfacherer Wartung und schnellerer Bereitstellungszyklen.

Während dieses gesamten Prozesses sind sorgfältige Planung und Tests unerlässlich, um sicherzustellen, dass die Systemintegrität gewahrt bleibt und die neue Microservices-Architektur die Anforderungen der Anwendung angemessen unterstützt.

Gehen wir nun zur detaillierteren Ansicht dieses Prozesses über.

Monolith Stück für Stück ersetzen

Eine monolithische Anwendung Stück für Stück zu ersetzen, erfordert einen strategischen und sorgfältig geplanten Ansatz, der in der Regel dem Strangler-Muster folgt. Dieses Muster ermöglicht es Ihnen, Teile des Monolithen schrittweise durch Microservices zu ersetzen.

Hier finden Sie eine schrittweise Anleitung zum Ersetzen des Monolithen durch Microservices, die das Strangler-Muster verwenden. Es ist in 10 Phasen und 21 detaillierte Schritte unterteilt.

1. Identifizieren und isolieren Sie Komponenten

  • Schritt 1: Analysieren Sie den Monolithen. Verstehen Sie zunächst den vorhandenen Monolithen — seine Struktur, Abhängigkeiten und Funktionalitäten.
  • Schritt 2: Identifizieren Sie begrenzte Kontexte. Identifizieren Sie mithilfe der Prinzipien des Domain-Driven Design (DDD) die begrenzten Kontexte innerhalb des Monolithen. Dies sind Kandidaten für Microservices.
  • Schritt 3: Priorisieren Sie Komponenten. Legen Sie die Reihenfolge der Extraktion auf der Grundlage von Faktoren wie Komplexität, Abhängigkeiten und Geschäftswert fest.

2. Baue die Strangler-Fassade

  • Schritt 4: Erstellen Sie eine Fassade. Implementieren Sie eine Strangler-Fassade. Dabei handelt es sich um eine Zwischenschicht, die Anrufe an den Monolithen abfängt und sie entweder an den Monolithen oder an den neuen Microservice weiterleitet.
  • Schritt 5: Routing-Entscheidungen. Die Fassade sollte in der Lage sein, zu bestimmen, ob eine Anfrage vom Monolith oder einem Microservice bearbeitet werden soll.

3. Entwickeln Sie Microservices

  • Schritt 6: Erstellen Sie die Microservices-Architektur. Entwerfen und entwickeln Sie Microservices nach bewährten Methoden. Jeder Microservice sollte lose miteinander verbunden sein, unabhängig einsetzbar sein und sich auf eine einzige Geschäftsfunktion konzentrieren.
  • Schritt 7: Implementieren Sie APIs. Entwickeln Sie APIs für die Kommunikation zwischen den Microservices und dem Monolith.

4. Datenmigration und -verwaltung

  • Schritt 8: Datenstrategie. Planen Sie eine Datenmigrations- und Verwaltungsstrategie. Dies kann das vorübergehende Duplizieren von Daten oder die anfängliche Implementierung eines gemeinsamen Datenbankmusters beinhalten.
  • Schritt 9: Übertragung des Datenbesitzes. Übertragen Sie das Dateneigentum schrittweise vom Monolithen auf die jeweiligen Microservices.

5. Inkrementeller Ersatz

  • Schritt 10: Funktionen migrieren. Fangen Sie an, Funktionen vom Monolithen auf die Microservices zu verlagern. Beginnen Sie mit weniger komplexen oder isolierteren Funktionen.
  • Schritt 11: Routing aktualisieren. Wenn jedes Teil ersetzt wird, aktualisieren Sie die Routing-Regeln in der Strangler-Fassade, um die Anfragen an die neuen Microservices weiterzuleiten.

6. Testen und Qualitätssicherung

  • Schritt 12: Gründliches Testen. Jeder Microservice sollte gründlich getestet werden, einschließlich seiner Integration mit den übrigen Teilen des Monolithen.
  • Schritt 13: Überwachung und Protokollierung. Implementieren Sie eine robuste Überwachung und Protokollierung, um einen reibungslosen Betrieb und eine schnelle Problemlösung zu gewährleisten.

7. Kontinuierlicher Einsatz und Integration

  • Schritt 14: CI/CD-Pipelines. Richten Sie kontinuierliche Integrations- und Bereitstellungs-Pipelines für die neuen Microservices ein.
  • Schritt 15: Feature-Flags. Verwenden Sie Feature-Flags, um neue Funktionen ein- und auszuschalten, ohne neuen Code bereitzustellen.

8. Iterative Außerbetriebnahme

  • Schritt 16: Monolith außer Betrieb nehmen. Nehmen Sie den Monolithen schrittweise Stück für Stück außer Betrieb, um sicherzustellen, dass die Geschäftsfunktionen nicht beeinträchtigt werden.
  • Schritt 17: Datenbankentkopplung. Entkoppeln und demontieren Sie schließlich die monolithische Datenbank.

9. Endbearbeitung und Optimierung

  • Schritt 18: Leistungsoptimierung. Überwachen und optimieren Sie kontinuierlich die Leistung der neuen Microservices.
  • Schritt 19: Refactoring und Verbesserungen. Refaktorieren und optimieren Sie die neuen Dienste nach der Migration, um eine bessere Leistung, Skalierbarkeit und Wartbarkeit zu erzielen.

10. Dokumentation und Wissensaustausch

  • Schritt 20: Dokumentation aktualisieren. Aktualisieren Sie die Dokumentation regelmäßig, um der neuen Architektur und den vorgenommenen Änderungen Rechnung zu tragen.
  • Schritt 21: Teamtraining. Stellen Sie sicher, dass das Entwicklungsteam über die Änderungen auf dem Laufenden ist und in der Wartung und Entwicklung der neuen Microservices-Architektur geschult ist.

Beispiel für eine Migrationsstrategie mit dem Würgermuster und dem Trickle-Ansatz

Um noch mehr ins Detail zu gehen, schauen wir uns das konkrete Beispiel an. In dieser exemplarischen Vorgehensweise konzentrieren wir uns auf die Migration von Monolith zu Microservices mit

  • Strangler-Muster für die Systemmigration
  • Trickle-Ansatz (inkrementell) für die Datenmigration

1. Erste Bewertung und Zersetzungsstrategie

  • Codebasisanalyse: Tauchen Sie tief in die Codebasis des Monolithen ein, um begrenzte Kontexte zu identifizieren. Verwenden Sie die Prinzipien des domänengesteuerten Designs (DDD), um Microservices abzugrenzen.
  • Abbildung von Abhängigkeiten: Verwenden Sie Tools wie die statische Codeanalyse, um Abhängigkeiten innerhalb des Monolithen abzubilden.

2. Implementierung von Strangler Pattern

  • Einführung in die Proxyschicht: Implementieren Sie eine Proxyschicht (z. B. API Gateway), um eingehende Anfragen abzufangen. Diese Ebene entscheidet, ob die Anfrage an den Monolith oder an einen Microservice weitergeleitet werden soll.
  • Inkrementelle Feature-Migration: Migrieren Sie Funktionen nacheinander vom Monolith zu den jeweiligen Microservices. Beginnen Sie mit Modulen mit geringem Risiko oder lose gekoppelten Modulen.
  • Refaktorierung und Domänenmodellierung: Kontinuierliches Refaktorieren Sie den Monolithen während der Migration. Stellen Sie sicher, dass neue Microservices auf Geschäftsfunktionen zugeschnitten sind.

3. Datenmigration: Trickle-Ansatz

  • Schemaanalyse und Microservice-Datenbankdesign: Analysieren Sie das monolithische Datenbankschema. Entwerfen Sie Microservice-spezifische Schemas, die auf die Domäne der einzelnen Dienste abgestimmt sind.
  • Datenmigrationspipeline: Richten Sie eine Datenmigrationspipeline ein. Dies kann ETL-Prozesse, Datenstreaming oder Replikationsmechanismen in Echtzeit beinhalten.
  • Datensynchronisierung: Setzen Sie Techniken wie Change Data Capture (CDC) ein, um die Microservice-Datenbanken während des Übergangs mit der monolithischen Datenbank zu synchronisieren.

4. Infrastruktur und Einsatz

  • Containerisierung und Orchestrierung: Containerisieren Sie die neuen Microservices. Verwenden Sie Orchestrierungstools wie Kubernetes für Bereitstellung und Verwaltung.
  • CI/CD-Pipeline-Anpassung: Passen Sie CI/CD-Pipelines an oder erstellen Sie sie neu, um Microservices zu unterstützen. Implementieren Sie Blue-Green- oder Canary-Bereitstellungen für minimale Ausfallzeiten.

5. Testen und Überwachen

  • Automatisiertes Testen: Nutzen Sie automatisierte Tests auf mehreren Ebenen (Einheit, Integration, Ende-zu-Ende).
  • Verteilte Ablaufverfolgung und Protokollierung: Implementieren Sie verteiltes Tracing (z. B. mithilfe von OpenTelemetry) und zentralisiertes Logging, um den Zustand des Systems zu überwachen und Probleme zu diagnostizieren.

6. Leistungsoptimierung und Skalierung

  • Belastungstests: Führen Sie Belastungstests durch, um die Leistung in verschiedenen Szenarien zu verstehen.
  • Ressourcenoptimierung: Optimieren Sie die Ressourcennutzung auf der Grundlage der Auslastung. Implementieren Sie bei Bedarf automatische Skalierung.

7. Abschluss der Migration

  • Vollständiger Übergang zu Microservices: Der Monolith wird im Zuge der Migration der Dienste schrittweise außer Betrieb genommen.
  • Datenbankentkopplung: Sobald alle relevanten Daten migriert sind, entkoppeln Sie die monolithische Datenbank und nehmen Sie sie außer Betrieb.

8. Verbesserungen nach der Migration

  • Feinabstimmung der Microservices: Optimieren Sie jeden Microservice nach der Migration auf der Grundlage realer Leistungskennzahlen.
  • Erweiterte Beobachtbarkeit: Implementieren Sie fortschrittliche Observability-Lösungen, um tiefere Einblicke in die Systemleistung und das Benutzererlebnis zu erhalten.

Was sind die Herausforderungen des Würgermusters, das bei der Migration zu Microservices verwendet wird?

Das Strangler-Pattern bietet zwar erhebliche Vorteile bei der Migration von einer monolithischen Architektur zu Microservices, birgt aber auch mehrere Herausforderungen, die sorgfältig bewältigt werden müssen:

Komplexes Koexistenzmanagement

Während des Übergangs müssen der Monolith und die neuen Microservices koexistieren und effektiv kommunizieren. Die Verwaltung dieser Koexistenz, insbesondere die Sicherstellung der Datenkonsistenz und die Verwaltung der dienstübergreifenden Kommunikation, kann komplex sein.

So können Sie Folgendes abmildern:

  • Implementieren Sie ein API-Gateway, um die Kommunikation zwischen dem Monolith und den Microservices zu verwalten.
  • Verwenden Sie das Strangler-Muster, um bestimmte Funktionen schrittweise umzuleiten und so eine nahtlose Interaktion zu gewährleisten.

Inkrementeller Refactoring-Aufwand

Die schrittweise Umgestaltung einer monolithischen Anwendung in Microservices kann zeitaufwändig und ressourcenintensiv sein. Er erfordert kontinuierliche Überwachung, Tests und Anpassungen über einen längeren Zeitraum.

So können Sie Folgendes abmildern:

  • Priorisieren Sie die Komponenten für das Refactoring auf der Grundlage des Geschäftswerts und der Komplexität.
  • Wenden Sie agile Methoden an, um den Prozess iterativ und effizient zu verwalten.

Verwaltung von Abhängigkeiten

Abhängigkeiten innerhalb des Monolithen zu identifizieren und zu verwalten, kann eine Herausforderung sein. Es ist wichtig zu verstehen, wie die verschiedenen Teile der Anwendung miteinander verbunden sind, um zu verhindern, dass die Funktionen während der Migration beeinträchtigt werden.

So können Sie Folgendes abmildern:

  • Verwenden Sie Tools für die statische und dynamische Analyse der monolithischen Anwendung, um Abhängigkeiten zu identifizieren und zu verwalten.
  • Refaktorieren Sie in kleinen Schritten und validieren Sie sie nach jedem Schritt, um sicherzustellen, dass das System stabil bleibt.

Probleme bei der Datenmigration

Das Verschieben von Daten von einem monolithischen System zu verteilten Microservices kann schwierig sein, insbesondere wenn es sich um große Datensätze oder komplexe Datenbeziehungen handelt. Die Sicherstellung der Datenintegrität und -konsistenz während dieser Migration ist eine große Herausforderung.

So können Sie Folgendes abmildern:

  • Planen Sie einen schrittweisen Ansatz zur Datenmigration, der mit weniger kritischen Daten beginnt.
  • Verwenden Sie Techniken wie Spiegelung und parallele Läufe, um die Datenintegrität sicherzustellen.

Leistungsgemeinkosten

Die Einführung von Netzwerkaufrufen zwischen dem Monolith und Microservices (bei denen es sich um interne Aufrufe innerhalb des Monolithen handelte) kann zu Latenz- und Leistungskosten führen.

So können Sie Folgendes abmildern:

  • Optimieren Sie Netzwerkanrufe und ziehen Sie nach Möglichkeit asynchrone Kommunikation in Betracht.
  • Überwachen Sie die Leistung genau und skalieren Sie Microservices entsprechend.

Fähigkeiten und Lernkurve

Teams müssen sich möglicherweise weiterbilden oder sich an neue Technologien und Ansätze anpassen, die der Microservices-Architektur innewohnen, wie Containerisierung, Orchestrierung und API-Management. Diese Lernkurve kann den Migrationsprozess verlangsamen.

So können Sie Folgendes abmildern:

  • Investieren Sie in Schulungen und Workshops für Teams zu Microservices-Technologien und Best Practices.
  • Erwägen Sie, Experten für kritische Bereiche einzustellen oder sich von ihnen beraten zu lassen.

Höhere betriebliche Komplexität

Die Verwaltung mehrerer Microservices kann im Gegensatz zu einer einzigen monolithischen Anwendung die betriebliche Komplexität erhöhen. Dazu gehören auch Herausforderungen bei der Überwachung, Protokollierung und Fehlerbehebung verteilter Systeme.

So können Sie Folgendes abmildern:

  • Nutzen Sie automatisierte Tools für die Überwachung, Protokollierung und Verwaltung von Microservices.
  • Verwenden Sie ein Service Mesh für die Verwaltung der Service-to-Service-Kommunikation.

Teilweise Refactoring-Risiken

Es besteht das Risiko, dass am Ende ein teilweise überarbeitetes System entsteht, das die Vorteile von Microservices nicht voll ausnutzt, insbesondere wenn der Migrationsprozess aufgrund von Budget-, Zeit- oder Ressourcenbeschränkungen auf halbem Weg gestoppt wird.

So können Sie Folgendes abmildern:

  • Halten Sie eine klare Roadmap ein und überprüfen Sie regelmäßig die Prioritäten, um sicherzustellen, dass sie mit den Geschäftszielen in Einklang stehen.
  • Vermeiden Sie ein teilweises Refactoring, indem Sie sich auf kleine, überschaubare Releases festlegen.

Konsistenz und Transaktionsmanagement

Die Sicherstellung der Transaktionsintegrität und -konsistenz über verteilte Dienste hinweg ist schwieriger als in einer monolithischen Architektur. Die Implementierung von Strategien wie der letztendlichen Konsistenz erfordert sorgfältiges Design und Testen.

So können Sie Folgendes abmildern:

  • Implementieren Sie Strategien wie letztendliche Konsistenz, kompensierende Transaktionen oder Sagas für ein verteiltes Transaktionsmanagement.
  • Entwerfen und testen Sie diese Muster vor der Implementierung sorgfältig.

Kultureller und organisatorischer Wandel

Die Einführung von Microservices erfordert oft einen Wandel der Unternehmenskultur und -struktur hin zu kleineren, funktionsübergreifenden Teams. Diese Änderung kann schwierig sein und erfordert ein sorgfältiges Management.

So können Sie Folgendes abmildern:

  • Fördern Sie eine Kultur, die Lernen, Experimentieren und Zusammenarbeit unterstützt.
  • Restrukturieren Sie Teams rund um Services (funktionsübergreifende Teams), um mehr Eigenverantwortung und Autonomie zu erzielen.

Potenzial für erhöhte Kosten

Der Migrationsprozess und die letztendliche Microservices-Architektur könnten zu erhöhten Kosten führen, sowohl in Bezug auf die Infrastruktur als auch auf das Betriebsmanagement, insbesondere wenn sie nicht gut optimiert sind.

So können Sie Folgendes abmildern:

  • Führen Sie in jeder Phase eine Kosten-Nutzen-Analyse durch, um sicherzustellen, dass die Budgetbeschränkungen eingehalten werden.
  • Optimieren Sie die Ressourcennutzung mit Cloud-nativen Lösungen und kostengünstiger Infrastruktur.

Überlegungen zur Sicherheit

Der verteilte Charakter von Microservices bringt neue Sicherheitsherausforderungen mit sich, wie z. B. die Sicherung der Kommunikation zwischen Diensten und die Verwaltung mehrerer Angriffsflächen.

So können Sie Folgendes abmildern:

  • Implementieren Sie robuste Sicherheitspraktiken, einschließlich Identitäts- und Zugriffsmanagement, sichere Servicekommunikation und regelmäßige Sicherheitsüberprüfungen.
  • Informieren Sie Teams über die häufigsten Sicherheitslücken in Microservices-Architekturen.

Was sind die Vorteile der Verwendung des Strangler-Musters bei der Migration von Monolith zu Microservices?

Wenn das Strangler-Pattern für die Migration von einer monolithischen Architektur zu einer Microservices-Architektur verwendet wird, bietet es mehrere signifikante Vorteile:

  • Inkrementelle Migration: Das Strangler-Muster ermöglicht die schrittweise Migration von Funktionen vom Monolith zu Microservices. Dieser schrittweise Ansatz reduziert das Risiko von Systemausfällen und ermöglicht eine einfachere Fehlerbehebung und ein Rollback, falls Probleme auftreten.
  • Minimale Störung: Da die Migration schrittweise erfolgt, bleibt die bestehende monolithische Anwendung betriebsbereit, sodass eine kontinuierliche Servicebereitstellung gewährleistet ist. Dies ist besonders wichtig für Unternehmen, die sich keine nennenswerten Ausfallzeiten leisten können.
  • Risikomanagement: Wenn Sie kleine Teile einzeln migrieren, verringert sich das Risiko im Vergleich zu einem vollständigen Neuschreiben. Probleme können frühzeitig erkannt und behoben werden, ohne das gesamte System zu beeinträchtigen, wodurch der Prozess überschaubarer wird.
  • Testen und Qualitätssicherung: Mit kleineren, überschaubareren Änderungen können Tests gründlicher und zielgerichteter durchgeführt werden. Jeder neue Microservice kann gründlich getestet werden, bevor er den entsprechenden Teil des Monolithen ersetzt, wodurch Stabilität und Leistung gewährleistet werden.
  • Lernen und Anpassung: Der schrittweise Charakter des Prozesses ermöglicht es den Teams, zu lernen und sich im Laufe ihrer Entwicklung anzupassen. Mit jedem migrierten Service gewinnt das Team ein besseres Verständnis der Microservices-Architektur und kann diese Erkenntnisse auf nachfolgende Migrationen anwenden.
  • Flexibilität bei der Priorisierung: Das Strangler-Muster ermöglicht es Unternehmen, anhand von Geschäftsanforderungen, technischer Bereitschaft oder anderen Faktoren zu priorisieren, welche Komponenten migriert werden sollen. Diese Flexibilität stellt sicher, dass die kritischsten oder nützlichsten Teile zuerst migriert werden können.
  • Verbesserte Skalierbarkeit und Leistung: Microservices können unabhängig voneinander skaliert werden, was zu einer besseren Ressourcenauslastung und einer besseren Gesamtsystemleistung führen kann, insbesondere für Teile der Anwendung mit unterschiedlichen Skalierungsanforderungen.
  • Modernisierung des Technologie-Stacks: Dieses Muster bietet die Möglichkeit, den Technologie-Stack zu aktualisieren und zu modernisieren. Jeder neue Microservice kann potenziell mithilfe aktuellerer Technologien implementiert werden, die besser auf die Anforderungen des Dienstes zugeschnitten sind.
  • Verbesserte Wartbarkeit: Microservices sind im Allgemeinen einfacher zu warten und zu aktualisieren als eine monolithische Anwendung. Kleinere, klar definierte Codebasen und Dienste sind einfacher zu verstehen und zu modifizieren.
  • Organisatorische Ausrichtung: Der Prozess fördert eine Verlagerung hin zu kleineren, funktionsübergreifenden Teams, die jeweils für bestimmte Dienstleistungen verantwortlich sind. Dies kann die Teamautonomie und die Abstimmung auf die Geschäftskapazitäten verbessern.
  • Bessere Fehlerisolierung: In einer Microservices-Architektur ist es weniger wahrscheinlich, dass ein Ausfall eines Dienstes das gesamte System zum Absturz bringt. Diese Isolierung verbessert die allgemeine Zuverlässigkeit der Anwendung.
  • Iterative Verfeinerung: Die schrittweise Migration ermöglicht eine kontinuierliche Verfeinerung und Verbesserung sowohl des Migrationsprozesses als auch der Microservices selbst.

So fangen Sie an — Ihre nächsten/ersten Schritte:

Wenn Sie Monolith mithilfe des Strangler-Musters zu Microservices migrieren möchten, beginnen Sie reibungslos mit den folgenden 3 Schritten:

Schritt 1: Führen Sie eine umfassende Bewertung des Monolithen durch:

  • Analysieren Sie die bestehende monolithische Anwendung, um ihre Architektur, Funktionen und Abhängigkeiten zu verstehen.
  • Identifizieren Sie begrenzte Kontexte und logische Servicegrenzen innerhalb des Monolithen. Dies hilft bei der Bestimmung, welche Funktionen in Microservices unterteilt werden können.
  • Bewerten Sie die aktuellen Herausforderungen und Einschränkungen des monolithischen Systems, einschließlich Leistungsengpässen, Skalierbarkeitsproblemen und Wartungskomplexitäten.

Schritt 2: Definieren Sie die Ziel-Microservices-Architektur:

  • Stellen Sie sich die endgültige Microservices-Architektur vor und beschreiben Sie, wie jeder Microservice funktionieren, kommunizieren und skalieren wird.
  • Richten Sie den Technologie-Stack und die Tools ein, die für die Microservices erforderlich sind, einschließlich Sprachen, Frameworks, Container-Orchestrierungsplattformen (wie Kubernetes) und CI/CD-Tools.
  • Planen Sie API-Strategien, dienstübergreifende Kommunikation und Datenmanagement in der verteilten Umgebung ein.

Schritt 3: Entwickeln Sie einen detaillierten Migrationsplan mit dem Strangler-Muster:

  • Priorisieren Sie die Komponenten für die Migration, angefangen bei den Komponenten, die weniger komplex sind, weniger Abhängigkeiten aufweisen oder bei der Migration einen erheblichen Geschäftswert bieten.
  • Entwerfen Sie die Strangler-Fassade, eine Zwischenschicht, die Anfragen intelligent zwischen dem Monolith und neuen Microservices weiterleitet.
  • Beschreiben Sie die einzelnen Schritte für die Migration, einschließlich Zeitpläne, Ressourcenzuweisung und Test- und Bereitstellungsphasen.

Frequently Asked Questions

No items found.

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

Authors

Olga Gierszal
github
IT-Outsourcing-Marktanalyst und Redakteur für Softwaretechnik

Enthusiast für Softwareentwicklung mit 8 Jahren Berufserfahrung in der Technologiebranche. Erfahrung im Outsourcing von Marktanalysen, mit besonderem Schwerpunkt auf Nearshoring. In der Zwischenzeit unser Experte darin, technische, geschäftliche und digitale Themen auf verständliche Weise zu erklären. Autor und Übersetzer nach Feierabend.

Olga Gierszal
github
IT-Outsourcing-Marktanalyst und Redakteur für Softwaretechnik

Enthusiast für Softwareentwicklung mit 8 Jahren Berufserfahrung in der Technologiebranche. Erfahrung im Outsourcing von Marktanalysen, mit besonderem Schwerpunkt auf Nearshoring. In der Zwischenzeit unser Experte darin, technische, geschäftliche und digitale Themen auf verständliche Weise zu erklären. Autor und Übersetzer nach Feierabend.

Read next

No items found...

previous article in this collection

It's the first one.

next article in this collection

It's the last one.