Was ist Continuous Delivery (CD)?
Software-Praxis, bei der jede Änderung automatisch einen produktionsreifen Zustand erreicht und auf Abruf releasebar ist.
Was ist Continuous Delivery (CD)?
Continuous Delivery ist die Software-Engineering-Praxis, bei der jede Code-Änderung automatisch durch Build-, Test- und Validierungsschritte fortschreitet, bis sie einen produktionsreifen Zustand erreicht — und jederzeit mit einem einzigen Klick oder Befehl in Production deployed werden kann. CD ist die natürliche Erweiterung von Continuous Integration (CI): CI gewährleistet, dass jeder Commit gebaut und getestet wird; CD gewährleistet, dass jeder Commit, der passt, auch verpackt, zu Staging deployed, validiert und bereit zum Shippen ist.
Die wichtige Unterscheidung, die jedes Team verstehen sollte: Continuous Delivery ≠ Continuous Deployment. Continuous Delivery bedeutet, die Änderung ist bereit zu shippen; Menschen entscheiden, wann. Continuous Deployment bedeutet, die Änderung shippt tatsächlich automatisch bei grünem CI. Die meisten Enterprise-Teams praktizieren CD (Release auf Abruf); weniger praktizieren Continuous Deployment (automatische Promotion zu Prod). Beide kürzen zu "CD" ab, was ständige Verwirrung in Interviews und Architektur-Diskussionen verursacht.
Die CD-Pipeline-Anatomie
Eine typische CD-Pipeline hat diese Stages, jede gated die nächste:
- Source. Trigger bei Push zu main / Merge eines PR. Pull Source, berechne Commit-Metadaten.
- Build. Kompiliere Code, installiere Dependencies, baue Container-Images. Cache aggressiv (npm-Cache, Docker-Layer-Cache, Gradle-Cache).
- Unit-Tests. Laufen parallel; ziele auf unter 5 Minuten. Fail-Fast bei erstem kaputten Test.
- Statische Analyse. Linter, Type-Checker, Security-Scanner (Snyk, Dependabot, SonarQube).
- Integrationstests. Starte Dependencies hoch (Datenbanken, Mock-Services), laufe Integrations-Suite. 5-15 Minuten typisch.
- Artefakt-Erstellung. Baue Container-Image, signiere es, pushe es zur Registry. Oder baue statische Binaries / Pakete.
- Deploy zu Staging. Auto-Deploy zu einer Staging-Umgebung, die Prod spiegelt.
- Smoke-Tests / E2E. Kritische-Pfad-Validierung gegen Staging. Manche Teams laufen hier auch einen Lasttest.
- Production-Gate. Manuelle Genehmigung (CD) oder automatische Promotion (Continuous Deployment).
- Production-Deploy. Blue/Green, Canary oder Rolling-Deployment. Monitore Metriken nach Deploy.
- Post-Deploy-Validierung. Smoke-Tests auf Prod. Auto-Rollback bei Regression.
Die vier Deployment-Strategien, die CD ermöglicht
- Blue/Green. Deploye neue Version ("Green") neben alter ("Blue"); switche Traffic sofort. Einfacher Rollback (zurückswitchen). Verdoppelt Infrastruktur während Übergang.
- Canary. Deploye zu kleinem % des Traffics zuerst (1-5%); monitore; erhöhe graduell. Fängt Regressionen vor Full-Rollout. Industrie-Default für High-Traffic-Systeme.
- Rolling. Ersetze Instanzen einzeln. Keine Traffic-Split-Logik nötig; langsamerer Rollout. Default in Kubernetes und den meisten Cloud-Plattform-Managed-Services.
- Feature-Flags / Dark Launching. Deploye Code dunkel, aktiviere pro Nutzer/Kohorte via Flag-Service. Entkoppelt Deploy von Release. Siehe Feature-Flags.
Was CD in der Praxis funktionieren lässt
Patterns, die reife CD-Pipelines teilen:
- Trunk-basierte Entwicklung. Kurzlebige Branches (1-2 Tage max) zu main gemerged. Keine langlebigen Feature-Branches, die wochenlang divergieren.
- Umfassende automatisierte Tests. Wenn du deiner Test-Suite nicht vertrauen kannst, kannst du CD nicht vertrauen. Ziele auf 80%+ Critical-Path-Coverage.
- Unveränderliche Artefakte. Gleiches Artefakt deployed zu Staging und Prod. Keine Rebuilds zwischen Umgebungen — zu riskant.
- Konfiguration externalisiert. Pro-Umgebungs-Konfig in Environment-Variables / Config-Service, nicht in Images gebacken.
- Database-Migration-Disziplin. Migrationen sind vorwärts-kompatibel; alter Code funktioniert weiter mit neuem Schema für mindestens einen Deploy-Zyklus (Expand-Contract-Pattern).
- Observability. Metriken, Logs, Traces in Production. Auto-Rollback triggert bei Fehlerrate / Latenz-Regression.
- Schnelle Pipeline. Deploys dauern <15 Minuten. Langsame Pipelines bedeuten weniger, größere Releases — genau der Fehlermodus, den CD verhindern soll.
Häufige CD-Pipeline-Tools
- GitHub Actions — dominant für Projekte auf GitHub. Marketplace-Ökosystem; .github/workflows YAML.
- GitLab CI/CD — erstklassig für GitLab. .gitlab-ci.yml; eingebaute Container-Registry.
- CircleCI, Buildkite, Jenkins — Drittanbieter-CI-Services. Jenkins ist Legacy, aber im Enterprise allgegenwärtig.
- Argo CD, Flux — GitOps-Controller für Kubernetes. Pull-basierte Deploys, aus Git synchronisiert.
- Spinnaker, Harness, Octopus — volle Deployment-Orchestrierungs-Plattformen. Multi-Cloud, komplexe Pipelines.
- AWS CodePipeline, Azure Pipelines, Google Cloud Build — Cloud-Anbieter-native Pipelines.
Häufige CD-Anti-Patterns
- Das "manuelle Gate für immer". CD-Pipeline endet bei Staging, weil niemand Production-Deploys vertraut. Entweder fixe das Vertrauensproblem (bessere Tests, Observability, Rollback) oder gib zu, du hast kein CD.
- Branch-basierte Umgebungen. Anderer Code auf Staging vs. Prod ("dieser Branch deployed zu Staging"). Drift akkumuliert; Staging passt, aber Prod fällt aus. Shippe nur von main.
- Deploys, die Out-of-Band-Koordination erfordern. Jemand muss eine Config-Datei in einem anderen Repo aktualisieren; ein anderes Team muss einen Service bouncen. CD überlebt das nicht.
- Catch-All-Integrationstests in Prod. Smoke-Tests sollten billig und schnell sein. Wenn deine Post-Deploy-Validierung 30 Minuten dauert, queuen sich Deploys.
- Kein Rollback-Drill. Erstes Mal, dass du den Rollback-Pfad ausführst, ist während eines echten Ausfalls. Übe Rollbacks regelmäßig.
- CI-Tests bestehen, laufen aber nicht auf dem Deploy-Artefakt. Einfach zu driften zwischen, was CI testet, und was geshippt wird. Baue einmal, teste das Artefakt, deploye das Artefakt — gleiche Bytes durchgängig.
FAQ: Continuous Delivery
Was ist der Unterschied zwischen CI, CD und Continuous Deployment?
CI (Continuous Integration): jeder Commit baut + testet. CD (Continuous Delivery): jeder Commit erreicht auch einen deploybaren Zustand, bereit zum Shippen auf Abruf. Continuous Deployment: jeder bestehende Commit auto-shippt zu Prod. CD ist nötig für Continuous Deployment, aber nicht dasselbe.
Brauche ich Kubernetes für CD?
Nein. CD funktioniert mit VMs, Containern, Serverless, sogar FTP-deploytem PHP. Kubernetes macht manche Patterns einfacher (Rolling-Updates), ist aber nicht erforderlich.
Wie lange sollte eine CD-Pipeline dauern?
Industrie-Benchmarks (DORA, Accelerate): Elite-Teams deployen in <1 Stunde ab Commit. Hochperformante Teams: 1-24 Stunden. Pipelines >24 Stunden indizieren Probleme mit Test-Infrastruktur, Dependencies oder organisatorischer Komplexität.
Kann CD in regulierten Industrien funktionieren?
Ja — Fintech, Healthcare, Government laufen alle CD. Die CD-Pipeline wird der auditierbare Trail (jede Änderung wird gebaut, getestet, signiert, deployed via reproduzierbare Schritte mit vollen Logs). Oft mehr auditierbar als manuelle Deploy-Prozesse.
Was ist mit Datenbank-Änderungen?
Der härteste Teil. Nutze Expand-Contract-Migrationen (neue Spalte hinzufügen → Code deployen, der zu beiden schreibt → alte Daten migrieren → Code deployen, der neue Spalte liest → alte Spalte droppen), Feature-Flags und Tools wie Flyway oder Liquibase, um Migrationen neben Code zu versionieren.
Wie messe ich CD-Pipeline-Qualität?
DORAs vier Schlüsselmetriken: Deployment-Frequenz, Lead-Time-für-Änderungen, Change-Failure-Rate, Mean-Time-to-Restore. Tracke diese über Zeit. Schneller + sicherer = besseres CD.
Was ist mit Microservices-CD?
Jeder Service hat seine eigene Pipeline; Deploys sind unabhängig. Koordiniere brechende API-Änderungen via Expand-Contract oder Versionierung. Vermeide verteilte Monolithen, wo N Services zusammen deployen müssen.
Wie LoadFocus zu CD-Pipelines steht
Der am häufigsten übersprungene Schritt in CD-Pipelines ist Performance-Validierung. Funktionale Tests bestehen; Latenz regrediert um 50% auf Prod-Traffic. LoadFocus-API-Lasttest integriert sich in CI/CD-Pipelines via API-Calls — lasse den Build fehlschlagen, wenn p95-Latenz deinen Schwellenwert überschreitet. Synthetisches Monitoring validiert, dass Core Web Vitals nach jedem Deploy gesund bleiben, und fängt Frontend-Regressionen, bevor Nutzer es bemerken.
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um — derselben Plattform, die alles antreibt, was du gerade gelesen hast.