Čá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í
- Frontend
- Calculator API
- DatabázeUPDATE přepíše původní hodnotu
Odeslání žádosti
- Calculator
- Risk
- Approval
- 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
- Kalkulačkazměna příjmu
- UdálostIncomeChanged
- Broker
- Kdokoli, kdo ji potřebujeRisk, projekce, audit…
Co se změní
- Hodnotapřepsaná
- 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í →