Distributed Architecture Reconstruction of Polyglot and Multi-Repository Microservice Projects
Dieses Paper präsentiert ein neuartiges Framework für die verteilte statische Architekturrekonstruktion, das bestehende Einschränkungen überwindet, indem es modulare, technologiespezifische Extraktoren nutzt, um Daten zu vereinheitlichen und eine präzise Dokumentation für polyglotte Multi-Repository-Microservice-Projekte zu generieren.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich eine riesige, belebte Stadt vor, die aus Hunderten von winzigen, unabhängigen Stadtvierteln besteht. Jedes Stadtviertel (ein Microservice) wurde von einem anderen Team gebaut, verwendet unterschiedliche Materialien (Programmiersprachen) und folgt seinem eigenen, einzigartigen Stil. Einige sind aus Backstein (Java), andere aus Holz (Python) und einige aus Glas (Go).
Das Problem? Niemand besitzt eine vollständige Karte der Stadt. Die ursprünglichen Baupläne sind entweder verloren gegangen, veraltet oder in einer Sprache verfasst, die nur die ursprünglichen Erbauer verstehen. Da sich diese Stadtviertel sehr schnell verändern und separat gebaut werden, ist der Versuch, die gesamte Stadt auf einmal zu kartieren, ein Albtraum. Wenn man versucht, die ganze Stadt gleichzeitig zu betrachten, gerät man im Stau, und wenn sich ein Stadtviertel ändert, muss man die gesamte Karte neu zeichnen.
Dieses Paper stellt ein neues Werkzeug namens ModARO vor, um dieses Problem zu lösen. So funktioniert es, unter Verwendung einfacher Analogien:
1. Die „Spezialisierten Kundschafter“ (Extractors)
Anstatt einen riesigen, superintelligenten Roboter einzustellen, der alle Arten von Baumaterialien in der Stadt verstehen soll, haben die Autoren ein Team von spezialisierten Kundschaftern namens Extractors erschaffen.
- Wie sie funktionieren: Jeder Kundschafter ist ein Experte für genau eine Sache. Ein Kundschafter versteht nur „Java“-Baupläne. Ein anderer kennt nur „Docker“-Container. Ein weiterer kennt nur „YAML“-Konfigurationsdateien.
- Die Magie: Sie müssen den Java-Kundschafter nicht lehren, Python zu lesen. Sie schicken einfach den Java-Kundschafter in das Java-Viertel. Er sieht sich um, findet die wichtigen Details und schreibt sie auf einen standardisierten Notizblock.
- Kein Gedächtnis: Diese Kundschafter sind „amnesisch“. Sie erinnern sich nicht an das, was sie im letzten Viertel gesehen haben. Sie betrachten nur das spezifische Gebäude direkt vor ihnen. Das hält sie schnell und verhindert, dass sie verwirrt werden.
2. Der „Universelle Notizblock“ (Das Modell)
Wenn ein Kundschafter seine Arbeit beendet hat, behält er die Notizen nicht für sich. Er schreibt die Funde auf einen Universellen Notizblock (ein JSON-Modell).
- Dieser Notizblock hat ein spezifisches Format, auf das sich alle geeinigt haben.
- Wenn der Java-Kundschafter eine „Tür“ (einen API-Endpunkt) findet, schreibt er dies auf. Wenn der Python-Kundschafter ein „Fenster“ (eine Datenbankverbindung) findet, schreibt er das ebenfalls auf.
- Da alle denselben Notizblock verwenden, können die Informationen aus dem Java-Viertel und dem Python-Viertel schließlich kombiniert werden.
3. Der „Orchestrator“ (Der Algorithmus)
Es gibt einen Dirigenten (den Reconstruction Algorithm), der die Kundschafter leitet.
- Der Dirigent sagt: „Okay, schauen wir uns dieses Gebäude an.“
- Der Java-Kundschafter prüft es und fügt Notizen hinzu.
- Der Dirigent sieht, dass neue Notizen hinzugefügt wurden, und sagt: „Oh, jetzt, da wir wissen, dass es hier eine Java-Datei gibt, lassen Sie uns den Docker-Kundschafter rufen, um zu sehen, ob es auch einen Container gibt.“
- Dies geschieht in einer Schleife, bis keine neuen Informationen mehr gefunden werden. Der Dirigent stellt sicher, dass, falls zwei Kundschafter versuchen, widersprüchliche Dinge in dieselbe Zeile zu schreiben, das System stoppt und eine Warnung (einen Fehler) ausgibt, damit Menschen dies korrigieren können, anstatt die Karte unordentlich werden zu lassen.
4. Die „Verteilte Karte“ (Multi-Repo Reconstruction)
Dies ist die größte Innovation des Papers. In der Vergangenheit mussten Sie, um eine Karte zu zeichnen, jeden einzelnen Bauplan aus jedem einzelnen Stadtviertel in einen einzigen riesigen Raum bringen und sie alle gemeinsam betrachten. Das ist langsam und widerspricht dem „unabhängigen“ Geist der Stadt.
Der neue Ansatz ist verteilt:
- Unabhängige Arbeit: Jedes Stadtviertel zeichnet seine eigene Mini-Karte, während es seine eigenen Häuser baut oder aktualisiert. Sie müssen nicht darauf warten, dass die anderen Stadtviertel fertig sind.
- Die Montage: Später werden diese Mini-Karten zusammengebracht und wie LEGO-Steine zusammengesetzt.
- Die „Geisterverbindungen“: Manchmal sagt ein Stadtviertel: „Wir senden Post an einen Ort namens 'Test-Service'.“ Sie kennen die genaue Adresse oder ID dieses Ortes noch nicht, weil er in einem anderen Stadtviertel liegt. Das System erlaubt ihnen zu schreiben: „Sende Post an jemanden namens 'Test-Service'.“ Sobald alle Mini-Karten zusammengesetzt sind, verbindet das System automatisch die Punkte und gleicht den „Test-Service“-Absender mit dem „Test-Service“-Empfänger ab.
Warum ist das besser?
- Kein „Einheitsmaß“: Sie benötigen kein komplexes, fragiles System, das versucht, jede Programmiersprache gleichzeitig zu verstehen. Sie fügen einfach einen neuen Kundschafter (Extractor) hinzu, wann immer eine neue Sprache erscheint.
- Geschwindigkeit: Da jedes Stadtviertel seine eigene Karte erstellt, können Sie die Karte für einen einzelnen Service aktualisieren, ohne die ganze Stadt anzuhalten.
- Flexibilität: Sie können bestehende Werkzeuge nutzen. Wenn Sie bereits ein Tool zur Analyse von Java-Code haben, wickeln Sie es einfach in einen „Kundschafter-Anzug“, und es kann dem Team beitreten.
Kurz gesagt: Dieses Paper baut ein System, in dem kleine, spezialisierte Teams unabhängig dokumentieren können, was sie an ihrem Teil eines komplexen Systems arbeiten, und diese Teile dann automatisch zu einem vollständigen, genauen Bild der gesamten Architektur zusammenfügen können, ohne während der Arbeit alles über die anderen Teile wissen zu müssen.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.