GH GambleHub

Chaos Engineering: Nachhaltigkeit von Systemen

Chaos Engineering: Nachhaltigkeit von Systemen

1) Warum Chaos-Engineering

Ziel ist es, die Nachhaltigkeit der Prod-Architektur nicht durch Worte und Diagramme, sondern durch Experimente zu beweisen. Wir erstellen bewusst kontrollierte Störungen, um:
  • Überprüfung der Hypothesen über das Systemverhalten und Validierung des SLO;
  • versteckte SPOFs, falsche Timeouts/Retrays, Kaskadeneffekte erkennen;
  • Übungsteams: Spieltage, Runbook-Training, Kommunikation;
  • bilden eine Kultur der „Nachhaltigkeit standardmäßig“ und nicht „hoffen auf das Beste“.

Wichtig: Chaos Engineering ≠ „alles kaputt machen“. Dies ist eine wissenschaftliche Methode: Steady-State → Hypothese → Experiment → Schlussfolgerungen → Verbesserungen.

2) Grundzyklus des Experiments

1. Steady-State (Basislinie): Welche SLIs sind stabil? (z.B. Erfolg ≤500 ms in 99. 95%).
2. Hypothese: Bei einem Verlust von einem AZ p95 steigen <10% und die Verfügbarkeit ≥99. 9%.
3. Experiment: geplantes Folt mit begrenztem Radius und Stop-Kriterien.
4. Beobachtung: Metriken/Traces/Logs, Burn-Rate SLO, Business SLI (z.B. erfolgreiche Einzahlungen).
5. Verbesserungen: Fundstücke erfassen, Timeouts/Limits/Routing ändern, Runbook aktualisieren.
6. Automatisierung/Regression: Wiederholen Sie im Zeitplan, fügen Sie CI/CD und Spieltage Kalender hinzu.

3) Sicherheitsgeländer (safety first)

Blast Radius: Wir beginnen mit einem schmalen - ein Pod/instance/Route/namespace.
Guardrails: Alerts auf SLO Burn-Rate (schnell/langsam), Retraylimits, QPS-Limit, Incident Budget.
Stop-Kriterien: „wenn error-rate> X% oder p99> Y ms N Minuten - sofort stop und rollback“.
Fenster: On-Call-Arbeitszeiten, benachrichtigte Stakeholder, eingefrorene Releases.
Kommunikation: IC/Tech lead/Comms, klarer Kanal (Kriegsraum), Meldungsmuster.

4) Fehlerklassen und Hypothesenideen

Netzwerk: Delay/Jitter/Loss, partieller Port Drop, „Flying“ Kommunikation zwischen Diensten/PSP.
Computer/Knoten: Prozesse töten, CPU überhitzen, Dateideskriptoren erschöpfen, enge Verbindungspools.
Speicher und DB: Wachstum der Laufwerke Latenz, lag Repliken, Stop ein Shard/Leader, Split-Brain.
Abhängigkeiten: Degradation externer APIs, Provider Limits, 5xx/429 Bursts.
Change Management: fehlgeschlagene Veröffentlichung, schlechte Ficha-Flagge, teilweise Rollout.
Perimeter: CDN degradiert, DNS/Anycast drift, WAF/Bot Protection Failure.
Region/AZ: Totalverlust oder „partieller“ Vorfall (etwas schlimmer und unvorhersehbar).

5) Werkzeuge und Techniken

Kubernetes: Chaos Mesh, Litmus, PowerfulSeal, kube-monkey.
Clouds: AWS Fault Injection Simulator (FIS), Fault Domains in der Cloud.
Netzwerk/Proxy: Toxiproxy (TCP-Gift), tc/netem, iptables, Envoy fault (delay/abort), Istio fault injection.
Prozesse/Knoten: 'stress-ng', cgroups/CPU-throttle, disk fill.
Traffic-Routing: GSLB/DNS-Gewichte, kanarische/blau-grüne Umschaltung für Failover-Prüfungen.

6) Beispielszenarien (Kubernetes)

6. 1 Delay/abort auf der Strecke (Istio VirtualService)

