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.
Zweig nach Abstraktionsmuster
Das Würgerfeigenmuster funktioniert gut, wenn Sie die Rufe am Rand des Monolithen abfangen können. Wenn Sie jedoch Komponenten modernisieren möchten, die sich tiefer im Legacy-Anwendungsstack befinden und Upstream-Abhängigkeiten aufweisen, empfehlen wir das Branch-by-Abstraktionsmuster. Dieses Muster ermöglicht es Ihnen, Änderungen an der vorhandenen Codebasis vorzunehmen, damit die modernisierte Version sicher neben der Legacy-Version koexistieren kann, ohne dass es zu Unterbrechungen kommt.
Gehen Sie wie folgt vor, um das Branch-by-Abstraktionsmuster erfolgreich zu verwenden:
-
Identifizieren Sie Monolith-Komponenten, die Upstream-Abhängigkeiten haben.
-
Erstellen Sie eine Abstraktionsebene, die die Interaktionen zwischen dem zu modernisierenden Code und seinen Clients darstellt.
-
Wenn die Abstraktion eingerichtet ist, ändern Sie die vorhandenen Clients, um die neue Abstraktion zu verwenden.
-
Erstellen Sie eine neue Implementierung der Abstraktion mit der überarbeiteten Funktionalität außerhalb des Monolithen.
-
Wechseln Sie die Abstraktion auf die neue Implementierung, wenn Sie fertig sind.
-
Wenn die neue Implementierung den Benutzern alle erforderlichen Funktionen bietet und der Monolith nicht mehr verwendet wird, bereinigen Sie die ältere Implementierung.
Das Muster „Verzweigung nach Abstraktion“ wird oft mit Feature-Toggles
In der folgenden Tabelle werden die Vor- und Nachteile der Verwendung des Branch-by-Abstraktionsmusters erläutert.
Vorteile | Nachteile |
---|---|
|
|
Die folgende Abbildung zeigt das Verzweigungsmuster für eine Komponente „Benachrichtigung“ im Versicherungsmonolith. Es beginnt mit der Erstellung einer Zusammenfassung oder einer Schnittstelle für die Benachrichtigungsfunktionalität. In kleinen Schritten werden bestehende Kunden auf die neue Abstraktion umgestellt. Dazu muss möglicherweise die Codebasis nach API-Aufrufen durchsucht werden, die sich auf die Benachrichtigungskomponente beziehen. Sie erstellen die neue Implementierung der Benachrichtigungsfunktion als Microservice außerhalb Ihres Monolithen und hosten ihn in der modernisierten Architektur. In Ihrem Monolithen fungiert Ihre neu erstellte Abstraktionsschnittstelle als Makler und ruft die neue Implementierung hervor. In kleinen Schritten portieren Sie die Benachrichtigungsfunktionen auf die neue Implementierung, die inaktiv bleibt, bis sie vollständig getestet und bereit ist. Wenn die neue Implementierung fertig ist, stellen Sie Ihre Abstraktion um, um sie zu verwenden. Sie sollten einen Schaltmechanismus verwenden, der einfach umgedreht werden kann (z. B. einen Funktionsumschalter), damit Sie bei Problemen problemlos zur alten Funktionalität zurückkehren können. Wenn die neue Implementierung beginnt, Ihren Benutzern alle Benachrichtigungsfunktionen zur Verfügung zu stellen, und der Monolith nicht mehr verwendet wird, können Sie die ältere Implementierung bereinigen und alle Switching-Feature-Flags entfernen, die Sie möglicherweise implementiert haben.