Část 01 z 16 · Den 1 · doménová událost

Uložený výsledek bez příběhu

Problém a zkušenost

Kalkulačka ukládá výsledek, ne příběh

Zapíše řádek a odpoví. Jenže po odeslání žádosti se kolem ní začne dít spousta dalšího.

Uložení

  1. Frontend
  2. Calculator API
  3. DatabázeUPDATE přepíše původní hodnotu

Odeslání žádosti

  1. Calculator
  2. Risk
  3. Approval
  4. Výplataoffline

Zkušenost z praxeKdy vám naposledy chyběla historie změny, nebo vás zdržela služba, na kterou jste jen čekali?

TakeawayCena je dvojí: zmizí historie a volající je svázaný s každou službou v řetězci.

Více k tématu

Co to znamená

Request/response: volající pošle požadavek a čeká na odpověď. Stav je jeden řádek, který se při změně přepíše.

Proč to používáme

Je to nejjednodušší model. Snadno se ladí a zná ho každý.

Kdy to dává smysl

U malých systémů a jednoduchých obrazovek, kde nepotřebujeme historii ani nezávislost služeb.

Kde se to láme

  • Po UPDATE nevíme, kdo a z čeho hodnotu změnil.
  • Jedna pomalá nebo offline služba shodí celé volání, ale kroky před ní už data změnily (částečné selhání).
  • Řetěz synchronních volání násobí latenci i riziko výpadku.

Představme si

Poradce uloží příjem 85 000 Kč a o chvíli později 60 000 Kč. V databázi zůstane jen poslední číslo.

CRUD není chyba. Je to rozhodnutí, které má své důsledky.

Princip, aplikace a cvičení

Z hodnoty se stane událost

Místo „příjem je 60 000“ zapíšeme „příjem byl změněn na 60 000“. Ostatní služby se dozvědí a samy rozhodnou, co udělají.

Odesílatel nezná příjemce

  1. Kalkulačkazměna příjmu
  2. UdálostIncomeChanged
  3. Broker
  4. Kdokoli, kdo ji potřebujeRisk, projekce, audit…

Co se změní

  1. Hodnotapřepsaná
  2. Faktv minulém čase, s časem a příčinou

Trade-offZískáme nezávislost služeb a stopu změn. Platíme zpožděním (eventual consistency) a složitější diagnostikou.

TakeawayUdálost je fakt, který se stal. Příkaz je žádost, aby se něco stalo.

Více k tématu

Co to znamená

Událost pojmenujeme v minulém čase a přiložíme údaje, které popisují změnu. Kdo na ni zareaguje, vlastní odesílatel nezná.

Proč to používáme

Služby se mohou měnit nezávisle. Nová služba se přidá odběrem události, bez zásahu do odesílatele.

Kdy to dává smysl

Když na jednu změnu navazuje práce na více místech nebo když potřebujeme vědět, co se stalo.

Kde se to láme

  • Událost, která je ve skutečnosti skrytý příkaz („UdělejX“).
  • Očekávat okamžitý výsledek: reakce přijdou s prodlevou.
  • Zavést události, aniž víme, kdo je bude číst.

Představme si

Poradce změní příjem. Událost IncomeChanged si přečte Risk i projekce a každá z nich si s ní naloží po svém.

Nezačínáme technologií, ale změnou způsobu, jak o změnách mluvíme.

Š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í