Publicado a

Monólito, microsserviços ou algo pelo meio

Os microsserviços não são uma melhoria do monólito: são outro conjunto de compromissos. Que critérios inclinam a decisão e que componentes exige cada opção.

Linha de serviço Arquitetura Cloud

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

Do monólito aos microsserviçosEspectro com opções intermédias, critérios que empurram para cada extremo e o que exige ir para microsserviços.ARQUITETURA · DESENHOUm espectro, não duas opçõesMonólitoMonólitomodularServiçospor domínioMicrosserviçosBom ponto de partida para a maioriaEmpurram para o monólito← Equipa pequena← Domínio que ainda muda← Pouca automatizaçãoEmpurram para microsserviços→ Equipas que implementam sozinhas→ Escalas muito diferentes→ Disponibilidade por componenteO QUE EXIGE IR PARA A DIREITA Implementaçãoautomatizada Portade API Filase eventos RastreabilidadedistribuídaN100F · n100f.com

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.

Se o seu custo cloud cresce sem que ninguém saiba porquê, ou a sua arquitetura depende de quem a montou, falemos.

Falemos