Kernkraft

CI/CD: Was ist CD?

Geschrieben von Aggeliki Rabaouni veröffentlich am in der Kategorie
Continuous Integration, Continuous Deployment, Continuous Delivery

Wir kennen bestimmt den Begriff CI / CD-Pipeline, oder? CI steht für Continuous Integration und CD…..

Was ist eigentlich das CD in einer CI / CD pipeline? Steht es für Continuous Deployment oder Continuous Delivery?

Diese Frage kommt immer vor.

Die Antwort ist: beides. Abhängig von den bestehenden Arbeitsabläufen und Anforderungen wählt ein Team die Praxis aus, die am besten zu dem Team und zu dem Produkt passt.

 

Was ist Continuous Delivery?

Continuous Delivery ist eine Softwareentwicklungspraxis, in der Codeänderungen vorbereitet werden, um für die Produktion freigegeben zu werden. Beachten Sie jedoch, dass die Codes die automatisierten Unittests, Integrationstests und Systemtests bestehen müssen, bevor sie in die Produktion übernommen werden.

Der Übergang zwischen kontinuierlicher Integration (Continuous Integration) und kontinuierlicher Lieferung (Continuous Delivery) erfolgt normalerweise automatisch, einschließlich automatisierter Tests auf Unit-, Integrations- und Systemebene.

Automatisierte Tests ermöglichen eine gründlichere Validierung. Entwickler können Probleme aktualisieren und lokalisieren, bevor der Release öffentlich verfügbar ist (PROD). Automatisierte Tests und ein automatisierter Freigabeprozess sind die perfekte Kombination, um eine nahtlose und mechanisierte Pipeline zu erstellen.

Mit den in der Staging-Umgebung verfügbaren Releases können Entwickler/Tester dank Continuous Delivery mit einem einzigen Knopfdruck Releases zu jeder beliebigen Rate bereitstellen. Das heißt, die Entscheidung, ein Release einzuleiten, muss von einem Menschen getroffen werden, und erst danach erfolgt eine Continuous Delivery.
Wie die Darstellung 1 zeigt, muss die Entscheidung, ob das Release von der Pre-Production („Staging“) Umgebung zu PROD verschoben wird, von einem Menschen getroffen werden, und dies ist der Differenzierungspunkt von Continuous Deployment.

Was ist Continuous Deployment?

Continuous Deployment ist ein weiterer Schritt von Continuous Delivery. Es handelt sich um eine Softwareentwicklungspraxis, die sicherstellt, dass Codeänderungen kontinuierlich in die Produktionsumgebung übertragen werden. Das Ziel ist es, eine neue Version freizugeben, wenn Entwickler Änderungen vornehmen und diese Änderungen automatisch an die Endbenutzer weiterleiten.

Continuous Deployment ist das oberste Ziel von Softwareentwicklungsunternehmen. Es ist wie eine Rakete ins All abzufeuern. Die Entwicklungs- und IT-Teams Ihres Unternehmens müssen sich angemessen auf die Implementierung einer kontinuierlichen Bereitstellung vorbereiten. Produktionsbereite Umgebungen und geeignete Verfahren müssen eingerichtet werden, um sicherzustellen, dass die Live-Umgebung auf dem neuesten Stand ist.

Beim Continuous Deployment werden Codes in einer simulierten Umgebung ausgeführt und verwaltet, um sicherzustellen, dass die ultimative Qualität berücksichtigt wird. Das Real-Time Monitoring der Live-Umgebung ist auch eine Voraussetzung, um auftretende Probleme im Auge zu behalten und schnell zu lösen.

Wie die Darstellung 2 zeigt, läuft vom Build bis zum Smoke Test alles automatisch ab. In diesem Sinne muss das Team sicherstellen, dass die Builds alle Tests bestanden haben und dass die Testsuiten gut und umfangreich genug sind, um Builds zu qualifizieren und automatisch zu deployen.


Sowohl Continuous Deployment als auch Continuous Delivery hängen von den Monitoring Tools für die Real Time-Infrastruktur und -Anwendungen ab, um das Produkt zu warten und alle Probleme aufzudecken, die vor dem Release nicht gefunden wurden.

 

CI/CD - Darstellung Continuous Deployment vs Continuous Development

Definition Vorteile Für wen geeignet Aufwand
Continuous Delivery
Eine Softwareentwicklungspraxis, bei der die Codeänderungen vorbereitet werden, um für die Produktion freigegeben zu werden. - Gewährleistet häufige Releases.
- Stellt sicher, dass Releases in kleineren Blöcken abgeschlossen werden.
- Ermöglicht sofortige Reaktionen auf Defekte.
- Macht Releases stabiler, zuverlässiger und kontrollierbarer.
Unternehmen, die regelmäßig neue Funktionen und Releases bereitstellen möchten - Erfordert die Verwendung von Continuous Delivery-Lösungen zur Automatisierung der Deployments.
- Die Testautomatisierung wird genutzt, um festzustellen, ob die Software die Exit-Kriterien erfüllt oder nicht
Continuous Deployment
Eine Softwareentwicklungspraxis, die sicherstellt, dass Codeänderungen kontinuierlich in die Produktionsumgebung übertragen werden. - Stellt sicher, dass jede Deploymentsphase schnell und zuverlässig abgeschlossen wird.
- Beseitigt manuelle Schritte und automatisiert den gesamten Prozess.
- Ermöglicht Teams die Erstellung einer vollautomatisierten CI / CD-Pipeline.

Unternehmen, die täglich und/oder stündlich neue Funktionen veröffentlichen. Stellt sicher, dass die abteilungsübergreifende Koordination (Entwicklung, Support, Marketing, Unternehmen usw.) aufrechterhalten wird. - Wie bei Continuous Delivery mit einem zusätzlichen Schwerpunkt bei der einmaligen Prüfung in der Produktion.
- Die Möglichkeit, das Rollback von Produktionsfunktionen zu automatisieren, sollte ebenfalls berücksichtigt werden.