SlideShare une entreprise Scribd logo
1  sur  24
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)
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/
„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!

Contenu connexe

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

Similaire à Od křehkosti k odolnosti (Microservices 2017, Praha) (8)

O2 Firewally nové generace
O2 Firewally nové generaceO2 Firewally nové generace
O2 Firewally nové generace
 
Prezentace z konference ISSS 2014
Prezentace z konference ISSS 2014Prezentace z konference ISSS 2014
Prezentace z konference ISSS 2014
 
Malware Houdiny
Malware HoudinyMalware Houdiny
Malware Houdiny
 
Disaster Recovery – aneb zálohování a obnova dat pro případ, když všechny och...
Disaster Recovery – aneb zálohování a obnova dat pro případ, když všechny och...Disaster Recovery – aneb zálohování a obnova dat pro případ, když všechny och...
Disaster Recovery – aneb zálohování a obnova dat pro případ, když všechny och...
 
mDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictvímDevCamp 2013 - Bezpečnost mobilního bankovnictví
mDevCamp 2013 - Bezpečnost mobilního bankovnictví
 
Webinář: Oracle DBA - RAC - Úvod do problematiky
Webinář: Oracle DBA - RAC - Úvod do problematikyWebinář: Oracle DBA - RAC - Úvod do problematiky
Webinář: Oracle DBA - RAC - Úvod do problematiky
 
PHP App architecture - Symfony + DDD + CQRS
PHP App architecture - Symfony + DDD + CQRSPHP App architecture - Symfony + DDD + CQRS
PHP App architecture - Symfony + DDD + CQRS
 
Kolik webových útoků znáš...
Kolik webových útoků znáš...Kolik webových útoků znáš...
Kolik webových útoků znáš...
 

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

Notes de l'éditeur

  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