A pergunta errada
«Monólito ou microsserviços?» costuma ser colocada como se uma opção fosse a moderna e a outra a antiga. Não é assim. São duas formas de repartir a complexidade: o monólito concentra-a no código; os microsserviços levam-na para a rede, para a implementação e para a operação.
A pergunta útil é outra: que complexidade pode esta organização assumir, e onde a quer?
Um espectro, não duas opções
Entre os extremos há opções intermédias que costumam ser a melhor resposta:
- Monólito modular: uma única aplicação implementável, mas com módulos separados e fronteiras claras dentro do código. É fácil de operar e permite separar depois o que for preciso.
- Serviços por domínio: poucos serviços grandes, um por área de negócio, em vez de dezenas de serviços pequenos.
Os critérios que fazem pender a balança
Para microsserviços empurram:
- Equipas independentes que precisam de implementar sem se coordenarem.
- Partes do sistema com necessidades de escala muito diferentes.
- Requisitos de disponibilidade por componente (que uma falha não deite tudo abaixo).
Para monólito empurram:
- Uma equipa pequena.
- Um domínio que ainda muda muito e cujas fronteiras não estão claras.
- Pouca capacidade de operação: sem automatização madura, muitos serviços são muitos problemas.
O que exige cada opção
Os microsserviços não se pagam só em código. Exigem componentes de que um monólito não precisa:
| Componente | Monólito | Microsserviços |
|---|---|---|
| Implementação automatizada | Recomendável | Imprescindível, por serviço |
| Porta de entrada (API gateway) | Opcional | Necessária |
| Comunicação assíncrona (filas, eventos) | Ocasional | Habitual |
| Rastreabilidade distribuída | Opcional | Imprescindível para depurar |
| Gestão de identidade entre serviços | Simples | Necessária e mais complexa |
| Dados | Uma base partilhada | Uma por serviço, com a sua sincronização |
Cada linha é custo de infraestrutura e de operação. Por isso, a decisão escreve-se (com o seu registo de decisão) e revê-se quando mudam os critérios, não quando muda a moda.
Como o aplicamos: Arquitetura Cloud.