4. 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
5. 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
6. 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
8. 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
9. Everything
fails all the
time! Werner Vogels (CTO Amazon):
… Everything fails all the
time.
We lose whole datacenters!
Those things happen…
10. Everything
fails all the
time! Werner Vogels (CTO Amazon):
… Everything fails all the
time.
We lose whole datacenters!
Those things happen…
Und warum?
14. 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
17. Es geht immer
irgendwie um
Resilience
Resilience:
* Elastizität
* Widerstandsfähigkeit
* Wiederanlauffähigkeit
Betroffen:
* Organisation
* IT-System
https://pxhere.com/en/photo/865929, gemeinfrei
18. 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
19. 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/
20. 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
21. … 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)
27. Chaos
Hypothesis
Backlog
1. Bilde System / Service
Architektur ab
2. Suche potentielle Fehlstellen
3. Stelle Hypothesen zum
Verhalten auf
A. (Fast) sicheres Wissen
B. Idee/Vermutung
4. Bewerten
A. Schaden
B. Wahrscheinlichkeit
Ergebnis: Backlog
—> Priorisieren
—> Pflegen/Aktualisieren
BacklogSystem Architektur Problem/
Experiment
28. 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. Automatisieren
C. Betriebshandbuch
D. Nihil
http://principlesofchaos.org
29. 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. Automatisieren
C. Betriebshandbuch
D. Nihil
http://principlesofchaos.org
[Muss natürlich
vorbereitet und
kommuniziert werden]
32. 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-Automation
und deploye die Änderung
DevOps Kata
33. 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-Automation
und deploye die Änderung
DevOps Kata
Kenne deine Tools
Kenne deine Umgebung
34. 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-Automation
und deploye die Änderung
DevOps Kata
Kenne deine Tools
Kenne deine Umgebung
Experimente?
Experimente in der Organisation?
36. 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?
37. 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?
40. Experiment: Adressservice unter
Hochlast
Webservice zur Gültigkeitsprüfung
von Adressen …
Ziel: 10.000 Service-Anfragen pro
Sekunde per Lasttreiber über API-
Gateway; 30 Sekunden lang
Scope: Einzelne Instanz, Pre-
Production
Erwartungshaltung:
Service verarbeitet Last ohne
Fehler 503 (unavailable) zurück
zuliefern
Anfragen an DataStore werden zu
über 95% aus Cache beantwortet
Gestiegene Last ist per
Monitoring deutlich sichtbar
Chaos Kata
Experiment am Code (Service)
41. Experiment: Adressservice unter
Hochlast
Webservice zur Gültigkeitsprüfung
von Adressen …
Ergebnis:
Service liefert in den ersten
sechs Sekunden 23.938 mal 503
(unavailable) zurück
Anfragen an DataStore wurden in
den ersten sechs Sekunden zu
42.3% aus Cache beantwortet
Gestiegene Last in den ersten
sechs Sekunden per Monitoring
deutlich sichtbar (Lastanstieg
gegenüber Normal 452%)
Chaos Kata
Experiment am Code (Service)
42. Experiment: Adressservice unter
Hochlast
Webservice zur Gültigkeitsprüfung
von Adressen …
Ergebnis:
Service liefert in den ersten
sechs Sekunden 23.938 mal 503
(unavailable) zurück
Anfragen an DataStore wurden in
den ersten sechs Sekunden zu
42.3% aus Cache beantwortet
Gestiegene 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ügbar
Automatischer Neustart des API-
Gateway 42 Sekunden nach Absturz
Chaos Kata
Experiment am Code (Service)
43. Experiment: Adressservice unter
Hochlast
Webservice zur Gültigkeitsprüfung
von Adressen …
Maßnahmen:
Pufferungs-Strategie für
Adressservice prüfen
Caching-Strategie DataStore
prüfen
Backup-Strategie API-Gateway
untersuchen
Wiederanlaufdauer API-Gateway
Instanz prüfen
Automatisierung des Experiments
für CI prüfen
Chaos Kata
Experiment am Code (Service)
44. Experiment: Adressservice unter
Hochlast
Webservice zur Gültigkeitsprüfung
von Adressen …
Maßnahmen:
Pufferungs-Strategie für
Adressservice prüfen
Caching-Strategie DataStore
prüfen
Backup-Strategie API-Gateway
untersuchen
Wiederanlaufdauer API-Gateway
Instanz prüfen
Automatisierung des Experiments
für CI prüfen
Chaos Kata
Experiment am Code (Service)
Maßnahmen priorisieren und
einzeln prüfen
Lösungen einzeln umsetzen
Experiment mit Einzellösung
wiederholen
<— Kata
45. 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 Kata
Experiment am Code (Service)
47. Chaos Paranoia Muss das alles geprüft werden?
1. Risikobewertung
2. Priorisierung
<— gehört bereits zum Chaos
Hypothesis Backlog
48.
49. 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