WAF-PERF-060 – Load & Stress Testing in CI/CD Pipeline
Beschreibung
Alle produktionskritischen Services MÜSSEN Lasttests mit definierten Akzeptanzkriterien als Bestandteil der CI/CD-Pipeline haben. Deployment in Produktion MUSS durch bestandenen Lasttest freigegeben werden. Performance-Regressionen (> 10% P99-Verschlechterung gegenüber Baseline) MÜSSEN automatisch erkannt und als Deployment-Blocker behandelt werden. Stresstests MÜSSEN mindestens quartalsweise durchgeführt werden, um Kapazitätsgrenzen zu ermitteln.
Rationale
Performance-Probleme, die in der Produktion entdeckt werden, sind 10–100x teurer als in der Vorproduktionsphase. Jedes Deployment ohne Lasttest ist ein Experiment mit Nutzern als Probanden. Auto-Scaling, Connection Pools, Datenbankabfrage-Pläne und Caching-Konfigurationen müssen alle unter realistischer gleichzeitiger Last validiert werden.
Bedrohungskontext
| Risiko | Beschreibung |
|---|---|
Performance-Regression in Produktion |
Neues Feature verursacht 30% P99-Anstieg → entdeckt erst nach Nutzerbeschweren. |
Auto-Scaling-Versagen |
Scaling-Konfiguration greift zu spät oder gar nicht → entdeckt erst beim echten Traffic-Peak. |
Connection-Pool-Erschöpfung |
Concurrent-Load sättigt Connection Pool → entdeckt erst bei Production-Incident. |
Unbekannte Kapazitätsgrenzen |
Kein Stresstest → niemand weiß, bei welcher Last der Service versagt. |
Anforderung
-
Lasttests MÜSSEN automatisch als Deployment-Gate in der CI/CD-Pipeline ausgeführt werden
-
Akzeptanzkriterien MÜSSEN vor dem Test definiert sein: P95 < [SLO-Ziel], Fehlerrate < 0.1%
-
Performance-Regressionen (> 10% P99-Anstieg gegenüber Baseline) MÜSSEN Deployment blockieren
-
Stresstests MÜSSEN quartalsweise für alle kritischen Services durchgeführt werden
Implementierungsanleitung
-
Lasttest-Framework wählen: k6 (developer-friendly, JavaScript), Gatling (Scala, hoher Throughput), Locust (Python)
-
Test-Szenarien definieren: Haupt-User-Journeys testen, nicht nur einzelne Endpoints
-
Akzeptanzkriterien definieren: P95/P99 < SLO-Ziel, Error-Rate < 0.1%, Target-TPS erreicht
-
CI/CD-Integration: Lasttest-Stage nach Build/Unit-Tests, vor Produktion-Deployment
-
Baseline-Management: Testergebnisse als Artefakte speichern; Baseline nach jedem erfolgreichen Test aktualisieren
-
Regression-Check: Automatischer Vergleich gegen Baseline; > 10% P99-Anstieg = Deployment-Stopp
-
Stresstest-Kalender: Quartalsweise manuelle Stresstests mit 2x/5x Peak-Last
Reifegrad-Abstufung
| Level | Bezeichnung | Kriterien |
|---|---|---|
1 |
Keine Lasttests |
Performance unter Last völlig unbekannt; Probleme werden in Produktion entdeckt. |
2 |
Manuelle Lasttests |
Vor großen Releases manuell ausgeführt; keine CI-Integration; keine Akzeptanzkriterien. |
3 |
Automatisch im CI/CD-Gate |
Automatisch nach Build; Akzeptanzkriterien enforced; Deployment blockiert bei Failure. |
4 |
Regression-Detection |
Baseline-Vergleich automatisch; > 10% P99-Anstieg = Block; quartalsweise Stresstests. |
5 |
Continuous Performance Testing |
Permanente Last auf Staging; Chaos Engineering integriert; ML-Anomalie-Detection. |
Terraform Checks
waf-perf-060.tf.aws.codepipeline-performance-stage
Prüft: AWS CodePipeline sollte eine Performance-Test-Stage vor dem Produktions-Deployment haben.
| Compliant | Non-Compliant |
|---|---|
|
|
Remediation: Performance-Test-Stage zwischen Build und Prod-Deployment hinzufügen. CodeBuild-Projekt für k6/Gatling-Ausführung konfigurieren. Pipeline blockiert Prod-Deployment bei Akzeptanzkriterien-Failure.
Evidenz
| Typ | Pflicht | Beschreibung |
|---|---|---|
IaC / Code |
✅ Pflicht |
Lasttest-Skripte mit Akzeptanzkriterien in Versionskontrolle. |
Process |
✅ Pflicht |
CI/CD-Pipeline-Konfiguration mit Lasttest als Deployment-Gate. |
Config |
Optional |
Historische Lasttest-Ergebnisse als Regression-Baseline. |
Governance |
Optional |
Performance-Test-Strategie-Dokument mit Szenarien und Kadenz. |