Saga Pattern
Padrão Saga
Uma saga liga várias etapas salvas em um único trabalho de negócios. Se uma etapa posterior falhar, ela é reexecutada ou outra etapa é adicionada para corrigir o que aconteceu anteriormente.
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state- ✓Voo mantidoflight_tx_7
- ✓Cartão cobradopay_tx_8
- !Hotel indisponívelhotel_tx_9
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal stateJOBOutro exemplo
O pedido `984` reserva o estoque, autoriza NT$248 e então solicita o envio. O envio rejeita o endereço. A saga anula a autorização e libera o estoque com o mesmo ID de saga. Em seguida, registra o pedido como compensado.
Partes principais
- 01ID e estado da Saga
- 02Serviços participantes
- 03Transações locais
- 04mensagens de resultado
- 05Repetir ou compensar
- 06Auditoria e recuperação manual
Use-o quando
Use uma saga quando um trabalho de negócio abrange serviços ou armazenamento de dados. Use-a apenas quando um passo de banco de dados de tudo ou nada não puder cobrir todo o trabalho. Defina cada passo salvo, próxima ação, tentativa, ação corretiva e estado final.
Não o use quando
Não adicione uma saga quando um único salvamento em banco de dados pode concluir todo o trabalho. Uma ação corretiva é um trabalho novo. Ela pode falhar ou resultar em um resultado diferente. Pergunte a uma pessoa quando uma ação não for segura para desfazer.
Nome usado no código
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state Antes de lançar
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Padrão Saga (Saga Pattern). User context: O pedido `984` reserva o estoque, autoriza NT$248 e então solicita o envio. O envio rejeita o endereço. A saga anula a autorização e libera o estoque com o mesmo ID de saga. Em seguida, registra o pedido como compensado. Technical concept or control: Padrão Saga (Saga Pattern). Why it fits: Use uma saga quando um trabalho de negócio abrange serviços ou armazenamento de dados. Use-a apenas quando um passo de banco de dados de tudo ou nada não puder cobrir todo o trabalho. Defina cada passo salvo, próxima ação, tentativa, ação corretiva e estado final. Do not use it when: Não adicione uma saga quando um único salvamento em banco de dados pode concluir todo o trabalho. Uma ação corretiva é um trabalho novo. Ela pode falhar ou resultar em um resultado diferente. Pergunte a uma pessoa quando uma ação não for segura para desfazer. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): Nenhum padrão oficial único controla todo o termo. Seu significado pode mudar entre equipes, plataformas ou frameworks. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Conferir este pedido
Review how Padrão Saga (Saga Pattern) is used now. Definition: Uma saga liga várias etapas salvas em um único trabalho de negócios. Se uma etapa posterior falhar, ela é reexecutada ou outra etapa é adicionada para corrigir o que aconteceu anteriormente. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.