Od křehkosti k odolnosti (Microservices 2017, Praha)

Michal Taborsky
Michal TaborskySystems Architect, Investor, Educator
Křehký → Odolný
Microservices konference, Praha 2017
Michal Táborský, CTO Mall Group
Everything fails
all the time
—Werner Vogels (CTO Amazon)
Co se může
pokazit…
… to se taky pokazí
1
4 úrovně odolnosti systému
▪Křehký (Fragile)
▪Robustní (Robust)
▪Odolný (Resilient)
▪Antifragilní (Anti-fragile)
Od křehkosti k odolnosti (Microservices 2017, Praha)
Skupiny chyb
▪Síťové chyby
▪Pomalá odezva
▪Zaseknutí
▪Sémantické chyby
Kaskádové chyby
1. Vypadne jeden uzel clusteru
2. Ostatní uzly přeberou jeho práci
3. Celý cluster se zpomalí
4. Dojdou worker procesy na
aplikačním serveru
Monitoring
Monitoring a
logování jsou
nezbytné funkční
požadavky každé
microservice
Obrana
Jak se vyrovnat s krutostí světa počítačů
2
Redundance
Timeout
▪ Connection
▪ Socket
Vzor „Závod“
Pošlu požadavek
rovnou na více
instancí a čekám
kdo se ozve dříve
Caching
▪ Snížení zátěže
▪ Ochrana zdroje
▪ Poslední
záchrana
Vzor „Pojistka“
▪ Detekce výpadku
▪ „Fail fast“
▪ Nahození
Protitlak / Přepážka
Naučte se říkat „ne“
▪ Fronty
▪ Thread pools
Vítáme chaos
Když něco bolí, dělejte to co nejčastěji
3
Testování
▪ Unit testy
▪ Regresní testy
▪ Integrační testy
▪ Akceptační testy
▪ …
„Chaos Engineering is the discipline of experimenting
on a distributed system in order to build confidence
in the system’s capability to withstand turbulent
conditions in production“
http://principlesofchaos.org/
Od křehkosti k odolnosti (Microservices 2017, Praha)
„Game day“ cvičení
▪ Transparentnost
▪ kill -9
▪ rm –rf /
▪ Vypojení kabelu
Chaos monkey
▪ „Every day is game day“
▪ Netflix Simian Army
▪ Saboteur
Vstřikování chyb
▪ „Kanárek“
▪ Generování chyb
▪ Náhodná latence
Rekapitulace
▪ „Trust no one“
▪ Bez monitoringu nelze zlepšovat
▪ Redundance, Timeouty, Cache, Pojistky
▪ Chaos problémy nezpůsobuje, jen odhaluje
Díky!
Otázky?
@whizz
michal.taborsky@mall.cz
PS: Pro MallGroup hledáme vývojáře!
1 of 24

More Related Content

Similar to Od křehkosti k odolnosti (Microservices 2017, Praha)(8)

Od křehkosti k odolnosti (Microservices 2017, Praha)

Editor's Notes

  1. Síťové chyby – není vůbec dostupná, packet loss, rozpojení (split brain)
  2. Snadná záměna příčiny a důsledku
  3. Nesnažit se optimalizovat MTBF (Mean time between failure) Minimalizovat MTTR (Mean time to recovery)
  4. Je lepší rychle skončit s chybou Pokud to jde, je možné odpovědět „zařazeno do fronty“ Je potřeba rychle zkusit znovu
  5. Nižší efektivita Vhodné pro kritické komponenty Buď read-only nebo idempotentní operace
  6. Použiju cachovanou verzi i když už vypršela Obecně – co zlepšuje performance zlepšuje spolehlivost
  7. Counter chyb, který se resetuje při úspěšném volání https://martinfowler.com/bliki/CircuitBreaker.html Nahození – po timeoutu, nebo náhodně exponential backoff
  8. Backpressure – bráním se tomu co mě zabije, sebezáchova Je potřeba znát limity – počty procesů, threadů atd. Cílem není je všechny odstranit Fronty pomáhají zvládat nárazy Rate limiting v API Pomáhá s kaskádovými chybami
  9. Netflix – pionýři Vycházím ze stabilního stavu, rozdělím na kontrolní a zkušební skupinu Hypotéza – budou se chovat stejně Ve zkušební skupině zavedu nestabilitu
  10. Bez monitoringu to nemá cenu Potřebuju vědět a znát, co je normální stav Koukat na metriky když je vše OK
  11. Nemá testovat něco, o čem víme že nebude fungovat Kill procesů Kill serverů Všichni o tom ví a jsou na to připraveni V první fázi je dobré to dělat na testu, ale produkce má svá specifika a je potřeba to dělat i tam
  12. Je potřeba mít na to kulturu Komunikace Běžet pouze když jsou všichni v práci Speciální scénáře pro další komponenty
  13. Záměrné zavádění chybových stavů do zdravého systému Sandbox prostředí Vyčleněná instance Náhodně vracím chybové stavy
  14. Předpokládejte, že co se může pokazit se pokazí Monitoring, logy a metriky