yaml apiVersion: networking. istio. io/v1alpha3 kind: VirtualService metadata: { name: api-chaos }
spec:
hosts: ["api. internal"]
http:
- route: [{ destination: { host: api-svc } }]
fault:
delay: { percentage: { value: 5 }, fixedDelay: 500ms }
abort: { percentage: { value: 1 }, httpStatus: 503 }

Hypothese: Client-Timeouts/Retrays und CBs halten p95 <300ms und error-rate <0. 5%.

6. 2 Pod Kill (Chaos Mesh)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: PodChaos metadata: { name: kill-one-api }
spec:
action: pod-kill mode: one selector:
namespaces: ["prod"]
labelSelectors: { "app": "api" }
duration: "2m"

Hypothese: Balancer und HPA kompensieren den Verlust einer Instanz ohne p99-Wachstum> 20%.

6. 3 Netzwerkchaos (Verzögerung zur DB)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: NetworkChaos metadata: { name: db-latency }
spec:
action: delay mode: all selector: { namespaces: ["prod"], labelSelectors: {"app":"payments"} }
delay: { latency: "120ms", jitter: "30ms", correlation: "25" }
direction: to target:
selector: { namespaces: ["prod"], labelSelectors: {"role":"db"} }
mode: all duration: "5m"

Hypothese: Pools/Timeouts/Cache reduzieren den Einfluss; p95 Zahlungen bleiben ≤ SLO.

6. 4 Füllen der Festplatte

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: IOChaos metadata: { name: disk-fill-logs }
spec:
action: fill mode: one selector: { labelSelectors: {"app":"ingest"} }
volumePath: /var/log size: "2Gi"
duration: "10m"

Hypothese: Die Rotation der Protokolle/Quoten/Alerts wird vor der Degradation der Routen ausgelöst.

7) Experimente außerhalb der K8s

7. 1 Toxiproxy (lokal/Integration)

bash toxiproxy-cli create psp --listen 127. 0. 0. 1:9999 --upstream psp. prod:443 toxiproxy-cli toxic add psp -t latency -a latency=200 -a jitter=50 toxiproxy-cli toxic add psp -t timeout -a timeout=1000

7. 2 Envoy HTTP-Fehler (Perimeter/Mesh)

yaml fault:
delay: { fixed_delay: 0. 3s, percentage: { numerator: 10, denominator: HUNDRED } }
abort: { http_status: 503, percentage: { numerator: 1, denominator: HUNDRED } }

7. 3 AWS FIS (Beispielidee)

Experiment „Kill“ N% EC2 in der Auto Scaling Group, EBS-Latenz künstlich anheben, NAT-GW in einem AZ ausschalten.
Integrierte Stopp-Kriterien für CloudWatch SLO-Metriken.

8) Beobachtbarkeitsmetriken während Chaos

SLO/SLI: fraction of good requests, p95/p99, burn-rate.
RED-Modell auf kritischen Routen (Rate, Errors, Duration).
Pools: Warten auf Verbindung p95, Dienstprogramm.
DB: lag Repliken, Schlösser, p95 Anfragen Drift.
Netzwerk: retransmits, RTT, dscp/ecn Verhalten.
Business SLI: Transaktionserfolg (Einzahlungen/Checkout),% Retouren/Fehler.
Tracing: Selektive Traces (Beispiele), Korrelation von Release-Annotationen.

9) Integration mit SLO/Error-budget

Experimente innerhalb des Fehlerbudgets planen: Das Chaos darf die Quartalsziele nicht „durchkreuzen“.
Burn-Rate-Alerts als automatischer Kill-Switch.
Berichterstattung: „wie viel Budget verbrannt“, „welche Abweichungen steady-state“.

10) Spieltage (Übungen)

Szenario: Kurzlegende (z.B. „Region-Ost verloren“), Injektionsschritte, SLO-Ziele, Rollen, Zeit.
Bewertung: RTO/RPO ist sachlich, Qualität der Kommunikation, Korrektheit des Runbooks.
Retro: Liste der Verbesserungen mit Eigentümern und Fristen, Aktualisierung der Dokumentation/Dashboards.

11) Automatisierung und CI/CD

