Netflix má Chaos Monkey, který náhodně vypíná produkční servery. Zní to šíleně? Není. Pokud váš systém nezvládne výpadek jednoho serveru, zjistíte to raději kontrolovaně v úterý odpoledne než nekontrolovaně v sobotu v noci.
Princip Chaos Engineering¶
Definujte steady state (systém funguje normálně). Formulujte hypotézu (systém přežije výpadek služby X). Injektujte selhání (zabijte kontejner, přidejte latenci, odpojte databázi). Pozorujte. Buď hypotéza platí (skvělé), nebo ne (opravte a opakujte).
Typy selhání¶
- Instance failure: Zabití kontejneru/procesu
- Network latency: Přidání 500ms delay na síťové rozhraní
- Network partition: Služba A nevidí službu B
- Disk full: Zaplnění disku
- DNS failure: Nefunkční DNS resolving
- Clock skew: Posun systémového času
Nástroje¶
Chaos Monkey: Netflix, zabíjí EC2 instance. Pumba: Chaos testing pro Docker kontejnery. tc (traffic control): Linux nástroj pro simulaci síťových problémů. Pro začátek stačí tc a kill -9.
Začněte malé¶
Nemusíte hned vypínat produkční servery. Začněte ve staging prostředí. Zabijte jeden kontejner a sledujte, co se stane. Přidejte latenci na databázové spojení. Odpojte Redis. Každý experiment odhalí slabinu.
Embrace failure¶
V distribuovaném systému selhání není výjimka — je to normální stav. Chaos Engineering to přijímá a systematicky testuje odolnost. Začněte s jedním experimentem týdně.