Nous concevons un système basé sur des microservices indépendants (connectés via un bus RabbitMq). Le code sera (au moins pour les premiers composants) écrit en python (à la fois python2 et python3). Nous avons déjà une application monolithique implémentant une partie de la logique métier, que nous souhaitons refactoriser en microservices et étendre. Une question qui m'inquiète est:
Quelle est la meilleure façon de partager du code entre les différents microservices. Nous avons des fonctions d'assistance communes (traitement des données, journalisation, analyse de configuration, etc.), qui doivent être utilisées par plusieurs microservices.
Les microservices eux-mêmes vont être développés en tant que projets séparés (référentiels git). Les bibliothèques communes peuvent également être développées en tant que projet autonome. Comment partager ces bibliothèques entre les microservices?
Je vois plusieurs approches:
- copier autour de la version de la bibliothèque qui est nécessaire pour chaque microservice et mettre à jour si nécessaire
- libérer les bibliothèques communes sur un PyPi interne et répertorier ces bibliothèques en tant que dépendances dans les exigences du microservice
- inclure le référentiel de bibliothèque en tant que sous-module git
Je voudrais en savoir un peu plus sur les approches suggérées, les meilleures pratiques, les expériences passées avant de décider comment procéder. Avez-vous une suggestion ou un lien?
fib(n)
(implémentation de la série fibonacci). Vous ne souhaitez pas répéter cette implémentation dans chaque microservice. Cela appartient à une utils
bibliothèque (versionnée, pour les fonctionnalités et les corrections de bugs). Ce n'est pas un monolithe distribué, c'est juste une couche de fonctionnalités communes. Ma question est de savoir comment gérer cette couche au niveau de la mise en œuvre?