Část 13 z 16 · Den 2 · replay, snapshot
Chybný pohled nad správnou historií
Problém a zkušenost
Pohled je špatně a potřebujeme nový
Souhrn počítá chybně. Nebo se zítra někdo zeptá na něco, co dnešní pohled neumí.
Chyba v kódu
- Projekce v1sazba se počítá jako příjem
- Souhrnzměn příjmu: 3
Nová otázka
- „Kolikrát se měnila sazba?“
- Pohled na to nemáme
Zkušenost z praxeKdy jste museli opravit report zpětně a báli se, co všechno se při tom stane?
TakeawayKdyž je chyba v pohledu, nemusíme sahat na historii.
Více k tématu
Co to znamená
Projekce je čtecí model odvozený z událostí. Ukládá se zvlášť a drží pozici posledně zpracované události.
Proč to používáme
Chyba v pohledu nezpůsobí ztrátu dat. Pohled lze smazat a postavit znovu novým kódem.
Kdy to dává smysl
Reporty, souhrny, dashboardy, obrazovky, které potřebují jiný tvar než zdrojová data.
Kde se to láme
- Pozice zpracování se neukládá a po restartu se začíná od nuly.
- Handler projekce není idempotentní.
Představme si
Souhrn kalkulace ukazuje tři změny příjmu, přestože poradce měnil příjem dvakrát a jednou sazbu.
Opravit pohled nemusí znamenat sáhnout do minulosti.
Princip, aplikace a cvičení
Replay, rebuild a snapshot
Pohled postavíme znovu z historie. Při tom nesmíme znovu poslat e-mail. Snapshot zkrátí načtení, ale nenahradí historii.
Replay
- Události
- Rebuildrežim bez účinků
- Projekce v2opraveno
- Nic neodešlo
Snapshot
- Snapshot v250
- Události 251…300přehráno 50×
- Stav v300
Trade-offReplay stojí čas a běží vedle provozu. Chybnou historii neopravuje přehrání, ale opravná událost. Snapshot je cache, ne zdroj pravdy.
TakeawayPřestavba pohledu a provádění skutečných operací musí zůstat oddělené.
Více k tématu
Co to znamená
Rebuild smaže projekci a přehraje události novým kódem. Handlery s vedlejšími účinky se při něm nevolají. Snapshot uloží stav v dané verzi a načtení přehraje jen novější události.
Proč to používáme
Oprava pohledu je rutina. Nesmí z ní vzniknout další dopis nebo platba.
Kdy to dává smysl
U každé projekce, jejíž handler může něco odeslat. Snapshot až tehdy, když dlouhé streamy opravdu měříme.
Kde se to láme
- Zakomentovaný kód místo příznaku.
- Starý snapshot po změně kódu agregátu.
- Mazání událostí po snapshotu.
Představme si
Po opravě projekce v2 přehrajeme historii. Klient e-mail o dokončení výpočtu nedostane podruhé.
Zkrátit načítání neznamená zapomenout a opravit pohled neznamená opakovat minulost.
Š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í →