Pular para o conteúdo

Arquitetura de software · Comunicação · 7 min de leitura

Arquitetura orientada a eventos, CQRS e sagas

Serviços que reagem a eventos, modelos separados para escrita e leitura, e transações longas feitas de passos com compensação.

Pedido criado → Pagamento: eventoPagamento → Estoque: eventoEstoque → Envio: eventoEnvio → Pedido confirmadoEstoque → Compensação: sem estoqueCompensação → PagamentoPedido criadoPedido criadoPagamento — reserva valorPagamentoreserva valorEstoque — reserva itensEstoquereserva itensEnvioEnvioPedido confirmadoPedido confirmadoCompensação — estorna pagamentoCompensaçãoestorna pagamento

Arraste para o lado para ver o diagrama inteiro.

Sem uma transação única entre bancos, cada passo tem uma ação de desfazer que roda se um passo seguinte falhar.

Orientada a eventos

Serviços publicam fatos (“pedido criado”) e outros reagem. Isso desacopla times e permite acrescentar consumidores sem mudar o produtor. O preço é a consistência eventual e o rastreamento mais difícil.

CQRS

Separar o modelo de escrita (comandos, validação de regras) do de leitura (consultas otimizadas, muitas vezes desnormalizadas e atualizadas por eventos). Vale quando leitura e escrita têm necessidades muito diferentes; em sistemas simples, só adiciona complexidade.

Sagas

Uma saga quebra uma transação de negócio em passos locais. Se um falha, executam-se compensações dos passos anteriores. Pode ser coreografada (cada serviço reage a eventos) ou orquestrada (um coordenador manda os comandos).

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →