Saga Pattern avec Temporal

Advanced Ecosystem 🔴 Senior

Definition

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.
#architecture#reliability#distributed