Os microsserviços tornaram-se a escolha padrão para muitas equipas a construir novos sistemas. Mas a decisão de adotar uma arquitetura distribuída deve ser conduzida por requisitos concretos, não pelo que está na moda.
Quando os microsserviços fazem sentido
Os microsserviços são uma boa escolha quando:
- Diferentes partes do sistema precisam de escalar independentemente. Se o seu processamento de pagamentos precisa de 100 instâncias mas a gestão de utilizadores precisa apenas de 2, separá-los poupa recursos.
- As equipas precisam de trabalhar independentemente. Equipas grandes a trabalhar no mesmo código criam custos de coordenação. Limites de serviço claros permitem que as equipas sejam donas do seu domínio do início ao fim.
- Diferentes cadências de deploy. Se o seu serviço de relatórios pode ser implantado uma vez por mês mas a sua API precisa de lançamentos diários, serviços separados evitam fricção.
- A diversidade tecnológica é justificada. Quando um serviço específico beneficia genuinamente de uma linguagem ou base de dados diferente, os microsserviços tornam isso possível.
Quando um monólito modular é melhor
Um monólito modular é muitas vezes o ponto de partida certo:
- A sua equipa é pequena. Um monólito significa uma unidade implantável, ambiente de desenvolvimento mais simples e sem falhas de rede entre serviços.
- O domínio é fortemente acoplado. Se a maioria das operações envolve múltiplas entidades, dividi-las em serviços adiciona latência e complexidade sem benefício.
- Ainda está a aprender o domínio. Monólitos são mais fáceis de refatorar. Extraia serviços quando compreender os limites.
- A maturidade operacional é baixa. Executar microsserviços requer CI/CD sólido, observabilidade e resposta a incidentes. Sem estes, um monólito é mais fiável.
O caminho pragmático
Comece com um monólito modular. Defina limites de módulo claros com interfaces bem definidas. Adicione monitorização e CI/CD. Quando um módulo precisar consistentemente de escala independente, frequência de deploy diferente ou uma equipa separada, extraia-o para um serviço.
O objetivo não é ter microsserviços. O objetivo é ter um sistema fácil de mudar, operar e escalar. Às vezes é um monólito. Às vezes são microsserviços. Muitas vezes é algo entre os dois.