Design-Prinzipien: Operational Excellence
Die Design-Prinzipien sind technische Anforderungen an die Architektur von Systemen, die exzellent betrieben werden sollen. Sie ergänzen die Prinzipien (OP1–OP7) um konkrete Designentscheidungen.
OD1 – Structured Logging mit konsistentem Schema
Alle Services MÜSSEN strukturierte Logs in JSON ausgeben. Das Log-Schema MUSS mindestens folgende Felder enthalten:
| Feld | Typ | Beschreibung |
|---|---|---|
|
ISO 8601 |
Zeitstempel der Log-Zeile in UTC |
|
String |
|
|
String |
Servicename (aus Umgebungsvariable oder Deployment-Konfiguration) |
|
String |
OpenTelemetry Trace-ID oder AWS X-Ray Trace-ID |
|
String |
OpenTelemetry Span-ID |
|
String |
Anfrage-spezifische ID für Log-Korrelation |
|
String |
Lesbare Beschreibung des Events |
|
Object (optional) |
Fehler-Details mit |
OD2 – Trace-ID-Propagation über Servicegrenzen
Alle Services MÜSSEN Trace-IDs und Span-IDs aus eingehenden Requests extrahieren und in ausgehenden Requests propagieren.
-
W3C TraceContext Header (
traceparent,tracestate) sind der Standard -
Bei Fehlen eines Trace-Contexts MUSS ein neuer Trace erzeugt werden
-
Async-Kommunikation (SQS, Kafka) MUSS Trace-Kontext in Message-Headern transportieren
OD3 – Health Endpoints als Betriebsschnittstelle
Jeder Service MUSS folgende Health Endpoints bereitstellen:
| Endpoint | HTTP-Methode | Beschreibung |
|---|---|---|
|
GET |
Liveness-Probe: Service läuft (Antwort 200 = alive, 503 = restart erforderlich) |
|
GET |
Readiness-Probe: Service bereit für Traffic (prüft DB-Verbindung, Abhängigkeiten) |
|
GET |
Startup-Probe: Service-Initialisierung abgeschlossen |
|
GET |
Prometheus-Metriken (Prometheus-Format oder OpenMetrics) |
OD4 – Immutable Artifacts & Versionierte Deployments
Jedes Deployment-Artefakt (Container Image, Lambda ZIP, AMI) MUSS:
-
Unveränderlich sein – kein In-Place-Patching von deployter Artefakten
-
Versioniert sein – Git-SHA oder semantische Version als Tag
-
Signiert sein (Stufe 4+ Reife) – Container Image Signing via Cosign oder Notation
OD5 – Blue/Green oder Canary als Standard-Deployment-Muster
Produktions-Deployments MÜSSEN einen Mechanismus zur schrittweisen Traffic-Verschiebung haben.
| Muster | Beschreibung | Empfohlener Einsatz |
|---|---|---|
Blue/Green |
Zwei vollständige Umgebungen; Traffic-Switch via Load Balancer |
Stateful Services, Datenbank-Migrations-Deployments |
Canary |
Schrittweise Traffic-Erhöhung von 5% → 25% → 100% |
Stateless Services, häufige Deployments |
Feature Flags |
Code deployed dunkel; Feature per Flag aktiviert |
Neue Features, A/B-Tests, risikoarme Rollouts |
OD6 – Idempotente Operationen & Retry-Sicherheit
Alle operativen Operationen (Deployments, Remediation-Scripts, Runbook-Automatisierungen) MÜSSEN idempotent sein: Mehrfaches Ausführen darf zu keinem anderen Ergebnis führen als einmaliges Ausführen.
OD7 – Konfiguration extern und überprüfbar
Alle Konfiguration MUSS von Code getrennt sein (12-Factor App, Faktor III).
-
Umgebungsspezifische Konfiguration in Umgebungsvariablen oder Secrets-Manager
-
Konfiguration in IaC definiert (Terraform-Variable, Parameter Store, App Config)
-
Konfiguration ist versioniert – Änderungen sind nachvollziehbar
-
Sensitive Konfiguration (Credentials, Tokens) NIEMALS in Code oder IaC-Variablen
OD8 – Operational Readiness als Deployment-Gate
Bevor ein Service in Produktion geht, MUSS er "Operational Readiness" nachweisen:
| Kriterium | Nachweis |
|---|---|
Observability |
Structured Logs, Metriken, Tracing konfiguriert und verifiziert |
Health Endpoints |
|
Alerting |
Mindestens ein symptombasierter Alert konfiguriert und verlinkt mit Runbook |
Runbook |
Runbook für Deployment und bekannte Fehlerfälle vorhanden |
Rollback |
Rollback-Prozedur dokumentiert und getestet |
Dependency Inventory |
Alle Abhängigkeiten (DBs, externe Services, Queues) dokumentiert |