View
0
Download
0
Category
Preview:
Citation preview
Chaos Kata
Fitnesstraining für DevOps Teams
Ramon Angerflexis AG
Radebeul, 13.09.2019
Coder?
DevOps?
Chaos Engineering?
Chaos Kata?
http://www.peakpx.com/590485/brown-coffee-sack, gemeinfrei
Seit 1996 Java EntwicklerGrundnahrungsmittel -> natürlich
Kaffee
Früher. Ganz früher wurden Release gemalt
1-2 Releases pro Jahr
NEVER TOUCH A RUNNING SYSTEM!
NEVER CHANGE A RUNNING SYSTEM!Rembrandt und Saskia im Gleichnis vom verlorenen Sohn. (1635/36), gemeinfrei
Copyright JD Hancock, licensed under a Creative Commons Attribution 3.0 Unported License, http://photos.jdhancock.com/photo/2010-06-30-223624-the-
pride-of-one.html
Dann wechselte das Wetter.
Schneller (besser sofort) liefern:sicherer, skalierbarer
besser wartbar/betreibbar näher am Betriebssystem
Dann wechselte das Wetter.
Schneller (besser sofort) liefern:sicherer, skalierbarer
besser wartbar/betreibbar näher am Betriebssystem
Copyright JD Hancock, licensed under a Creative Commons Attribution 3.0 Unported License, http://photos.jdhancock.com/photo/2010-06-30-223624-the-
pride-of-one.html
Und das in deutlich komplexeren Systemen
Was heißt Komplexere Systeme?
eBay: 1000+ Microserviceshttps://www.infoworld.com/article/3041064/what-ebay-looks-like-under-the-hood.html
Netflix: 600+https://blog.imaginea.com/microservices-architecture-an-experience/
AWS: 170+ angebotene Serviceshttps://mytechdecisions.com/it-infrastructure/inside-amazon-web-services-aws-by-the-numbers/
Quelle: https://news.cornell.edu/stories/2019/03/help-ai-microservices-divvy-tasks-improve-cloud-apps
Zalando: 1700+https://www.infoq.com/news/2016/02/Monolith-Microservices-Zalando/
Twitter: 1000https://res.infoq.com/presentations/microservices-optimization-ml/en/slides/sl3-1517968620043.jpg
Uber: 1000+http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html
Spotify: 800https://blogs.oracle.com/de-cloud/was-sind-microservices
Wie gehen die großen Player mit Ausfällen um?
Gibt es da überhaupt Ausfälle?
https://status.aws.amazon.com/ am 11.09.2019
https://developers.facebook.com/status/dashboard/ am 11.09.2019
Everything fails all the
time! Werner Vogels (CTO Amazon):
… Everything fails all the time.We lose whole datacenters!Those things happen…
Everything fails all the
time! Werner Vogels (CTO Amazon):
… Everything fails all the time.We lose whole datacenters!Those things happen…
Und warum?
Technical Dept?
Technical Dept * kann aufgebaut werden* im Code sichtbar* durch Refactoring entfernen
Technical Dept
Dark Dept?
* kann aufgebaut werden* im Code sichtbar* durch Refactoring entfernen
Technical Dept * kann aufgebaut werden* im Code sichtbar* durch Refactoring entfernen
* Fehler beim Zusammenspiel von Komponenten* nicht auf Code beschränkt* kann bedingt bewusst aufgebaut werden * kann „überall“ auftreten* Auswirkungen in komplexen Systemen sichtbar
Dark Dept
Gray Failure
• Sporadischer (hoher) Leistungsverlust• Zufällige Paketfehler/-verluste• Sporadisch eingeschränkte (Ressourcen-) Verfügbarkeit
• Unklare Lastspitzen• Non-fatal errors
Gray Failure: The Achilles' Heel of Cloud-Scale Systems
https://www.cs.jhu.edu/~huang/paper/grayfailure-hotos17.pdf
https://commons.wikimedia.org/wiki/File:ThreeSirensPress_-_Dorian_Gray.jpg, gemeinfrei
Gray Failure
• Sporadischer (hoher) Leistungsverlust• Zufällige Paketfehler/-verluste• Sporadisch eingeschränkte (Ressourcen-) Verfügbarkeit
• Unklare Lastspitzen• Non-fatal errors
<— mit Resilience Mustern begegnen
https://commons.wikimedia.org/wiki/File:ThreeSirensPress_-_Dorian_Gray.jpg, gemeinfrei
Es geht immer irgendwie um Resilience
Resilience:
* Elastizität* Widerstandsfähigkeit* Wiederanlauffähigkeit
Betroffen:
* Organisation* IT-System
https://pxhere.com/en/photo/865929, gemeinfrei
Es geht immer irgendwie um Resilience
Resilience Muster/Lösungen:
* Redundancy* Auto scaling* Immutable infrastructure* Statelessness* Backoff algorithms* Timeout* Idempotent operations* Service degradation* Fallback* Rejection* Circuit breaker* Health check* Caching caching* Bulkhead* Loose coupling* Self-containment* Fail fast* Bounded queues* Shed Load* Monitoring
https://pxhere.com/en/photo/865929, gemeinfrei
Chaos Engineering
Services sind gut getestet
Integration der Services ist hart/komplex/mit Überraschung verbunden
Integration im Cloud-Zeitalter funktioniert anders als in der „IT-Steinzeit“
Find the hard to find bugs
Quelle: https://news.cornell.edu/stories/2019/03/help-ai-microservices-divvy-tasks-improve-cloud-apps
https://pixabay.com/de/photos/hammer-nagel-geb%C3%A4ude-tool-arbeit-3717210/
Geschichten die das Entwicklerleben schreiben …
* Chaos Monkey mal eben in Produktion starten und schauen was passiert
* Prod-DB stoppen und erwarten, dass die Standby-DB übernimmt
* LoadBalancer überbrücken und alle Anfragen auf einen einzelnen Prod-Server leiten (Lastprüfung)
Chaos Engineering done wrong
… ohne die Aktion vorher kommuniziert zu haben!
Chaos Engineering done wrong
Geschichten die das Entwicklerleben schreiben …
* Chaos Monkey mal eben in Produktion starten und schauen was passiert
* Prod-DB stoppen und erwarten, dass die Standby-DB übernimmt
* LoadBalancer überbrücken und alle Anfragen auf einen einzelnen Prod-Server leiten (Lastprüfung)
Chaos Engineering done wrong
Copyright: Telegraph.co.uk
Messen, was man tut
Exakt ein Ziel auswählen
Gut kommunizieren!
Wirkungsradius minimieren
* unverfängliche Umgebung nutzen* Anzahl Fehler begrenzen* Anzahl betroffene Maschinen/ Container begrenzen* Region begrenzen
Chaos Engineering
Wie kann man Chaos
Engineering trainieren?
Wie funktioniert Chaos Engineering eigentlich?
Wie kann man Chaos
Engineering trainieren?
* Chaos Hypothesis Backlog* Chaos Experiment
Wie funktioniert
Chaos Engineering eigentlich?
Chaos Hypothesis
Backlog
1. Bilde System / Service Architektur ab
2. Suche potentielle Fehlstellen
3. Stelle Hypothesen zum Verhalten aufA. (Fast) sicheres WissenB. Idee/Vermutung
4. Bewerten A. Schaden B. Wahrscheinlichkeit
Ergebnis: Backlog—> Priorisieren—> Pflegen/Aktualisieren
BacklogSystem Architektur Problem/Experiment
Chaos Experiment
1. Wähle Hypothese aus Backlog
2. Starte mit stabilem System
3. Erzeuge Fehlerfall
4. Vergleiche Hypothese mit gemessener Systemreaktion
5. Ziehe Konsequenzen aus dem Ergebnis
A. Code/Konfiguration/Architektur
B. AutomatisierenC. BetriebshandbuchD. Nihil
http://principlesofchaos.org
Chaos Experiment
1. Wähle Hypothese aus Backlog
2. Starte mit stabilem System
3. Erzeuge Fehlerfall
4. Vergleiche Hypothese mit gemessener Systemreaktion
5. Ziehe Konsequenzen aus dem Ergebnis
A. Code/Konfiguration/Architektur
B. AutomatisierenC. BetriebshandbuchD. Nihil
http://principlesofchaos.org
[Muss natürlich vorbereitet und
kommuniziert werden]
Wie kann man Chaos
Engineering trainieren?
Wie kann man Chaos
Engineering trainieren?
Wie funktionieren Katas bei DevOps?
Tools kennen und anwenden• Git• Jenkins, Gitlab• Docker• Kubernetes• Puppet, Chef, Ansible …
Verändere eine einzelne Codezeile• mit sichtbarem Output in App• die nur einmal ausgeführt wird • in potentiellem Performance
Bottleneck • in Infrastruktur-Automationund deploye die Änderung
DevOps Kata
Tools kennen und anwenden• Git• Jenkins, Gitlab• Docker• Kubernetes• Puppet, Chef, Ansible …
Verändere eine einzelne Codezeile• mit sichtbarem Output in App• die nur einmal ausgeführt wird • in potentiellem Performance
Bottleneck • in Infrastruktur-Automationund deploye die Änderung
DevOps Kata
Kenne deine Tools
Kenne deine Umgebung
Tools kennen und anwenden• Git• Jenkins, Gitlab• Docker• Kubernetes• Puppet, Chef, Ansible …
Verändere eine einzelne Codezeile• mit sichtbarem Output in App• die nur einmal ausgeführt wird • in potentiellem Performance
Bottleneck • in Infrastruktur-Automationund deploye die Änderung
DevOps Kata
Kenne deine Tools
Kenne deine Umgebung
Experimente?Experimente in der Organisation?
Katas
* Organisation* IT-System
Wie kann man Chaos
Engineering trainieren?
Game Day
Ein Experiment zu einer Zeit an einem Ort
1. Ziel definieren Welches Ergebnis wird erwartet?
2. Experiment vorbereiten Umgebung, Test(s) vorbereiten Rollen/Aufgaben verteilen
3. Zeitpunkt/Ziel kommunizieren!
4. Experiment durchführen Annahmen validieren
5. Auswerten
6. Maßnahmen definieren
Chaos Kata
https://de.slideshare.net/BilalAybar/chaos-engineering-gameday-on-aws
Experiment in der Organisation* * DevOps Team* * Bad Guy* * IT Operations?* * Andere Beteiligte?
Game Day
Ein Experiment zu einer Zeit an einem Ort
1. Ziel definieren Welches Ergebnis wird erwartet?
2. Experiment vorbereiten Umgebung, Test(s) vorbereiten Rollen/Aufgaben verteilen
3. Zeitpunkt/Ziel kommunizieren!
4. Experiment durchführen Annahmen validieren
5. Auswerten
6. Maßnahmen definieren
Chaos Kata
https://de.slideshare.net/BilalAybar/chaos-engineering-gameday-on-aws
[Wie hat das Team agiert?War die Auswirkung überhaupt
sichtbar?]
Experiment in der Organisation* * DevOps Team* * Bad Guy* * IT Operations?* * Andere Beteiligte?
Katas
* Organisation* IT-System
Wie kann man Chaos
Engineering trainieren?
Chaos Paranoia Was kann schon schiefgehen?
Experiment: Adressservice unter HochlastWebservice zur Gültigkeitsprüfung von Adressen …
Ziel: 10.000 Service-Anfragen pro Sekunde per Lasttreiber über API-Gateway; 30 Sekunden langScope: Einzelne Instanz, Pre-ProductionErwartungshaltung: Service verarbeitet Last ohne Fehler 503 (unavailable) zurück zuliefernAnfragen an DataStore werden zu über 95% aus Cache beantwortetGestiegene Last ist per Monitoring deutlich sichtbar
Chaos KataExperiment am Code (Service)
Experiment: Adressservice unter HochlastWebservice zur Gültigkeitsprüfung von Adressen …
Ergebnis:Service liefert in den ersten sechs Sekunden 23.938 mal 503 (unavailable) zurückAnfragen an DataStore wurden in den ersten sechs Sekunden zu 42.3% aus Cache beantwortetGestiegene Last in den ersten sechs Sekunden per Monitoring deutlich sichtbar (Lastanstieg gegenüber Normal 452%)
Chaos KataExperiment am Code (Service)
Experiment: Adressservice unter HochlastWebservice zur Gültigkeitsprüfung von Adressen …
Ergebnis: Service liefert in den ersten sechs Sekunden 23.938 mal 503 (unavailable) zurückAnfragen an DataStore wurden in den ersten sechs Sekunden zu 42.3% aus Cache beantwortetGestiegene Last in den ersten sechs Sekunden per Monitoring deutlich sichtbar (Lastanstieg gegenüber Normal 452%)API-Gateway nach sechs Sekunden abgestürzt; innerhalb der verbleibenden 24 Sekunden nicht wieder verfügbarAutomatischer Neustart des API-Gateway 42 Sekunden nach Absturz
Chaos KataExperiment am Code (Service)
Experiment: Adressservice unter HochlastWebservice zur Gültigkeitsprüfung von Adressen …
Maßnahmen: Pufferungs-Strategie für Adressservice prüfenCaching-Strategie DataStore prüfenBackup-Strategie API-Gateway untersuchenWiederanlaufdauer API-Gateway Instanz prüfen
Automatisierung des Experiments für CI prüfen
Chaos KataExperiment am Code (Service)
Experiment: Adressservice unter HochlastWebservice zur Gültigkeitsprüfung von Adressen …
Maßnahmen: Pufferungs-Strategie für Adressservice prüfenCaching-Strategie DataStore prüfenBackup-Strategie API-Gateway untersuchenWiederanlaufdauer API-Gateway Instanz prüfen
Automatisierung des Experiments für CI prüfen
Chaos KataExperiment am Code (Service)
Maßnahmen priorisieren und einzeln prüfen
Lösungen einzeln umsetzenExperiment mit Einzellösung
wiederholen<— Kata
Chaos Kata gewöhnen uns an potentielle Incidents
Headless Chicken Mode bleibt aus
Zusammenarbeit zwischen Beteiligten ist erprobt
Wissen, wo man hinschauen muss
Erfahrung ermöglicht schnellen Wechsel in Lösungsmodus
Chaos KataExperiment am Code (Service)
Chaos Paranoia Muss das alles geprüft werden?
Chaos Paranoia Muss das alles geprüft werden?
1. Risikobewertung2. Priorisierung
<— gehört bereits zum Chaos Hypothesis Backlog
Smyte Acquisition by Twitter on 21.06.2018
San Francisco-based startup that provides companies with tools to alleviate trolling, spam, harassment and improve security
… A vendor notified us of their acquisition at 6am this morning and shut down their APIs 30 minutes later, creating a production outage for npm (package publishes and user registrations) …
… it appears that some customers have been shut out of smyte's API immediately, without prior warning
https://www.gremlin.com/
https://github.com/Netflix/chaosmonkey
https://github.com/codecentric/chaos-monkey-spring-boot
https://chaostoolkit.org/
https://byteman.jboss.org/
https://github.com/Optum/ChaoSlingr https://github.com/chaosblade-io
https://github.com/linki/chaoskube
https://github.com/alexei-led/pumba
https://github.com/bloomberg/powerfulseal
http://wiremock.org/
https://github.com/mefellows/muxy/
https://github.com/lucky-sideburn/KubeInvaders
https://github.com/xmatters/cthulhu-chaos-testing
https://github.com/Shopify/toxiproxyhttps://github.com/osrg/namazu
Chaos Engineering
Tools
Liste potentieller Tool-Quellen: https://github.com/dastergon/awesome-chaos-engineering
https://www.gremlin.com/
https://github.com/Netflix/chaosmonkey
https://github.com/codecentric/chaos-monkey-spring-boot
https://chaostoolkit.org/
https://byteman.jboss.org/
https://github.com/Optum/ChaoSlingr https://github.com/chaosblade-io
https://github.com/linki/chaoskube
https://github.com/alexei-led/pumba
https://github.com/bloomberg/powerfulseal
http://wiremock.org/
https://github.com/mefellows/muxy/
https://github.com/lucky-sideburn/KubeInvaders
https://github.com/xmatters/cthulhu-chaos-testing
https://github.com/Shopify/toxiproxyhttps://github.com/osrg/namazu
https://medium.com/netflix-techblog/chap-chaos-automation-platform-53e6d528371f
Chaos Engineering
Tools
Liste potentieller Tool-Quellen: https://github.com/dastergon/awesome-chaos-engineering
Nach einem Chaos Experiment ist man immer schlauer und kann besser erklären, warum der Fehler auftreten musste.
Vielen Dank
Chaos Engineering
Recommended