Saga Pattern
Patrón de Saga
Una saga enlaza varios pasos guardados en un único trabajo empresarial. Si un paso posterior falla, se reintenta o se agrega otro paso para corregir lo sucedido anteriormente.
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state- ✓Vuelo retenidoflight_tx_7
- ✓Tarjeta cobradapay_tx_8
- !Hotel no disponiblehotel_tx_9
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal stateJOBOtro ejemplo
El pedido `984` reserva stock, autoriza NT$248 y luego solicita el envío. El envío rechaza la dirección. La saga anula la autorización y libera el stock con el mismo ID de saga. Luego registra el pedido como compensado.
Partes principales
- 01ID y estado de Saga
- 02servicios participantes
- 03Transacciones locales
- 04mensajes de resultado
- 05Repetición o compensación
- 06Auditoría y recuperación manual
Úsalo cuando
Use una saga cuando un trabajo empresarial abarque servicios o almacenes de datos. Úsela solo cuando un paso de base de datos de todo o nada no pueda cubrir todo el trabajo. Defina cada paso guardado, la siguiente acción, reintento, acción correctiva y estado final.
No lo uses cuando
No agregues una saga cuando un solo guardado en la base de datos puede completar todo el trabajo. Una acción de corrección es un trabajo nuevo. Puede fallar o dejar un resultado diferente. Pregunta a una persona cuando una acción sea insegura de revertir.
Nombre usado en código
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state Antes de lanzarlo
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 Patrón de Saga (Saga Pattern). User context: El pedido `984` reserva stock, autoriza NT$248 y luego solicita el envío. El envío rechaza la dirección. La saga anula la autorización y libera el stock con el mismo ID de saga. Luego registra el pedido como compensado. Technical concept or control: Patrón de Saga (Saga Pattern). Why it fits: Use una saga cuando un trabajo empresarial abarque servicios o almacenes de datos. Úsela solo cuando un paso de base de datos de todo o nada no pueda cubrir todo el trabajo. Defina cada paso guardado, la siguiente acción, reintento, acción correctiva y estado final. Do not use it when: No agregues una saga cuando un solo guardado en la base de datos puede completar todo el trabajo. Una acción de corrección es un trabajo nuevo. Puede fallar o dejar un resultado diferente. Pregunta a una persona cuando una acción sea insegura de revertir. 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): Ningún estándar oficial único controla todo el término. Su significado puede cambiar según equipos, plataformas o marcos. 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.
Revisa esta petición
Review how Patrón de Saga (Saga Pattern) is used now. Definition: Una saga enlaza varios pasos guardados en un único trabajo empresarial. Si un paso posterior falla, se reintenta o se agrega otro paso para corregir lo sucedido 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.