Stiamo progettando un sistema basato su microservizi indipendenti (collegati tramite un bus RabbitMq). Il codice (almeno per i primi componenti) sarà scritto in Python (sia Python2 che Python3). Abbiamo già un'applicazione monolite che implementa alcune delle logiche aziendali, che vogliamo riformattare come microservizi ed estendere. Una domanda che mi preoccupa è:
Qual è il modo migliore per condividere il codice tra i diversi microservizi. Abbiamo funzioni helper comuni (elaborazione dati, registrazione, analisi della configurazione, ecc.), Che devono essere utilizzate da diversi microservizi.
I microservizi stessi saranno sviluppati come progetti separati (repository git). Le librerie comuni possono essere sviluppate anche come progetto autonomo. Come posso condividere queste librerie tra i microservizi?
Vedo diversi approcci:
- copia intorno alla versione della libreria necessaria per ciascun microservizio e aggiorna se necessario
- rilasciare le librerie comuni su un PyPi interno ed elencare tali librerie come dipendenze nei requisiti del microservizio
- include il repository della libreria come sottomodulo git
Vorrei leggere qualcosa in più sugli approcci suggeriti, le migliori pratiche, le esperienze passate prima di decidere come procedere. Hai qualche suggerimento o collegamento?
fib(n)
(implementazione della serie fibonacci). Non si desidera ripetere l'implementazione in ciascun microservizio. Appartiene a una utils
libreria (con versione, per funzionalità e correzioni di bug). Questo non è un monolito distribuito, è solo uno strato di funzionalità comune. La mia domanda è: come gestire questo livello a livello di implementazione?