Saga vs Process Manager : la confusion qui casse les workflows
Ce qui distingue une saga d'un process manager, comment les rendre idempotents et gérer les timeouts, et à quel moment passer à Temporal ou à un workflow engine.
Par Elias Varen4 min de lectureMembres
Le virement est bloqué à l'étape 2 sur 4. Le débit a eu lieu, le crédit n'a pas encore été exécuté, et le processus a crashé entre les deux.
Le lendemain matin, l'équipe ouvre les logs et constate qu'il n'y a aucun état sauvegardé, aucun mécanisme de reprise, aucune compensation automatique. Le workflow qu'on appelait « notre saga » n'était pas une saga, c'était une séquence d'appels asynchrones sans état ni garantie.
La plupart des « sagas » en code métier sont en réalité des process managers. La confusion dépasse la sémantique, parce qu'elle a des conséquences sur la reprise d'erreur, la durabilité et la testabilité.
La saga originelle : transaction longue avec compensation
Garcia-Molina et Salem ont formalisé le concept en 1987 dans un papier ACM sur les transactions longue durée. Une saga y est une séquence de transactions locales, chacune dotée d'une transaction compensatoire qui peut l'annuler.
Saga de virement :
T1: débiter compte source → compensation : créditer compte source
T2: créditer compte cible → compensation : débiter compte cible
Si T2 échoue :
Exécuter compensation de T1 → le débit est annuléLa saga originelle est stateless au sens du workflow. Elle décrit un contrat de compensation et n'orchestre rien ; elle ne sait pas « où on en est » dans le processus, seulement que si Ti échoue, les compensations C1...C(i-1) doivent être exécutées dans l'ordre inverse.
Le Process Manager : workflow stateful
Ce que la plupart des équipes appellent « saga » est en réalité un Process Manager, au sens des patterns d'intégration. La distinction est précise :
| Saga | Process Manager | |
|---|---|---|
| État | Stateless — décrit un contrat de compensation | Stateful — persiste l'état du workflow |
| Déclenchement | Chaîne d'événements | Écouteur d'événements avec transitions explicites |
| Rôle | Définir comment annuler un workflow | Orchestrer un workflow multi-étapes |
| Récupération | Compensation dans l'ordre inverse | Reprise depuis le dernier état persisté |
Le dossier complet : Systèmes event-sourcés
À lire ensuite
Toute la rubrique ArchitectureArchitecture
Durable execution : moteur de workflow ou table d'état ?
Un moteur de durable execution et une table d'état résolvent le même problème avec des contraintes opposées, surtout le jour où vous modifiez un workflow dont des instances sont en cours. Les stratégies de versionnement et le critère pour choisir.
7 minMembres
Architecture
Sagas : la compensation que personne ne teste
Une compensation s'exécute rarement, dans le pire état possible, et peut elle-même échouer. Comment énumérer les états de panne partielle d'une saga, ordonner les étapes autour d'un pivot, et tester chaque chemin de retour par injection de pannes.
7 minMembres
Architecture
Event Sourcing : quand il faut refuser le pattern
Ce que l'Event Sourcing rapporte et coûte vraiment, les signaux pour l'adopter ou le refuser, et comment défendre un refus en réunion d'architecture.
7 minLecture libre