Quando deve usar microsserviços?

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.