Estamos projetando um sistema baseado em microsserviços independentes (conectados via um barramento RabbitMq). O código (pelo menos para os primeiros componentes) será escrito em python (python2 e python3). Já temos um aplicativo monolítico implementando parte da lógica de negócios, que queremos refatorar como microsserviços e estender. Uma pergunta que me preocupa é:
Qual é a melhor maneira de compartilhar código entre os diferentes microsserviços. Temos funções auxiliares comuns (processamento de dados, log, análise de configuração, etc.), que devem ser usadas por vários microsserviços.
Os próprios microsserviços serão desenvolvidos como projetos separados (repositórios git). As bibliotecas comuns também podem ser desenvolvidas como um projeto independente. Como compartilho essas bibliotecas entre os microsserviços?
Eu vejo várias abordagens:
- copie a versão da biblioteca necessária para cada microsserviço e atualize conforme necessário
- libere as bibliotecas comuns para um PyPi interno e liste essas bibliotecas como dependências nos requisitos do microsserviço
- incluir o repositório da biblioteca como um submódulo git
Gostaria de ler um pouco mais sobre abordagens sugeridas, melhores práticas, experiências passadas antes de decidir como proceder. Você tem alguma sugestão ou link?
fib(n)
(implementação da série fibonacci). Você não deseja repetir essa implementação em cada microsserviço. Pertence a uma utils
biblioteca (com versão, para recursos e correções). Esse não é um monólito distribuído, é apenas uma camada de funcionalidade comum. Minha pergunta é como lidar com essa camada no nível de implementação?