Blue-Green Deployment

Wie du eine neue Version kontrolliert freischaltest und bei Problemen schnell zu einem bekannten Zustand zurückkehrst

Eine Deployment-Strategie mit zwei Produktionsumgebungen – schneller Wechsel zwischen Versionen, reduzierte Downtime und einfacheres Rollback.

Fortgeschritten2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Zwei identische Produktionsumgebungen (Blue und Green)
  2. Schneller Traffic-Switch mit sehr kurzer oder keiner sichtbaren Unterbrechung
  3. Schnelles Rollback durch Zurückschalten auf die vorherige Umgebung

Sofortantwort

Blue-Green Deployment einfach erklärt

Zwei Umgebungen für risikoärmere Deployments und schnelles Rollback.

Kurz gesagt
Zwei identische Produktionsumgebungen (Blue und Green)
Typischer Einsatz
Releases mit geringer Downtime, Schnelles Rollback, Disaster Recovery
Wichtig zu wissen
Schnelles Rollback durch Zurückschalten auf die vorherige Umgebung

Blue-Green Deployment im Überblick

Blue-Green Deployment nutzt zwei möglichst gleichartige Produktionsumgebungen. Eine ist live (Blue), die andere wird vorbereitet (Green). Bei einem Release wird der Traffic kontrolliert umgeschaltet – meist mit sehr kurzer oder keiner sichtbaren Unterbrechung.

Der Ablauf:

Zustand 1: Blue ist live
┌─────────────┐     ┌─────────────┐
│   BLUE      │ ←── │   Router    │ ←── Traffic
│   v1.0      │     └─────────────┘
│   (live)    │
└─────────────┘
┌─────────────┐
│   GREEN     │     (idle)
│   v1.0      │
└─────────────┘

Zustand 2: Deploy auf Green
┌─────────────┐     ┌─────────────┐
│   BLUE      │ ←── │   Router    │ ←── Traffic
│   v1.0      │     └─────────────┘
│   (live)    │
└─────────────┘
┌─────────────┐
│   GREEN     │     ← Deploy v2.0, Tests
│   v2.0      │
└─────────────┘

Zustand 3: Switch zu Green
┌─────────────┐
│   BLUE      │     (standby für Rollback)
│   v1.0      │
└─────────────┘
┌─────────────┐     ┌─────────────┐
│   GREEN     │ ←── │   Router    │ ←── Traffic
│   v2.0      │     └─────────────┘
│   (live)    │
└─────────────┘

Technisch betrachtet

Kubernetes Blue-Green

# Blue Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-blue
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      version: blue
  template:
    metadata:
      labels:
        app: myapp
        version: blue
    spec:
      containers:
        - name: app
          image: myapp:1.0
---
# Green Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-green
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      version: green
  template:
    metadata:
      labels:
        app: myapp
        version: green
    spec:
      containers:
        - name: app
          image: myapp:2.0
---
# Service (Switch durch Selector-Änderung)
apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  selector:
    app: myapp
    version: blue  # Ändern zu "green" für Switch
  ports:
    - port: 80

Switch durchführen:

kubectl patch service myapp -p '{"spec":{"selector":{"version":"green"}}}'

Nginx Blue-Green

upstream blue {
    server 10.0.0.1:8080;
    server 10.0.0.2:8080;
}

upstream green {
    server 10.0.0.3:8080;
    server 10.0.0.4:8080;
}

# Aktive Umgebung (ändern für Switch)
upstream active {
    server 10.0.0.1:8080;  # Blue
    server 10.0.0.2:8080;
}

server {
    location / {
        proxy_pass http://active;
    }
}

AWS mit Terraform

resource "aws_lb_listener_rule" "blue_green" {
  listener_arn = aws_lb_listener.main.arn
  priority     = 100

  action {
    type             = "forward"
    target_group_arn = var.active_color == "blue" ? 
                       aws_lb_target_group.blue.arn : 
                       aws_lb_target_group.green.arn
  }

  condition {
    path_pattern {
      values = ["/*"]
    }
  }
}

# Switch: terraform apply -var="active_color=green"

Datenbank-Strategien

StrategieBeschreibungKomplexität
Shared DBBeide Versionen nutzen dieselbe DBNiedrig
Backward-Compatible MigrationsNeue Spalten optional, alte bleibenMittel
Expand-ContractErst erweitern, dann alte Spalten entfernenHoch
Separate DBsDaten-Sync zwischen Blue und GreenSehr hoch

Rollback

# Problem erkannt? Sofort zurück zu Blue:
kubectl patch service myapp -p '{"spec":{"selector":{"version":"blue"}}}'

# Oder mit AWS:
aws elbv2 modify-listener --listener-arn $ARN \
  --default-actions Type=forward,TargetGroupArn=$BLUE_TG

Rollback ist meist schnell möglich, weil auf die vorherige Umgebung zurückgeschaltet werden kann – sofern Datenbank- und Zustandsänderungen kompatibel bleiben.

Schritt für Schritt

