O que é Padrão Saga
Transações distribuídas através de sequências de eventos
Padrão Saga é um padrão para gerenciar transações distribuídas através de uma sequência de transações locais com ações compensatórias em falhas.
O Problema
- Microsserviços têm seus próprios bancos de dados
- Transações ACID clássicas são impossíveis
- Consistência entre serviços é necessária
Tipos de Saga
- Coreografia — serviços trocam eventos
- Orquestração — coordenador central gerencia
Coreografia
- Serviços assinam eventos uns dos outros
- Cada serviço publica seu resultado
- Sem ponto único de falha
- Mais difícil rastrear estado
Orquestração
- Coordenador Saga gerencia o fluxo
- Chama serviços sequencialmente
- Mais fácil rastrear e depurar
- Risco de ponto único de falha
Transações Compensatórias
- Desfazer etapas já concluídas
- Devem ser idempotentes
- Desfazer semântico (não rollback)
- Exemplo: reembolsar pagamento em vez de cancelar