Smoke-Chaos: kurze Staging-Tests bei jeder Freigabe (z.B. 1 Pod-Kill + 200 ms Delay pro Route).
Nacht/Woche: schwerere Szenarien (5-15 min) mit Bericht.
Promo-Gates: Wenn p95/Fehler> Schwelle auf canary - Auto-Rollback.
Repositories mit Versuchskatalog (YAML + Runbook + SLO-Thresholds).

12) Anti-Muster

„Break Prod ohne Geländer“: keine Stop-Kriterien, kein On-Call → das Risiko eines echten Vorfalls.
Einmalige Aktion statt Prozess.
Chaos ohne Steady-State: Es ist nicht klar, was als Erfolg/Misserfolg zu betrachten ist.
Übermäßige Retrays → Selbst-DDoS bei der Injektion von Verzögerungen.
Business SLI ignorieren: „Technar“ -Erfolge bei Zahlungsausfällen/Aufträgen.
Mangel an Post-Analyse und Eigentümer von Verbesserungen.

13) Checkliste Umsetzung (0-45 Tage)

0-10 Tage

Definieren Sie steady-state SLI (user + business).
Werkzeug auswählen (Chaos Mesh/Litmus/Toxiproxy/FIS).
Beschreiben Sie das Geländer: blast radius, stop-Kriterien, Fenster, Rollen.

11-25 Tage

Führen Sie die ersten Experimente durch: Pod-Kill, 100-200 ms Delay pro kritischem Upstream, Drop 1% der Pakete.
Konfigurieren Sie Burn-Rate-Alerts, verknüpfen Sie Kill-Switch mit Stop-Kriterien.
Verbringen Sie den ersten Spieltag, sammeln Sie Retro und Fixes.

26-45 Tage

Hinzufügen von Skripten auf AZ-Ebene/Abhängigkeiten (externes PSP, DB-Lag).
Automatisieren Sie das nächtliche Chaos auf Staging; Vorbereitung von „saisonalen“ Szenarien (Peaks).
Versuchskatalog und regelmäßige Berichte für das Management/SRE.

14) Reifegradkennzahlen

≥80% der kritischen Routen haben die beschriebenen Experimente und Steady-State-Metriken.
Der Auto Kill-Switch wird ausgelöst, wenn die p99/error-rate Schwellenwerte überschritten werden.
Vierteljährlich - AZ Level Game-Day/Region; ≥1 Mal/Monat - Zielszenario der Abhängigkeiten.
Die MTTR sinkt nach einem Zyklus von Verbesserungen, die Korrelation „Release ↔ Incident“ nimmt ab.
Der Anteil „unerwarteter“ Stürze bei realen Störungen tendiert → gegen Null.
Dashboards zeigen „Resilienz“ als KPIs (Burn-Rate, Erholungszeit, Anteil erfolgreicher DR-Aktionen).

15) Beispiele für Guardrails und Stop-Trigger

Stop bei: 'http _ req _ failed> 1%' 3 Minuten, 'p99> 1000 ms' 3 Fenster, 'deposit _ success <99. 5%`.
Reduzierter Blast-Radius: Manifest-Auto-Rollback, GSLB-Gewichte zurückgeben, Fehlerinjektionen deaktivieren.
Stop-Befehl: einzelne Schaltfläche/Skript mit Ursachenprotokollierung.

16) Kultur und Prozesse

Chaos ist Teil des SRE-Rhythmus, nicht „extrem“.
Transparente Berichte, Erkennung von Schwachstellen, Korrekturmaßnahmen.
On-Call-Training, Simulation der Kommunikation mit Kunden/Partnern.
Verknüpfung mit SLA/SLO und Budgets: Chaos sollte die Zuverlässigkeit erhöhen, nicht untergraben.

17) Fazit

Chaos Engineering macht aus der „Hoffnung auf Neun“ nachweisbare Nachhaltigkeit. Formulieren Sie Steady-State, setzen Sie Geländer, brechen Sie klein und kontrolliert, beobachten Sie SLO und Business SLI, erfassen und automatisieren Sie Verbesserungen. Dann werden aus echten Störungen überschaubare Ereignisse: ein vorhersehbares RTO, ein sicheres Error-Budget und die Bereitschaft des Teams, ohne Panik zu handeln.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.