Čá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í
- Ztráta publikace
- Chyby služeb
- Duplicity
- Mimo pořadí
- 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
- Outbox
- Retry + DLQ
- Inbox
- corrSeq
- Saga
Invarianty po doběhu
- Právě jeden účet
- Právě jedna výplata
- 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í →