Saga Pattern: transazioni locali e compensazioni
Scomporre il processo in transazioni locali coordinate da eventi o da un orchestratore; in caso di errore eseguire azioni compensative di business.
Il problema
Una business transaction attraversa più servizi indipendenti e non può essere racchiusa in un'unica transazione ACID.
Il pattern
Scomporre il processo in transazioni locali coordinate da eventi o da un orchestratore; in caso di errore eseguire azioni compensative di business.
Come funziona
Ogni step committa localmente. Una compensazione non è un rollback SQL: è una nuova operazione che annulla o neutralizza l'effetto precedente secondo le regole di dominio.
Esempio sanitario
Benefici
- Evita lock distribuiti
- Mantiene autonomia dei servizi
- Rende esplicito il workflow
Trade-off
- Consistenza eventuale
- Compensazioni complesse
- Richiede idempotenza e observability
Quando usarlo
Per processi multi-servizio con stati intermedi e compensazioni ben definite.
Quando evitarlo
Quando serve atomicità immediata e non esiste una compensazione sensata.
Pattern correlati
RIFERIMENTI
Fonti e riferimenti
Draft caricato nel progetto
Capsule Informatiche · Materiale progettuale