Wie ein Blue-Green-Release kontrollierbar wird

  1. Zielzustand und Rückweg definieren

    Bestimme, welche Version als stabil gilt, was vor dem Wechsel geprüft sein muss und unter welchen Bedingungen zurückgeschaltet wird. Ein Rollback ist nur nützlich, wenn er vorbereitet und verantwortlich entschieden ist.

  2. Neue Umgebung vollständig vorbereiten

    Stelle die neue Version mit passender Konfiguration, Zugängen und Abhängigkeiten bereit. Datenänderungen müssen so geplant sein, dass alte und neue Version während der Übergangszeit sicher arbeiten können.

  3. Vor dem Traffic-Wechsel prüfen

    Teste relevante Nutzerwege, Leistung, Sicherheit und Beobachtbarkeit in der neuen Umgebung. Prüfe besonders die Annahmen, die im Livebetrieb schwer rückgängig zu machen wären.

  4. Wechsel überwachen und abschließen

    Leite neue Anfragen kontrolliert um und beobachte Fehlerraten, Latenz und wichtige Fachsignale. Halte die vorherige Version so lange bereit, wie der vereinbarte Rückweg es erfordert.

Konkretes Beispiel

Ein Release erhält einen echten Rückweg

Eine Anwendung bekommt eine neue Berechnungslogik. Das Team möchte Unterbrechungen vermeiden und eine fehlerhafte Version nicht lange im Betrieb lassen.

Release-Plan

Die neue Umgebung ist technisch vorbereitet, doch Änderungen an einem gemeinsamen Datenschema könnten den schnellen Wechsel erschweren. Das Team muss die Kompatibilität vor dem Umschalten bewusst prüfen.

Kontrollierter Switch

Nach automatisierten und fachlichen Prüfungen wird der Traffic umgeleitet und anhand klarer Signale beobachtet. Bei einer Abweichung kann das Team auf die vorherige Umgebung zurückschalten und die Ursache untersuchen.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Ermöglicht einen klaren Wechsel zwischen zwei vorbereiteten Versionsständen.
  • Macht den Rückweg bei technischen Problemen schnell und nachvollziehbar verfügbar.
  • Trennt Vorbereitung und Prüfung einer neuen Version vom laufenden Verkehr.

Das solltest du beachten

  • Benötigt zeitweise zusätzliche Kapazität und sorgfältig synchronisierte Konfigurationen.
  • Datenbankänderungen können den Rückweg trotz zweier Umgebungen schwierig machen.
  • Ein schneller Switch ersetzt keine fachliche Prüfung, Überwachung oder Incident-Kommunikation.
Vertiefung · für Fortgeschrittene

Vom vorbereiteten Release zum kontrollierten Wechsel

Wissenskarte

Zwei Versionsstände

CI/CD
Automatisierte Prozesse für kontinuierliche Software-Entwicklung.
Canary Deployment
Neue Versionen erst für wenige Nutzer, dann schrittweise ausrollen.
Load Balancing
Eingehende Anfragen werden auf mehrere Server verteilt, um Überlastung zu vermeiden.
Observability
Fähigkeit, den Zustand eines Systems durch Logs, Metrics und Traces zu verstehen.
Kubernetes
Plattform zur Automatisierung von Container-Anwendungen.
Blue-Green Deployment verbindet eine vorbereitete neue Umgebung mit einem kontrollierten Traffic-Wechsel und einem zuvor vereinbarten Rückweg. Blue-Green gliedert sich in: CI/CD, Canary Deployment, Load Balancing, Observability, Kubernetes.

01Einsatzbereiche

Wann ist Blue-Green Deployment sinnvoll?

Geeignet für

  • Releases mit geringer DowntimeNeue Version risikoärmer und mit minimaler Unterbrechung deployen
  • Schnelles RollbackBei Problemen zügig zur vorherigen Version zurückschalten
  • Disaster RecoveryZweite Umgebung als Backup
  • SicherheitAlte Version für Audits verfügbar halten

↑ Inhalt

02Werkzeuge

Womit Blue-Green Deployment umgesetzt wird

↑ Inhalt

Merksatz

Blue-Green Deployment ist wie zwei identische Bühnen im Theater

Während auf der blauen Bühne die Show läuft, wird die grüne vorbereitet. Bei Showwechsel dreht sich die Bühne – das Publikum merkt nichts vom Umbau.

  1. Zwei identische Produktionsumgebungen (Blue und Green)
  2. Schneller Traffic-Switch mit sehr kurzer oder keiner sichtbaren Unterbrechung
  3. Schnelles Rollback durch Zurückschalten auf die vorherige Umgebung

04Anwenden

Blue-Green Deployment praktisch anwenden

↑ Inhalt

05Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

06FAQ

Häufige Fragen zu Blue-Green Deployment

Was ist der Unterschied zu Canary Deployment?

Blue-Green schaltet den Traffic typischerweise in einem klaren Wechsel auf die neue Umgebung. Canary verteilt Traffic schrittweise auf eine neue Version. Blue-Green ist oft einfacher zurückzuschalten, Canary erlaubt feinere Risikosteuerung.

Brauche ich doppelte Infrastruktur?

Meist brauchst du zumindest zeitweise zusätzliche Kapazität. Nach erfolgreichem Switch kann die alte Umgebung heruntergefahren, als Rollback-Reserve gehalten oder für das nächste Release vorbereitet werden.

Was passiert mit laufenden Requests beim Switch?

In gut konfigurierten Setups bleiben bestehende Connections über Connection Draining auf der alten Umgebung, bis sie abgeschlossen sind. Neue Requests gehen nach dem Switch zur neuen Umgebung.

Wie handle ich Datenbank-Migrationen?

Datenbank-Migrationen sind oft der kritischste Teil. Backward-compatible Migrations, Feature Flags oder kurze Maintenance-Fenster helfen, damit beide Versionen mit dem Schema arbeiten können.

↑ Inhalt

07Weiterlernen

Was möchtest du als Nächstes verstehen?

↑ Inhalt