Strangler-Feigenmuster - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Strangler-Feigenmuster

Die bisher in diesem Leitfaden erörterten Entwurfsmuster gelten für die Zerlegung von Anwendungen für Greenfield-Projekte. Was ist mit Brownfield-Projekten, die große, monolithische Anwendungen beinhalten? Es wird schwierig sein, die vorherigen Entwurfsmuster auf sie anzuwenden, da es eine große Aufgabe ist, sie in kleinere Teile zu zerlegen, während sie aktiv verwendet werden.

Das Würgerfeigenmuster ist ein beliebtes Designmuster, das von Martin Fowler eingeführt wurde, der sich von einer bestimmten Feigenart inspirieren ließ, die sich in den oberen Ästen von Bäumen ausbreitet. Der bestehende Baum wird zunächst zur Tragstruktur für die neue Abb. Die Feige schickt dann ihre Wurzeln zum Boden, umhüllt allmählich den ursprünglichen Baum und lässt nur die neue, selbsttragende Feige an ihrer Stelle zurück.

Dieses Muster wird häufig verwendet, um eine monolithische Anwendung schrittweise in Microservices umzuwandeln, indem eine bestimmte Funktionalität durch einen neuen Dienst ersetzt wird. Das Ziel besteht darin, dass die alten und die neuen, modernisierten Versionen koexistieren. Das neue System wird zunächst vom bestehenden System unterstützt und umschließt dieses. Diese Unterstützung gibt dem neuen System Zeit, zu wachsen und das alte System möglicherweise vollständig zu ersetzen.

Der Prozess des Übergangs von einer monolithischen Anwendung zu Microservices durch die Implementierung des Strangler-Feigenmusters besteht aus drei Schritten: transformieren, koexistieren und eliminieren:

  • Transformation — Identifizieren und erstellen Sie modernisierte Komponenten, indem Sie sie entweder parallel zur Legacy-Anwendung portieren oder neu schreiben.

  • Koexist — Behalten Sie die Monolith-Anwendung für den Rollback bei. Lassen Sie externe Systemaufrufe abfangen, indem Sie einen HTTP-Proxy (z. B. Amazon API Gateway) am Rand Ihres Monolithen integrieren und den Datenverkehr auf die modernisierte Version umleiten. Dies hilft Ihnen, Funktionen schrittweise zu implementieren.

  • Eliminieren — Die alten Funktionen werden vom Monolith entfernt, da der Traffic vom alten Monolith zum modernisierten Dienst umgeleitet wird.

AWS Migration Hub Refactor Spacesist der Ausgangspunkt für das inkrementelle Refactoring von Anwendungen auf MicroservicesAWS. Refactor Spaces bietet eine Anwendung, die das Strangler-Feigenmuster für das inkrementelle Refactoring modelliert. Eine Refactor Spaces-Anwendung orchestriert API Gateway, Network Load Balancer und ressourcenbasierteAWS Identity and Access Management (IAM) Richtlinien, sodass Sie einem externen HTTP-Endpunkt transparent neue Dienste hinzufügen können.

In der folgenden Tabelle werden die Vor- und Nachteile der Verwendung des Würgerfeigenmusters erläutert.

Vorteile Nachteile
  • Ermöglicht eine reibungslose Migration von einem Dienst zu einem oder mehreren Ersatzdiensten.

  • Behält alte Dienste im Spiel, während auf aktualisierte Versionen umgestellt wird.

  • Bietet die Möglichkeit, neue Dienste und Funktionen hinzuzufügen und gleichzeitig ältere Dienste zu überarbeiten.

  • Das Muster kann für die Versionierung von APIs verwendet werden.

  • Das Muster kann für ältere Interaktionen für Lösungen verwendet werden, die nicht aktualisiert wurden oder werden.

  • Ist nicht für kleine Systeme geeignet, bei denen die Komplexität gering und die Größe gering ist.

  • Kann nicht in Systemen verwendet werden, in denen Anfragen an das Backend-System nicht abgefangen und weitergeleitet werden können.

  • Die Proxy- oder Fassadenebene kann zu einer einzigen Fehlerquelle oder zu einem Leistungsengpass werden, wenn sie nicht richtig entworfen wurde.

  • Erfordert einen Rollback-Plan für jeden überarbeiteten Dienst, um zur alten Methode zurückzukehren, Dinge schnell und sicher zu erledigen, falls etwas schief geht.

Die folgende Abbildung zeigt, wie ein Monolith in Microservices aufgeteilt werden kann, indem das Strangler-Feigenmuster auf eine Anwendungsarchitektur angewendet wird. Beide Systeme funktionieren parallel, aber Sie werden beginnen, Funktionen außerhalb der Monolith-Codebasis zu verschieben und sie um neue Funktionen zu erweitern. Diese neuen Funktionen geben Ihnen die Möglichkeit, Microservices so zu gestalten, dass sie Ihren Anforderungen am besten entsprechen. Sie werden weiterhin Funktionen aus dem Monolith entfernen, bis alles durch Microservices ersetzt ist. An diesem Punkt können Sie die Monolith-Anwendung entfernen. Der wichtigste Punkt, den es hier zu beachten gilt, ist, dass sowohl der Monolith als auch die Microservices für einen bestimmten Zeitraum zusammenleben werden.

Zerlegung von Monolithen in Microservices mithilfe des Strangler-Feigenmusters