Pular para o conteúdo

Arquitetura de software · Estrutura do código · 6 min de leitura

Monólito ou microsserviços

Microsserviços dão independência a times e partes do sistema, ao custo de uma complexidade operacional que muitas equipes não precisam ter.

Monólito modularPedidos → Banco únicoPagamentos → Banco únicoAPI Gateway → PedidosAPI Gateway → PagamentosPedidos → BancoPagamentos → BancoPedidos → Pagamentos: rederedePedidos — móduloPedidosmóduloPagamentos — móduloPagamentosmóduloBanco únicoBanco únicoAPI GatewayAPI GatewayPedidos — serviçoPedidosserviçoPagamentos — serviçoPagamentosserviçoBancoBancoBancoBanco

Arraste para o lado para ver o diagrama inteiro.

Cada microsserviço tem seus dados e é implantado sozinho; o preço é comunicação pela rede, observabilidade e consistência entre serviços.

Comece pelo monólito modular

Um único deploy com módulos bem separados é mais simples de desenvolver, testar e operar. Muitas empresas, como sugere Martin Fowler, começam assim e extraem serviços quando as fronteiras ficam claras.

Quando microsserviços valem a pena

  • Vários times precisam publicar com independência.
  • Partes com necessidades de escala muito diferentes.
  • Fronteiras de domínio estáveis.

O custo

  • Chamadas pela rede: latência, falhas parciais, retries.
  • Consistência entre bancos: sagas e eventos em vez de uma transação.
  • Observabilidade, deploy e segurança para cada serviço.

Em resumo

Vantagens e custos

Vantagens
  • Deploy e escala independentes
  • Times autônomos
Custos e riscos
  • Complexidade operacional
  • Consistência distribuída
  • Latência e falhas de rede

Referências

Continue aprendendo

Todos os temas de arquitetura de software →