Část 16 z 16 · Den 2 · end-to-end, chaos testing

Chyby, které vzniknou až v kombinaci

Problém a zkušenost

Všechno naráz, před očima klienta

Klient vidí jen výsledek. Provoz vidí fronty, DLQ a zpoždění. Oba mají vidět pravdu.

Selhání

  1. Ztráta publikace
  2. Chyby služeb
  3. Duplicity
  4. Mimo pořadí
  5. Ztracený ack

Zkušenost z praxeKteré z těchto selhání jste už v provozu zažili?

TakeawayJednotlivé mechanismy fungují samy. Problémy se ukážou až v kombinaci.

Více k tématu

Co to znamená

Celý proces zahrnuje klienta (stav operace), provoz (metriky, DLQ) a všechny služby naráz.

Proč to používáme

Chceme vědět, zda to, co jsme se naučili, drží pohromadě.

Kdy to dává smysl

Před ostrým provozem a po větších změnách integrace.

Kde se to láme

  • Testovat jen šťastnou cestu.
  • Neověřit pohled klienta i pohled provozu.

Představme si

Při ztrátě publikace 25 % a duplicitách 50 % projde proces jen s Outboxem, retry, Inboxem a řazením zároveň.

Systém není odolný, dokud jsme ho nezkusili porazit.

Princip, aplikace a cvičení

End-to-end a chaos test

Pustíme celý proces s vstřikovanými chybami. Úspěch posuzujeme podle invariantů, ne podle toho, že nic nespadlo.

Obrana

  1. Outbox
  2. Retry + DLQ
  3. Inbox
  4. corrSeq
  5. Saga

Invarianty po doběhu

  1. Právě jeden účet
  2. Právě jedna výplata
  3. Pohled = zdroj pravdy

Trade-offChaos test stojí čas a pevný seed, aby šel opakovat. Zapnout všechny obrany „pro jistotu“ bez pochopení, co která řeší, není řešení.

TakeawayZapínejme obrany po jedné a sledujme, kterou příčinu odstraní.

Více k tématu

Co to znamená

Chaos test spouští systém s injektovanými chybami a po doběhu kontroluje invarianty.

Proč to používáme

Jednotlivé obrany doplňují jedna druhou. Žádná nestačí sama.

Kdy to dává smysl

Před provozem, po změně integrace a pravidelně.

Kde se to láme

  • Test, který padá jednou za sto běhů: použijte pevný seed.
  • Měřit jen úspěch a ignorovat nežádoucí vedlejší účinky.

Představme si

Proces doběhne, ale s duplicitním účtem. Test spadne na invariantu „právě jeden účet“.

Žádná obrana nestačí sama. Ptáme se, kterou příčinu každá z nich odstraňuje.

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