ModARO: A Modular Approach to Architecture Reconstruction of Distributed Microservice Codebases
Dieses Paper präsentiert ModARO, einen modularen Ansatz zur Rekonstruktion von Mikroservice-Architekturen, der die Erstellung und Wiederverwendung technologispezifischer Extraktoren über verteilte Repositories hinweg ermöglicht und dadurch effektiv Architekturdrift sowie Dokumentationsherausforderungen durch ein validiertes, flexibles Framework adressiert.
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 vor, Sie sind der Manager einer riesigen, geschäftigen Stadt, die ganz aus winzigen, unabhängigen Vierteln besteht. Jedes Viertel (ein Microservice) wurde von einem anderen Team gebaut, mit unterschiedlichen Baumaterialien (Programmiersprachen), unterschiedlichen Bauplänen (Konfigurationen) und unterschiedlichen Stilen. Dies macht die Stadt zwar flexibel und schnell aufzubauen, macht es aber auch unglaublich schwierig, die gesamte Stadt als Ganzes zu verstehen. Wenn in einem Viertel die Wasserleitungen geändert werden, wie wirkt sich das auf das Stromnetz in einem anderen Viertel aus? Oft verlieren die Stadtplaner (Entwickler) den Überblick über das große Ganze, und die alten Karten (Dokumentation) veralten.
Dieses Paper stellt ModARO vor, ein neues Werkzeug, das darauf ausgelegt ist, den Stadtplan automatisch neu zu zeichnen, indem es die Gebäude selbst betrachtet. So funktioniert es, einfach erklärt:
1. Das Problem: Das „One-Size-Fits-None“-Dilemma
Stellen Sie sich vor, Sie haben einen Roboter, der Baupläne lesen kann, um herauszufinden, wie ein Haus gebaut ist.
- Das Problem: In der Microservice-Welt ist jedes Haus anders. Eines ist aus Holz (Java) gebaut, eines aus Stahl (Python) und eines aus Glas (Go). Ein Roboter, der darauf programmiert ist, Holz-Baupläne zu lesen, scheitert an den Stahl-Bauplänen.
- Die Komplikation: Zudem sind diese Viertel oft über verschiedene Städte verteilt (separate Code-Repositories). Sie können nicht einfach einen Roboter zu einer Zeit in die ganze Stadt schicken; Sie müssen einen Roboter in jedes Viertel einzeln schicken und dann versuchen, die Berichte zusammenzufügen.
2. Die Lösung: ModARO (Das modulare LEGO-Set)
Die Autoren entwickelten ModARO, das wie ein universelles LEGO-Set zum Bauen von Kartenzeichner-Robotern ist. Anstatt einen riesigen, starren Roboter für eine bestimmte Stadt zu bauen, bauen Sie kleine, austauschbare Extraktoren (die LEGO-Steine).
- Die Extraktoren: Dies sind winzige, spezialisierte Skripte. Ein Skript weiß, wie man „Holz“-Baupläne (Java-Dateien) liest, ein anderes weiß, wie man „Stahl“ (Python) liest, und ein weiteres weiß, wie man die „Stadt-Zonengesetze“ (Docker-Konfigurationsdateien) liest.
- Die gemeinsame Sprache (Das Modell): Um diese verschiedenen Skripte miteinander kommunizieren zu lassen, schreiben sie alle ihre Funde in ein gemeinsames Notizbuch (das Architekturmodell).
- Analogie: Stellen Sie sich vor, der „Holz“-Roboter findet eine Tür und schreibt „Tür an Position X gefunden“ in das Notizbuch. Der „Stahl“-Roboter muss nicht wissen, wie der Holz-Roboter die Tür gefunden hat; er liest einfach im Notizbuch, sieht „Tür an X“ und fügt seine eigene Notiz hinzu: „Tür ist verschlossen“.
- Da sie sich alle auf das Format des Notizbuchs geeinigt haben, können Sie den „Holz“-Roboter später durch einen „Bambus“-Roboter ersetagen, und der Rest des Systems funktioniert weiterhin, ohne zu brechen.
3. Die „Verteilte“ Magie
Das Paper hebt ein einzigartiges Merkmal hervor: Verteilte Architekturrekonstruktion.
- Der alte Weg: Um die ganze Stadt zu kartieren, mussten Sie jeden einzelnen Bauplan aus jedem Viertel in einen einzigen riesigen Raum bringen, sie sortieren und dann die Karte zeichnen. Das ist langsam und verletzt die „unabhängige“ Natur der Viertel.
- Der ModARO-Weg: Sie schicken einen Roboter zu Viertel A. Er zeichnet seinen Teil der Karte und speichert ihn. Sie schicken einen Rob itemBuilder zu Viertel B. Er zeichnet seinen Teil. Wenn die Stadt später bereit zur Bereitstellung ist, führen Sie die beiden Teilkarten einfach zusammen.
- Die „Retroaktive Verknüpfung“: Manchmal sagt Viertel A: „Ich verbinde mich mit Viertel B“, aber es kennt die Adresse von B noch nicht. ModARO ermöglicht es Viertel A, eine „Platzhalter-Notiz“ (einen Link) zu schreiben, die besagt: „Verbinde dich mit wem auch immer den Namen 'B' trägt“. Sobald alle Karten zusammengeführt wurden, findet das System automatisch „B“ und verbindet die Punkte.
4. Hat es funktioniert? (Die Tests)
Die Forscher testeten dieses System auf zwei Arten:
Test A: Die „Real World“-Herausforderung (10 Open-Source-Projekte)
Sie nahmen 10 verschiedene Open-Source-Microservice-Projekte (einige groß, einige klein, mit unterschiedlichen Sprachen) und baten ModARO, deren Karten allein basierend auf dem bereitgestellten Code und der Dokumentation zu rekonstruieren.
- Ergebnis: Es hat funktioniert! ModARO konnte architektonische Details (wie welche Services miteinander kommunizieren, welche Sprachen sie verwenden und wo Datenbanken liegen) aus einer Vielzahl von Technologien extrahieren.
- Einschränkung: Es konnte keine „Gedankenleser“-Informationen lesen (wie etwa hochgradige Beschreibungen dessen, was ein Service tut, falls dies nicht im Code geschrieben stand) oder Informationen, die in komplexem, dynamischem Code verborgen waren, der menschliche Intuition zur Dekodierung erfordert hätte.
Test B: Der Humantest (8 Industrie-Entwickler)
Sie fragten 8 professionelle Softwareentwickler, ob sie ModARO nutzen und es mit einem bestehenden Tool namens ReSSA vergleichen würden.
- Das Urteil: Die Entwickler bevorzugten ModARO.
- Warum? Sie fanden ModARO einfacher zu bedienen, da es sich anfühlte, als würde man normalen Code schreiben (den sie bereits kannten), während sich das andere Tool eher wie das Lösen verwirrender Einzeiler-Rätsel anfühlte.
- Der Haken: Sie fanden es immer noch etwas schwierig, „reguläre Ausdrücke“ (eine Methode zum Suchen von Textmustern) zu verwenden, um spezifischen Code zu finden. Sie wünschten sich intelligentere Werkzeuge, die die Codestruktur besser verstehen könnten, aber sie mochten die allgemeine Flexibilität von ModARO.
Zusammenfassung
ModARO ist ein Werkzeug, mit dem Entwickler kleine, wiederverwendbare „Späher“ bauen können, um verschiedene Teile eines komplexen Softwaresystems zu erkunden. Diese Späher schreiben ihre Funde in ein gemeinsames Notizbuch, was es dem System ermöglicht, automatisch eine vollständige Karte der Architektur zusammenzusetzen – selbst wenn das System über viele verschiedene Ordner verteilt ist oder viele verschiedene Programmiersprachen verwendet. Es macht das Aktualisieren des „Stadtplans“ einfacher, schneller und weniger anfällig für menschliche Fehler.
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.