continuous-delivery
Continuous Delivery (CD) ist eine Softwareentwicklungspraxis, bei der Codeänderungen automatisch erstellt, getestet und für die Produktion vorbereitet werden.
Continuous Delivery (CD) ist eine Software-Engineering-Praxis und eine Reihe von Prinzipien, die sich auf die Automatisierung des Release-Prozesses von Software konzentrieren. Sie baut auf Continuous Integration (CI) auf, indem sichergestellt wird, dass jede Codeänderung, die automatisierte Tests besteht, automatisch für ein Release in die Produktion vorbereitet wird. Das Ziel ist, jederzeit deploybare Software verfügbar zu haben. In einer typischen CD-Pipeline wird Code in einem Versionskontrollsystem committet, was einen automatisierten Build und eine umfassende Testsuite (Unit-, Integrations-, End-to-End-Tests) auslöst. Wenn alle Tests bestanden sind, wird das Artefakt (z. B. ein Container-Image, eine ausführbare Datei) automatisch in eine Staging- oder Pre-Produktionsumgebung bereitgestellt. Von diesem Punkt an ist in der Regel eine manuelle Genehmigung oder eine Geschäftsentscheidung erforderlich, bevor die endgültige Bereitstellung in der Produktionsumgebung erfolgt. Diese Praxis reduziert das Risiko, das mit der Veröffentlichung von Software verbunden ist, erheblich, da jede Änderung klein, gut getestet und sofort einsatzbereit ist. Sie ermöglicht es Unternehmen, Funktionen schneller bereitzustellen, schnell auf Marktveränderungen zu reagieren und die allgemeine Softwarequalität und -zuverlässigkeit zu verbessern, indem der Release-Prozess routinemäßig und vorhersehbar gestaltet wird.
graph LR
Center["continuous-delivery"]:::main
Pre_logic["logic"]:::pre --> Center
click Pre_logic "/terms/logic"
Rel_cicd["cicd"]:::related -.-> Center
click Rel_cicd "/terms/cicd"
Rel_cicd_pipeline["cicd-pipeline"]:::related -.-> Center
click Rel_cicd_pipeline "/terms/cicd-pipeline"
Rel_continuous_integration["continuous-integration"]:::related -.-> Center
click Rel_continuous_integration "/terms/continuous-integration"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Wissenstest
🧒 Erkläre es wie einem 5-Jährigen
Es ist, als ob Ihre Hausaufgaben immer ordentlich organisiert und zum Abgeben bereit wären, und nur darauf warten, dass der Lehrer sagt: 'Los geht's'.
🤓 Expert Deep Dive
Continuous Delivery stellt die vorletzte Stufe in einer ausgereiften DevOps-Pipeline dar und schlägt die Brücke zwischen Continuous Integration und Continuous Deployment. Während sich CI auf die häufige Integration von Code und die Überprüfung seiner Korrektheit durch automatisierte Builds und Tests konzentriert, erweitert CD dies, indem sichergestellt wird, dass der integrierte Code immer in einem releasefähigen Zustand ist. Die Pipeline umfasst typischerweise die Artefakterstellung, die automatische Bereitstellung in verschiedenen Nicht-Produktionsumgebungen (z. B. QA, UAT, Staging) sowie Leistungs- und Sicherheitstests. Der Hauptunterschied zu Continuous Deployment ist die bewusste Einführung eines manuellen Tors vor dem Produktions-Release, das Geschäftsvalidierung, Koordination von A/B-Tests oder Canary-Release-Strategien ermöglicht. Architektonisch stützt sich CD stark auf robuste CI/CD-Tools (z. B. Jenkins, GitLab CI, GitHub Actions), Infrastructure as Code (IaC) und Prinzipien der unveränderlichen Infrastruktur. Die Kompromisse umfassen eine potenziell langsamere Release-Kadenz im Vergleich zu vollständigem Continuous Deployment, bieten jedoch mehr Kontrolle und Risikominderung für Organisationen mit komplexen Release-Anforderungen oder regulatorischen Einschränkungen.