JSD2019 Chaos Kata Ramon Anger - jugsaxonyday.org€¦ · Chaos Kata Fitnesstraining für DevOps...

Post on 18-Oct-2020

1 views 0 download

Transcript of JSD2019 Chaos Kata Ramon Anger - jugsaxonyday.org€¦ · Chaos Kata Fitnesstraining für DevOps...

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