Saga Pattern avec Temporal
Advanced Ecosystem 🔴 SeniorDefinition
Pattern de gestion de transactions distribuées où chaque étape a une action compensatoire. En cas d'échec, les compensations sont exécutées en ordre inverse.
Analogie
Annuler une réservation de vacances : d'abord l'hôtel, puis le vol, puis la voiture, dans l'ordre inverse des réservations.
Exemple de code
const compensations = [];
try {
await chargeCard(order); compensations.push(() => refund(order));
await reserveStock(order); compensations.push(() => releaseStock(order));
await shipOrder(order);
} catch (err) {
for (const comp of compensations.reverse()) await comp();
}
Cas d'usage
Gérer des transactions multi-services (paiement + stock + livraison) sans verrou distribué.
Anti-pattern
Oublier d'enregistrer les compensations ou les exécuter dans le mauvais ordre.