Olá, estou fazendo a carreira de DevOps e gostaria de saber qual é a melhor prática para o seguinte cenário:
Estou construindo uma aplicação com vários microserviços. Todos as APIs estão armazenadas em um único repositório GitHub e existem dois tipos de serviços: serviços que serão executados como container e serviços que não serão executados como container.
Atualmente, há um script que é chamado no Jenkins e executa npm install
em cada um dos serviços (entrando recursivamente nas pastas via código), pm2 build
para subir os serviços que não são container, e docker run
para subir os serviços containers (entrando recursivamente nas pastas via código).
Eu gostaria de criar uma pipeline no Jenkins de CI/CD e vi que o Ansible é muito utilizado com o Jenkins.
Minha dúvida é, o Ansible pode ser usado como substituto desse script? Essa é a função do Ansible? Porque assim, uma pipeline builda e executa multiplos serviços, como eu faria esse suporte de entrar pasta a pasta automaticamente como faço no script via Ansible? Talvez seja uma melhor prática ter um repositório para cada API no GitHub e uma pipeline no Jenkins para cada API?
Basicamente, qual é a melhor prática para trabalhar com vários microserviços (em torno de 20) em um ambiente de produção? Cada serviço em um repositório GitHub ou todos serviços em um repositório? E com base nisso, como fazer esse deploy automatico com Jenkins e Ansible?
Muito obrigada!