Microsserviços

Serviços independentes organizados por domínio, responsáveis pela lógica de negócio, pela persistência e pelos eventos principais do sistema.

O que é um microsserviço nesta arquitetura?

Um microsserviço é uma unidade funcional responsável por um domínio ou bounded context específico.

Por exemplo:

  • usuários
  • produtos
  • pedidos
  • pagamentos
  • estoque
  • notificações

Cada serviço deve ter um propósito claro e limites compreensíveis.

O que vive dentro de um microsserviço

API Layer

Expõe endpoints ou interfaces de entrada.

Application Layer

Orquestra casos de uso.

Domain Layer

Contém regras, entidades, value objects e a lógica principal do domínio.

Infrastructure Layer

Conecta com bancos de dados, filas, clientes externos e detalhes técnicos.

Responsabilidades principais

  • Implementar regras de negócio
  • Validar invariantes do domínio
  • Persistir dados
  • Publicar eventos relevantes
  • Manter contratos claros

Banco de dados por serviço

Uma prática comum é que cada microsserviço tenha controle sobre a sua própria persistência.

Isso ajuda a:

  • reduzir acoplamento
  • proteger o domínio
  • evitar dependência direta entre serviços

Compartilhar um mesmo banco de dados entre muitos serviços costuma levar a acoplamentos difíceis de governar.

Benefícios

  • Limites mais claros por domínio
  • Deploys independentes
  • Evolução desacoplada
  • Ownership de equipe mais definido

Riscos

  • Serviços pequenos demais sem uma razão clara
  • Comunicação síncrona excessiva entre serviços
  • Contratos pouco definidos
  • Consistência distribuída mal resolvida
  • Governança fraca

Como eles se conectam?

Os microsserviços podem se conectar:

  • de forma síncrona, por meio de APIs
  • de forma assíncrona, por meio de eventos

Em geral:

  • usar sincronia quando se precisa de resposta imediata
  • usar assincronia quando se busca desacoplamento temporal

Exemplo prático

ms-orders pode:

  • receber uma solicitação de criação de pedido
  • validar regras do domínio
  • persistir o pedido
  • publicar OrderPlaced

Em seguida, outros serviços reagem a esse evento de acordo com a sua responsabilidade.

Resumo

Os microsserviços são o núcleo funcional da arquitetura. O valor deles está em separar o domínio em limites claros, não em fragmentar o sistema arbitrariamente.