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!

Telegram
@Gamble_GC
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.