É muito usado em arquiteturas de microserviços para manter consistência de dados em transações distribuídas.
1️⃣ O que é o Saga Pattern
- É um padrão de design para gerenciar transações distribuídas em sistemas de microserviços.
- Microserviços não compartilham banco de dados, então não dá para usar transações ACID tradicionais.
- Saga divide a transação global em várias transações locais nos microserviços.
- Cada transação local é autônoma e possui um passo de compensação (rollback) caso algo dê errado.
2️⃣ Como funciona
Existem dois modelos principais de Saga:
A) Choreography (coreografia)
- Microserviços comunicam-se diretamente entre si via eventos.
- Cada serviço executa sua transação local e emite um evento para o próximo serviço.
- Se algum passo falhar, os serviços anteriores executam as transações compensatórias.
Exemplo:
- Serviço de Pedido cria pedido → emite evento
PedidoCriado
- Serviço de Pagamento escuta → faz pagamento → emite evento
PagamentoConfirmado
- Serviço de Estoque escuta → reserva estoque
- Se o pagamento falhar → serviço de pedido cancela o pedido (
compensação
)