Saga Pattern
Modèle Saga
Une saga relie plusieurs étapes sauvegardées en un seul travail métier. Si une étape ultérieure échoue, elle recommence ou ajoute une autre étape pour corriger ce qui s’est passé précédemment.
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state- ✓Vol maintenuflight_tx_7
- ✓Carte débitéepay_tx_8
- !Hôtel indisponiblehotel_tx_9
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal stateJOBUn autre exemple
La commande `984` réserve le stock, autorise NT$248, puis demande l'expédition. L'expédition rejette l'adresse. La saga annule l'autorisation et libère le stock avec le même ID de saga. Elle enregistre ensuite la commande comme compensée.
Parties principales
- 01ID de Saga et état
- 02Services participants
- 03Transactions locales
- 04messages de résultat
- 05Nouvelle tentative ou compensation
- 06Audit et récupération manuelle
Utilisez-le lorsque
Utilisez une saga lorsqu’un travail métier s’étend sur plusieurs services ou magasins de données. Ne l’utilisez que lorsqu’une étape de base de données « tout ou rien » ne peut couvrir l’ensemble du travail. Définissez chaque étape sauvegardée, l’action suivante, la réessai, l’action de correction et l’état final.
Ne l'utilisez pas lorsque
N'ajoutez pas de saga lorsqu'une sauvegarde unique dans la base de données peut terminer tout le travail. Une action de correction est un nouveau travail. Elle peut échouer ou donner un résultat différent. Demandez à une personne lorsque qu'une action est dangereuse à annuler.
Nom utilisé dans le code
saga ID + local transaction -> next step; failure -> retry | compensation -> terminal state Avant d'expédier
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome: Complete the task with Modèle Saga (Saga Pattern). User context: La commande `984` réserve le stock, autorise NT$248, puis demande l'expédition. L'expédition rejette l'adresse. La saga annule l'autorisation et libère le stock avec le même ID de saga. Elle enregistre ensuite la commande comme compensée. Technical concept or control: Modèle Saga (Saga Pattern). Why it fits: Utilisez une saga lorsqu’un travail métier s’étend sur plusieurs services ou magasins de données. Ne l’utilisez que lorsqu’une étape de base de données « tout ou rien » ne peut couvrir l’ensemble du travail. Définissez chaque étape sauvegardée, l’action suivante, la réessai, l’action de correction et l’état final. Do not use it when: N'ajoutez pas de saga lorsqu'une sauvegarde unique dans la base de données peut terminer tout le travail. Une action de correction est un nouveau travail. Elle peut échouer ou donner un résultat différent. Demandez à une personne lorsque qu'une action est dangereuse à annuler. Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary): Aucun standard officiel unique ne régit l’ensemble du terme. Sa signification peut varier selon les équipes, plateformes ou frameworks. Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
Vérifiez cette demande
Review how Modèle Saga (Saga Pattern) is used now. Definition: Une saga relie plusieurs étapes sauvegardées en un seul travail métier. Si une étape ultérieure échoue, elle recommence ou ajoute une autre étape pour corriger ce qui s’est passé précédemment. Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.