Ich denke, einer der größten Probleme bei der Arbeit mit Microservices besteht darin, sicherzustellen, dass die APIs gut dokumentiert sind und APIs ihr Verhalten nicht ändern, ohne die nachgelagerten Anwendungen zu beeinträchtigen. Dieses Problem wird verstärkt, wenn Sie viele Dienste haben, die voneinander abhängig sind. Vielleicht machen Sie an diesem Punkt Microservices falsch, aber ich schweife ab.
Angenommen, wir haben 20 Microservices geerbt, die verschiedenen Teams gehören, und es gibt keine eindeutige Dokumentation darüber, welche Anwendung den API-Endpunkt anderer Anwendungen verwendet. Gibt es eine vorgeschriebene Möglichkeit, dies zu dokumentieren? Zuerst dachte ich daran, die Endpunkte jeder Anwendung zu analysieren und sie einer Datenbanktabelle hinzuzufügen, dann eine FK-Beziehung zwischen jeder Anwendung und der Route einer Anwendung in einer Viele-zu-Viele-Tabelle zu erstellen (fast alle davon sind Rails-Apps). Aber ich bin mir nicht sicher, ob dies ein guter Weg ist, um damit umzugehen, oder ob ich das Rad hier neu erfinde.
Rückblickend könnte dies eine nicht so schlechte Möglichkeit sein, die Anwendungsinteraktion zu dokumentieren, wenn Sie mit Microservices von Grund auf neu beginnen. Dies würde lediglich erzwingen, dass eine einzige Wahrheitsquelle über die Verwendung einer Datenbank aufrechterhalten wird und alle Änderungen an den Endpunkten in der Anwendung in Verbindung mit der Änderung der Datenbank vorgenommen werden. Gedanken?
Ich denke, eine gute Idee ist es, ein Integrationsdiagramm zu erstellen und dieses in Ihr Repository aufzunehmen. Wählen Sie ein kostenloses Tool (wie draw.io), mit dem Sie das Diagramm in eine XML- oder JSON-Datei exportieren und diese Datei in Ihrem Repository festschreiben können. Wenn Sie Github oder Gitlab verwenden, generieren Sie das Bild aus diesem Diagramm und fügen Sie es in das Wiki oder sogar in die Datei README.md ein, damit das Bild jedes Mal sichtbar ist, wenn der Entwickler das Repository im Browser visualisiert.
Die gleiche Strategie kann für die Datenbank verwendet werden.
In Bezug auf die API-Ressourcendokumentation ist Swagger eine gute Option.
Dies ist sicher ein Problem.
quelle