O Que É um Microservice? Serviços Pequenos e Implantáveis de Forma Independente
Um microservice é um serviço pequeno, implantável de forma independente, que detém uma única capacidade de negócio e conversa com outros serviços pela rede.
Microservices dividem um sistema em muitos serviços pequenos, cada um com seu próprio codebase, armazenamento de dados e cadência de release. Em vez de um grande deploy, você faz deploy de dezenas de serviços em seus próprios cronogramas. Essa independência é o objetivo central, e é também o que torna a história de CI/CD mais interessante do que um único build monolítico.
O que faz de um serviço um microservice
Um microservice detém uma capacidade de ponta a ponta: seu próprio código, seu próprio banco de dados ou armazenamento, e um limite de API claro. Ele pode ser buildado, testado e implantado sem coordenar um release com o restante do sistema. A comunicação acontece pela rede, geralmente HTTP ou um message bus.
Por que as equipes os adotam
- Deploys independentes: uma equipe faz deploy sem bloquear as outras.
- Escalonamento direcionado: escale apenas o serviço mais requisitado, não o app inteiro.
- Liberdade tecnológica: cada serviço pode escolher sua própria stack.
- Isolamento de falhas: a falha de um serviço não precisa derrubar o restante.
A mudança no CI/CD
Um monólito tem um pipeline; um conjunto de microservices tem um pipeline por serviço. Isso significa muitos builds pequenos e rápidos em vez de um único lento, mas também mais pipelines para manter, mais artifacts e a necessidade de testar como os serviços se comportam juntos, não apenas isoladamente.
Novos encargos de teste
Os testes unitários continuam simples, mas agora você precisa de testes de contrato e testes de integração para pegar quebras entre limites de serviço. Uma mudança que passa no pipeline de um serviço ainda pode quebrar um consumidor, então testar as junções se torna tão importante quanto testar o código.
Coordenação de deploy
Deploys independentes são um benefício até que dois serviços precisem mudar juntos. APIs compatíveis com versões anteriores, feature flags e ordenação cuidadosa permitem que você faça deploy de serviços um de cada vez. Sem essa disciplina, deploys "independentes" silenciosamente se tornam acoplados.
Microservices em CI gerenciado
Dezenas de serviços pequenos significam dezenas de execuções frequentes de pipeline, que é exatamente onde o tempo de fila e os cold starts se acumulam. Runners gerenciados (como o Latchkey) mantêm capacidade warm pronta, para que uma rajada de builds por serviço seja atendida imediatamente em vez de esperar na fila.
Principais conclusões
- Um microservice é pequeno, detém uma capacidade e faz deploy de forma independente.
- Muitos serviços significam muitos pipelines e uma necessidade mais forte de testes de contrato e de integração.
- A compatibilidade retroativa é o que mantém os deploys "independentes" realmente independentes.