<EbeneX/>
Architektur DevOps · Updated 1. Juli 2026

Blue-Green Deployment

Definition

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

Fortgeschritten 3 Min. Lesezeit EN: Blue-Green Deployment

Einfach erklärt

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)    │
└─────────────┘

Technischer Deep Dive

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.

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.

Zwei identische Produktionsumgebungen (Blue und Green)

Schneller Traffic-Switch mit sehr kurzer oder keiner sichtbaren Unterbrechung

Schnelles Rollback durch Zurückschalten auf die vorherige Umgebung

Releases mit geringer Downtime

Neue Version risikoärmer und mit minimaler Unterbrechung deployen

Schnelles Rollback

Bei Problemen zügig zur vorherigen Version zurückschalten

Disaster Recovery

Zweite Umgebung als Backup

Sicherheit

Alte Version für Audits verfügbar halten

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.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.