DevOps-Praktiken und CI/CD
1) Ziele und Grundsätze
Schnell und sicher: kurze Zyklen, kleine Änderungspartien, automatische Inspektionen.
Wiederholbarkeit: Infrastruktur als Code (IaC), Umgebung = Code + Richtlinie.
Beobachtbarkeit: Metriken/Traces/Logs aus der Box, SLO als Vertrag.
Compliance: Audit, Change Controlling, regionale Isolation der Daten.
Die goldene Regel: „Erst die Qualität, dann die Geschwindigkeit - sonst kommt die Geschwindigkeit nie“.
2) Verzweigungen und Umgebungen
Trunk-basierte + Feature-Flags sind eine grundlegende Wahl.
Kurze fiche-Zweige (≤ 2-5 Tage), täglich merge in trunk.
Flags (Server-Side) für inkrementelle Lieferung und sichere Rollbacks.
Git-Umgebungen: 'dev' → 'stage' → 'prod' (+ regionale' prod-eu', 'prod-latam').
Förderung von Artefakten: Ein gesammeltes Bild wird durch die Medien befördert (immutable tag by digest).
Wenn GitFlow: seltene Veröffentlichungen von regulatorischen Builds/SDKs - dann Release Branches + „hardening“.
3) Qualitätspyramide und „rote Linie“
1. Statische Analyse (SAST, Linter, Lizenzen).
2. Unit/Property-basierte Tests (Sekunden).
3. Vertragstests (CDC) für APIs und Events (OpenAPI/AsyncAPI, Schema Registry).
4. Integration (Testcontainer, lokale Broker).
5. E2E kritische Wege: KYC- →-Registrierung → Einzahlung → Spielstart → Auszahlung.
6. Last-/Chaos-Tests für Zahlungen/Wallet/Spieleanbieter.
Die Qualität vergeht nicht → die Deploy wird blockiert. Es gibt keine „manuellen Ausnahmen“ ohne Change-Record.
4) SW-Lieferkette (Supply Chain)
SBOM für jedes Image/Paket (CycloneDX/SPDX).
Artefakt-Signaturen (cosign), Richtlinie „nur signiert“ in admission.
SCA/Dependabot: Schwachstellen und Lizenzen.
Provenance/SLSA: reproduzierbare Builds, geschlossener Build-Agent, Attestationen.
Geheimnisse: im Manager (KMS/Externe Geheimnisse), kein einziges Geheimnis in Repos/Protokollen.
5) GitOps и IaC
Infra als Code: Terraform/Pulumi für die Cloud; Helm/Kustomize für k8s.
GitOps-Controller (ArgoCD/Flux): deklarative Manifeste, PR-Revue, Audit-Trail.
Fenster/Freeze: Turnierwochen/Stoßzeiten - Auto-Pause Prod Releases.
OPA/Kyverno-Richtlinien: no': latest', non-root, read-only FS, hostPath-Verbot.
6) Progressive Lieferung
Canary: 1→5→10→25→50→100% auf guardrail Metriken (p95 latency, 5xx, error budget burn).
Blau-Grün: Schnellschalter + Rollback-Plan.
Shadow/Mirroring: Kopieren von Anfragen ohne Auswirkungen auf die Antwort (für neue PSP-Adapter).
Feature Flags: Aktivierung nach Segmenten (Region/Rolle/Partner/Kanal) + Kill-Switch.
7) DB-Migrationen (Expand-and-Contract)
Schritt 1: Erweitern Sie das Schema (neue Spalten/Indizes) - kompatibel mit dem alten Code.
Schritt 2: Code, der in beide Versionen/Felder schreibt.
Schritt 3: Datenmigration durch Hintergrundjobboy, Fortschrittsmetriken.
Schritt 4: Umschalten des Lesens auf neue Felder.
Schritt 5: Entfernen der alten - separate Freigabe.
Verbot von blockierenden DDLs zur Primetime; für hohe Tabellen - Online-Migration.
8) Beobachtbarkeit und SLO
Metriken: RPS, p50/95/99, 4xx/5xx, Sättigung (CPU/mem/queue), DLQ/lag Broker.
Geschäftskennzahlen: TTP (Time-to-Play), TtW (Time-to-Wallet), FTD-Erfolg, KYC-TtV.
Traces: Trace-id von Gateway zu DB.
SLO: z.B. 'Deposit p95 ≤ 300-500 ms', 'success ≥ 98. 5%`, `availability ≥ 99. 9%`.
Burn Rate Alerts + Auto-Pause Releases bei Degradation.
9) Vorfälle, Postmorteme, Verschiebungen
Runbooks auf kritische Streams (Einzahlung/Auszahlung/CUS, Live-Spiele).
Prioritätsskala: P1...P4, Eigentümer, ETA, Kommunikation (Banner, Statusseite, Partner).
Blameless Postmortem mit Aktionsartikeln und Terminen.
On-Call-Wechsel, Chat-Warnungen, Status-Updates alle N Minuten.
Dock Footprint: wer/wann/was gepostet hat (Commit, Artefakt, Medium, Flagge).
10) Sicherheit und Compliance (DevSecOps)
SAST/DAST/IAST, Secret-Scan im CI.
mTLS servis↔servis, JWT mit kleiner TTL, Schlüsselrotation.
Masking PII/PAN in Logs/Traces; WORM-Protokolle von Admin-Aktionen.
Geo-Segregation: Cluster/DB nach Region, Routing über Gateway.
Change Management: Ticket/Zulassung für sensible Bereiche (Wallet/Limits).
11) DORA-Metriken und FinOps
Deployment Frequency (tägliche kleine Releases)
Lead Time for Changes (ideal: Uhr).
MTTR (Erholung: Minuten/Stunden).
Change Failure Rate (Ziel ≤ 15%)
FinOps: Umgebungskosten, RPS-Caching, warme Pools, Auto-Pause-Worker, „Kosten pro Transaktion“.
12) iGaming-Spezifität
Peaks (Turniere/Lives): Einfrieren großer Änderungen, Aufwärmen von Cache/Images, Quotenboosts.
Zahlungen/Wallet: einzelne Pools/Knoten, erhöhte SLOs, Kanarienrollout nach Regionen, doppelte Telemetrie der PSP-Anbieter.
CUS/Compliance: separate Cadence von Releases, obligatorische Post-Apruvas der Compliance.
Partner/Affiliates: sichere SDKs, API-Version mit Support-Fenster und Überwachung alter Kunden.
13) Beispiel für CI/CD (YAML, GitHub Actions → ArgoCD)
yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}
deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"
promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
14) Checklisten
Vor dem Merge im Main
- Einheit/CDC/Integration grün.
- Linters/SAST/Lizenzen sind sauber.
- OpenAPI/AsyncAPI- und DB-Migrationsschemata aktualisiert.
- Fiche-Flags hinzugefügt, Follbecks definiert.
Vor der Veröffentlichung in prod
- Image signiert, SBOM angehängt, HIGH/CRIT-Schwachstellen geschlossen.
- Dashboards/Alerts werden erstellt; Die SLO-Gates sind angeschlossen.
- Rollback-Plan, Kill-Switch, Schatten (falls erforderlich).
- Regionale Einschränkungen und Datenrichtlinien bestätigt.
Vorfälle
- Das Runbook ist gefunden und aktuell.
- Kommunikation mit Nutzern/Partnern (Template, ETA).
- Postmortem um 48 Uhr, Aktionsgegenstände mit Terminen.
15) Anti-Muster
„Wir sammeln für jedes Medium neu“ (keine Artefakt-Förderung).
Manuelle Deployschritte ohne Audit/Wiederholbarkeit.
DB-Migrationen „frontal“, inkompatible API-Antworten.
Geheimnisse in CI-Variablen oder im Repository.
Katastrophale Fiches ohne Flagge/Rollback.
Kein SLO/guardrails bei Kanarienauswurf.
Logs mit PII/PAN, keine Maskierung.
16) Nützliche Microcopy-Vorlagen
Freigabe an (Partner):- "Wir rollen die Aktualisierung des Zahlungsmoduls schrittweise aus (10%→100%). Kurzfristige Verzögerungen bei der Einschreibung von bis zu 2 Minuten sind möglich. ETA Abschluss - 21:00 EET"
- "Der Zahlungsanbieter X ist instabil. Die Einschreibung kann bis zu 15 Minuten dauern. Wir arbeiten an einer Lösung. Das nächste Status-Update ist in 30 Minuten"
- "Die Aktualisierung wurde aufgrund zunehmender Verzögerungen ausgesetzt. Wir geben die vorherige Version zurück. Daten und Vorgänge werden gespeichert"
17) Umsetzungsprozess (4 Sprints)
1. Qualitätsstandards und Pipeline: SAST/Unit/CDC, Single Image, Signaturen, SBOM.
2. GitOps + Umgebungen: Helm/Kustomize, ArgoCD, Artefakt Promotion, Politik der Geheimnisse.
3. Progressive Releases und SLO-Gates: Canary/Shadow, Guardrails, Autopause.
4. Zuverlässigkeit und Kosten: Chaos-Tests, Autoscale/warme Pools, FinOps-Dashboards.
Abschließender Spickzettel
Trunk + Flags + kleine Chargen = stressfreie Geschwindigkeit.
Einzelnes signiertes Artefakt + SBOM = kontrollierte Lieferkette.
GitOps + Policies = Reproduzierbarkeit und Audit.
Canary/Blue-Green + SLO-Gates = sichere Releases.
Expand-and-Contract für DB = Null Ausfallzeiten.
Beobachtbarkeit und DORA = überschaubare Verbesserungen.
Regionale Isolation und Compliance = Gesetzeskonformität und Vertrauen.