Saga
Architecture 🔴 SeniorDéfinition
Gère les transactions distribuées via une séquence d'étapes locales avec des actions compensatoires en cas d'échec. Alternative a 2PC.
Analogie
Organiser un voyage : réserver vol, hôtel, voiture. Si l'hôtel est indisponible, tu annules le vol déjà réservé.
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 distribuées 2PC qui verrouillent les ressources trop longtemps.