Wir entwerfen ein System, das auf unabhängigen Mikrodiensten basiert (verbunden über einen RabbitMq-Bus). Der Code wird (zumindest für die ersten Komponenten) in Python geschrieben (sowohl in Python2 als auch in Python3). Wir haben bereits eine Monolith-Anwendung, die einen Teil der Geschäftslogik implementiert, die wir als Microservices umgestalten und erweitern möchten. Eine Frage, die mich beunruhigt, ist:
Was ist der beste Weg, um Code zwischen den verschiedenen Microservices zu teilen? Wir haben gemeinsame Hilfsfunktionen (Datenverarbeitung, Protokollierung, Analyse der Konfiguration usw.), die von mehreren Mikrodiensten verwendet werden müssen.
Die Microservices selbst werden als separate Projekte (Git-Repositories) entwickelt. Die gemeinsamen Bibliotheken können auch als eigenständiges Projekt entwickelt werden. Wie teile ich diese Bibliotheken zwischen den Microservices?
Ich sehe mehrere Ansätze:
- Kopieren Sie die Version der Bibliothek, die für jeden Microservice benötigt wird, und aktualisieren Sie sie nach Bedarf
- Geben Sie die allgemeinen Bibliotheken für ein internes PyPi frei und listen Sie diese Bibliotheken als Abhängigkeiten in den Anforderungen des Microservices auf
- Fügen Sie das Bibliotheks-Repository als Git-Submodul hinzu
Ich würde gerne etwas mehr über vorgeschlagene Ansätze, Best Practices und frühere Erfahrungen lesen, bevor ich mich für ein Vorgehen entscheide. Haben Sie einen Vorschlag oder Link?
fib(n)
(Implementierung der Fibonacci-Serie). Sie möchten diese Implementierung nicht in jedem Microservice wiederholen. Das gehört zu einer utils
Bibliothek (versioniert, für Features und Bugfixes). Das ist kein verteilter Monolith, das ist nur eine Schicht gemeinsamer Funktionalität. Meine Frage ist, wie ich mit dieser Ebene auf Implementierungsebene umgehen soll.