Deployment Strategie

Was ist eine Deployment-Strategie?

Eine Deployment-Strategie ist der Plan, nach dem neue Software-Versionen in die Produktionsumgebung ausgerollt werden. Sie bestimmt, wie der Übergang von der alten zur neuen Version erfolgt, wie Risiken minimiert werden und wie bei Problemen schnell zurückgerollt werden kann. Die Wahl der richtigen Strategie hängt von der Anwendung, der Infrastruktur und der Risikotoleranz ab.

In der Frühzeit des Internets war "Big Bang" die einzige Strategie: Server herunterfahren, neue Version aufspielen, Server hochfahren, hoffen. Heute stehen ausgefeilte Strategien zur Verfügung, die Ausfallzeiten eliminieren und das Risiko auf ein Minimum reduzieren. Moderne CI/CD-Pipelines automatisieren diese Strategien vollständig.

Warum ist das wichtig?

Deployments sind der riskanteste Moment im Software-Lebenszyklus. Egal wie gründlich getestet wurde -- in Produktion kommen Lastmuster, Datenkonstellationen und Edge Cases vor, die kein Test vorhergesehen hat. Eine durchdachte Deployment-Strategie begrenzt den Schaden, wenn etwas schiefgeht, und ermöglicht eine schnelle Rückkehr zum letzten funktionierenden Zustand.

Für Unternehmen mit SLAs (Service Level Agreements) oder geschäftskritischen Anwendungen ist die Deployment-Strategie direkt umsatzrelevant. Eine Stunde Downtime kann je nach Geschäftsmodell Zehntausende bis Millionen Euro kosten. Strategien wie Blue-Green oder Canary reduzieren Downtime auf null und den "Blast Radius" -- also die Anzahl betroffener Nutzer bei einem Problem -- auf ein Minimum.

Die Deployment-Strategie beeinflusst auch die Entwicklungsgeschwindigkeit. Teams, die ein sicheres Deployment-Setup haben, deployen häufiger und in kleineren Inkrementen. Teams ohne verlässliches Rollback deployen seltener, bündeln mehr Änderungen in einem Release und erhöhen damit paradoxerweise das Risiko -- ein Teufelskreis, den eine gute Strategie durchbricht.

Deployment-Strategien in der Praxis

Die gängigsten Strategien im Überblick:

Blue-Green Deployment: Zwei identische Produktionsumgebungen -- Blue (aktiv) und Green (inaktiv). Die neue Version wird auf Green deployed und getestet. Dann wird der Traffic per Load Balancer von Blue auf Green umgeschaltet -- ein einzelner, sofortiger Switch. Bei Problemen wird sofort auf Blue zurückgeschaltet. Vorteil: Zero Downtime und sofortiges Rollback. Nachteil: Doppelte Infrastrukturkosten.

Canary Deployment: Die neue Version wird zunächst nur an einen kleinen Prozentsatz der Nutzer ausgerollt -- etwa 5%. Metriken wie Fehlerrate, Latenz und Business-KPIs werden überwacht. Wenn alles stabil ist, wird der Anteil schrittweise erhöht -- 10%, 25%, 50%, 100%. Bei Auffälligkeiten wird der Canary sofort zurückgezogen. Vorteil: Probleme werden erkannt, bevor sie alle Nutzer betreffen. Nachteil: Erfordert gutes Monitoring und Traffic-Routing.

Rolling Update: Instanzen werden nacheinander aktualisiert. Während eine Instanz die neue Version erhält, bedienen die anderen weiterhin Traffic mit der alten Version. Kubernetes führt Rolling Updates nativ durch. Vorteil: Keine zusätzliche Infrastruktur nötig. Nachteil: Während des Rollouts laufen alte und neue Version parallel, was bei inkompatiblen Änderungen Probleme verursachen kann.

Feature Flags: Streng genommen keine Deployment-Strategie, sondern eine Ergänzung. Neuer Code wird deployed, aber hinter einem Feature Flag versteckt. Der Code ist in Produktion, aber inaktiv. Das Flag kann gezielt für bestimmte Nutzer, Regionen oder prozentual aktiviert werden. Vorteil: Deployment und Release werden entkoppelt. Nachteil: Feature Flags müssen konsequent aufgeräumt werden, sonst entstehen tote Codepfade.

Beispiel: Ein SaaS-Unternehmen nutzt Canary Deployments auf Kubernetes. Die CI/CD-Pipeline baut ein Docker-Image, deployed es als Canary mit 5% Traffic-Anteil und überwacht automatisch die Error-Rate und P99-Latenz. Wenn die Error-Rate unter 0,1% bleibt und die Latenz sich um weniger als 10% verschlechtert, wird der Rollout automatisch fortgesetzt. Andernfalls rollt die Pipeline automatisch zurück, erstellt ein Incident-Ticket und benachrichtigt das Team. Die gesamte Infrastruktur ist als Infrastructure as Code definiert und reproduzierbar.

Verwandte Konzepte

Wir respektieren Ihre Privatsphäre

Diese Website verwendet Cookies für essentielle Funktionen und optional für Analyse und Marketing. Datenschutzerklärung