Iniciante Arquitetura de Sistemas

Arquitetura Orientada a Eventos

Em vez de um sistema chamar o outro diretamente e esperar a resposta, na arquitetura orientada a eventos as partes se comunicam por mensagens. Algo aconteceu (um evento), alguém avisa, e quem se interessa reage. Isso desacopla os componentes.

Produtores e consumidores

  • Produtor: gera o evento. Ex.: “pedido criado”.
  • Consumidor: escuta e reage. Ex.: “enviar e-mail”, “baixar estoque”.

O produtor não sabe quem vai consumir. Ele só anuncia.

Produtor  -->  [ Fila / Broker ]  -->  Consumidor A
                                  -->  Consumidor B

Filas (queues)

Uma fila guarda eventos em ordem até que um consumidor os processe. Útil para trabalho pesado e assíncrono:

[pedido] [pedido] [pedido]  ->  Worker pega um por vez

Se o worker cair, as mensagens esperam. Quando ele volta, continua de onde parou. Cada mensagem normalmente é entregue a um consumidor.

Pub/Sub (publicar/assinar)

No pub/sub, um evento publicado é entregue a todos os assinantes interessados:

Evento "usuário cadastrado"
   -> serviço de e-mail
   -> serviço de analytics
   -> serviço de boas-vindas

Adicionar um novo assinante não muda o produtor.

Assíncrono

O produtor envia e segue a vida, sem esperar o resultado. Isso deixa a resposta ao usuário rápida e distribui o trabalho ao longo do tempo.

Vantagens

  • Componentes desacoplados e independentes.
  • Escala fácil: adicione mais consumidores.
  • Resiliência: picos viram fila, não quedas.

Desvantagens

  • Mais difícil de depurar e rastrear o fluxo.
  • Consistência é eventual, não imediata.
  • Precisa lidar com mensagens duplicadas e ordem.

Quando usar

Ideal quando tarefas podem rodar em segundo plano (e-mails, notificações, processamento de imagens) ou quando vários sistemas precisam reagir ao mesmo fato sem acoplar tudo.