Estamos diseñando un sistema basado en microservicios independientes (conectados a través de un bus RabbitMq). El código (al menos para los primeros componentes) se escribirá en python (tanto python2 como python3). Ya tenemos una aplicación monolítica que implementa parte de la lógica empresarial, que queremos refactorizar como microservicios y ampliar. Una pregunta que me preocupa es:
¿Cuál es la mejor manera de compartir código entre los diferentes microservicios? Tenemos funciones auxiliares comunes (procesamiento de datos, registro, análisis de configuración, etc.), que deben ser utilizados por varios microservicios.
Los microservicios se desarrollarán como proyectos separados (repositorios git). Las bibliotecas comunes también se pueden desarrollar como un proyecto autónomo. ¿Cómo comparto estas bibliotecas entre los microservicios?
Veo varios enfoques:
- copiar alrededor de la versión de la biblioteca que se necesita para cada microservicio y actualizar según sea necesario
- liberar las bibliotecas comunes a un PyPi interno y enumerar esas bibliotecas como dependencias en los requisitos del microservicio
- incluir el repositorio de la biblioteca como un submódulo git
Me gustaría leer un poco más sobre los enfoques sugeridos, las mejores prácticas y las experiencias pasadas antes de decidir cómo proceder. ¿Tienes alguna sugerencia o enlace?
fib(n)(implementación de la serie de Fibonacci). No desea repetir esa implementación en cada microservicio. Eso pertenece a una utilsbiblioteca (versionada, para características y correcciones de errores). Eso no es un monolito distribuido, es solo una capa de funcionalidad común. Mi pregunta es cómo manejar esta capa a nivel de implementación.