Část 11 z 16 · Den 2 · Saga, kompenzace
Selhání uprostřed procesu bez společné transakce
Problém a zkušenost
Dlouhý proces bez společné transakce
Hypotéku tvoří kroky v různých službách. Každý má vlastní databázi a žádná společná transakce neexistuje.
- Schváleníhotovo
- Identitahotovo
- Účethotovo
- Výplataselhala
Co teď?
- Účet existuje
- Peníze ne
- Nikdo to nevrátí
Zkušenost z praxeKterý váš proces trvá dny a prochází více systémy?
TakeawayKdyž krok uprostřed selže, předchozí už jsou hotové a samy se nevrátí.
Více k tématu
Co to znamená
Distribuovaná transakce přes služby je v praxi nepraktická. Každý krok se potvrdí lokálně a výsledek může být nekonzistentní.
Proč to používáme
Potřebujeme mechanismus, který uvede proces zpět do přijatelného stavu.
Kdy to dává smysl
U dlouhých procesů přes více služeb.
Kde se to láme
- Spoléhat na to, že selhání „se nestane“.
- Řešit stav ručně až po incidentu.
Představme si
Výplata selže po otevření účtu a podpisu smlouvy. Klient má účet bez peněz.
Bez společné transakce musíme konzistenci udržet obchodně.
Princip, aplikace a cvičení
Process Manager řídí proces
Saga je posloupnost lokálních kroků. Pro každý krok, který lze vrátit, existuje kompenzace.
Postup
- Process Managerdrží stav procesu
- Identita
- Účet
- Smlouva
- Výplata
Kompenzace
- Výplata selhala
- Zavřít účetAccountClosureRequested
- Účet zavřenMortgageAccountClosed
- Proces: compensated
Trade-offKompenzace není návrat času, jen obchodní protiopatření. Nevratné kroky (výplata) dávejme nakonec. Process Manager se může stát monolitem.
TakeawaySaga nedělá proces bezchybným. Dělá selhání zvládnutelným.
Více k tématu
Co to znamená
Process Manager poslouchá události a posílá požadavky o další krok. Při selhání vyvolá kompenzace v opačném pořadí.
Proč to používáme
Proces má jedno místo, kde je vidět, v jakém je stavu.
Kdy to dává smysl
Dlouhé procesy přes více služeb, kde částečné selhání nesmí nechat systém rozbitý.
Kde se to láme
- Kompenzace, která sama selže bez plánu.
- Zavřít účet, na kterém už jsou peníze.
- Process Manager, který se stane monolitem.
Představme si
Výplata selže. Saga požádá o zavření účtu a proces skončí stavem „compensated“. Klient nemá prázdný účet.
Co nelze vrátit, uděláme jako poslední.
Školení pro váš tým
Chcete školení pro svůj tým?
Školení vedeme na vašem kódu a vašem doménovém problému. Domluvíme rozsah, termín a formu.
Probrat školení →