Conceito e mecanismo
Quando cada serviço controla os próprios dados, uma escrita direta na tabela de outro serviço contorna regras e cria dependência do schema. Uma consulta agregada pode usar APIs ou uma projeção construída a partir de eventos, desde que a frescura necessária esteja explícita. Consistência eventual não significa que qualquer atraso seja aceitável. Define o resultado que o utilizador pode observar enquanto a operação está pendente e o que acontece se a convergência não ocorrer. A atomicidade de uma transação local não se estende automaticamente à publicação de uma mensagem num sistema diferente. Uma falha entre essas duas escritas pode deixar dados sem notificação.
Aplicação guiada
Num caso fictício, a reserva é confirmada na base mas o evento não chega ao serviço seguinte. Uma outbox transacional guarda a alteração e a intenção de publicação na mesma transação local; o relay publica depois. Esta separação precisa de monitorização e admite duplicação no envio. Para várias etapas, uma saga conserva o progresso de transações locais e as ações de recuperação. Compensar uma reserva não equivale a restaurar toda a base para uma fotografia antiga, pois outras operações podem ter avançado. Define concorrência, operações não reversíveis, repetição segura e escalada quando a compensação falha. O estado final deve ser reconciliável por uma referência de negócio.
Outbox reduz o intervalo entre commit e publicação, mas não elimina a necessidade de consumidores idempotentes.
Armadilhas comuns
Commit local como sucesso global; saga como isolamento automático; compensação como restauro integral.
Tópicos relacionados: Fronteiras e contratos · Resiliência e carga · Mensagens e filas
Regista intenção, progresso e recuperação como dados operacionais.
Referência: Saga distributed transactions · Microservice architecture patterns and scoped platform examples; primary guidance consulted 2026-09-30