Část 12 z 16 · Den 2 · verzování schémat, upcasting
Změna zprávy rozbije cizí službu
Problém a zkušenost
Změníme pole a spadne cizí služba
Kdo odpovídá za to, že změna zprávy nerozbije odběratele? Producent, nebo ti, kdo ji čtou?
- Producentincome → monthlyIncome
- Zpráva v2
- Riskčeká „income“
- NaN
Zkušenost z praxeKdy vám změna cizí zprávy nebo API zastavila vlastní službu?
TakeawayZměna kontraktu je změna pro všechny, kdo ho čtou.
Více k tématu
Co to znamená
Zprávy žijí déle než kód a čtou je týmy, které producent nezná.
Proč to používáme
Bez pravidel se každá změna stane krizí.
Kdy to dává smysl
Jakmile zprávu čte někdo jiný než producent.
Kde se to láme
- Změnit význam pole se stejným názvem.
- Odstranit pole, které někdo ještě čte.
- Nevědět, kdo zprávu čte.
Představme si
Dříve se ukládal roční příjem, dnes měsíční. Starý odběratel čte měsíční hodnotu jako roční.
Kontrakt je slib, který musíme držet i po změně kódu.
Princip, aplikace a cvičení
Verze, upcasting a pravidla kompatibility
Zprávu verzujeme. Staré tvary převádíme při čtení a pravidla kompatibility určují, co producent smí.
Upcasting
- IncomeChanged v1income: 1 200 000
- Upcaster÷ 12
- IncomeChanged v2monthlyIncome: 100 000
- Agregátsprávná hodnota
Pravidla
- Přidat pole: ano
- Změnit význam: nikdy
- Odebrat: po dohodě
Trade-offPodpora starších verzí stojí práci. Rozhodněme, jak dlouho ji budeme držet, a komu patří odpovědnost za převod.
TakeawayHistorii nepřepisujeme. Učíme kód rozumět všem tvarům, které kdy vznikly.
Více k tématu
Co to znamená
Událost nese verzi schématu. Upcaster je čistá funkce, která starší tvar převede na aktuální. Deterministický replay vyžaduje, aby apply nepoužíval čas ani náhodu a aby událost nesla uložený výsledek a verzi algoritmu.
Proč to používáme
Neměnné události musíme číst i po letech. Co jsme jednou slíbili klientovi, nesmí přepsat nový vzorec.
Kdy to dává smysl
Při každé změně tvaru nebo pravidel, která už existují v ostrých datech.
Kde se to láme
- Přepsání starých událostí v úložišti.
- Chybějící upcaster: z roční hodnoty se tiše stane nesmysl.
- Zpětný přepočet starých událostí novým algoritmem.
Představme si
Banka slíbila splátku podle V1. Po nasazení V2 se při načtení nesmí ukázat jiná částka.
Starý tvar zůstane. Převádíme ho při čtení.
Š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í →