Saga
Architecture 🔴 SeniorDefinition
Gere les transactions distribuees via une sequence d'etapes locales avec des actions compensatoires en cas d'echec. Alternative a 2PC.
Analogie
Organiser un voyage : reserver vol, hotel, voiture. Si l'hotel est indisponible, tu annules le vol deja reserve.
Exemple de code
const saga = [
{ exec: bookFlight, comp: cancelFlight },
{ exec: bookHotel, comp: cancelHotel },
];
// Execute chaque etape; en cas d'echec, compense en ordre inverse
Cas d'usage
Transactions multi-services dans les microservices (commande, paiement, livraison).
Anti-pattern
Transactions distribuees 2PC qui verrouillent les ressources trop longtemps.