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

  1. Producentincome → monthlyIncome
  2. Zpráva v2
  3. Riskčeká „income“
  4. 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

  1. IncomeChanged v1income: 1 200 000
  2. Upcaster÷ 12
  3. IncomeChanged v2monthlyIncome: 100 000
  4. Agregátsprávná hodnota

Pravidla

  1. Přidat pole: ano
  2. Změnit význam: nikdy
  3. 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í