Čá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.

  1. Schváleníhotovo
  2. Identitahotovo
  3. Účethotovo
  4. Výplataselhala

Co teď?

  1. Účet existuje
  2. Peníze ne
  3. 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

  1. Process Managerdrží stav procesu
  2. Identita
  3. Účet
  4. Smlouva
  5. Výplata

Kompenzace

  1. Výplata selhala
  2. Zavřít účetAccountClosureRequested
  3. Účet zavřenMortgageAccountClosed
  4. 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í