Die CI/CD-Pipeline ist – vereinfacht ausgedrückt – ein Workflow für DevOps-Teams zur Automatisierung des Software-Bereitstellungsprozesses. CI/CD steht für Continuous Integration/Continuous Delivery (fortlaufende Integration/fortlaufende Verteilung). Dabei handelt es sich um ein Verfahren zur Softwareverteilung, das von Entwicklungsteams verwendet wird, um Codeänderungen häufiger und zuverlässiger zu verteilen. CI/CD umfasst zwei Sätze sich ergänzender Praktiken, die sich beide stark auf Automatisierung stützen.
Beim Continuous Integration-Prozess implementieren Entwicklungsteams kleine, regelmäßige Codeänderungen und führen sie in einem freigegebenen Repository zusammen. Moderne Anwendungen werden unter Einsatz vieler Tools und Plattformen entwickelt, sodass jede Codeänderung integriert und überprüft werden muss, damit sichergestellt ist, dass die Änderungen die Anwendung nicht beschädigen. Durch Continuous Integration wird der Prozess zum Erstellen, Verpacken und Testen von Code automatisiert, sobald ein Teammitglied in der Versionskontrolle protokollierte Änderungen am Code vornimmt. Dadurch wird es für Teams einfacher, Codeänderungen häufiger zu übertragen, sodass die Apps besser zusammenarbeiten und eine bessere Qualität haben.
Continuous Delivery ist eine Workflow-Engine, mit der Sie Prozesse wie das Testen auf Bugs und das Hochladen von Codeänderungen des Entwicklungsteams in ein Staging-Repository anstoßen können.
Der CI/CD-Prozess ist wichtig, da Verteilungsprozesse durch ihn einfacher und besser vorhersehbar werden. Darüber hinaus sorgt er für Konsistenz und Zuverlässigkeit im Software-Entwicklungsprozess, sodass Entwicklungsteams und Unternehmen besser zusammenarbeiten. Gleichzeitig werden die Kosten reduziert und die Anwendungen optimiert.
Dieser Artikel bietet eine kurze Einführung in den CI/CD-Pipeline-Prozess. Er erörtert die Einsatzmöglichkeiten sowie die besten Bereitstellungspraktiken und untersucht die zahlreichen Vorteile, die CI/CD für den Entwicklungslebenszyklus und letztendlich für euer gesamtes Unternehmen mit sich bringen kann.
DevOps ist ein Ansatz im Rahmen der IT-Bereitstellung, in dem Menschen, Praktiken und Tools miteinander kombiniert werden, um Hindernisse zwischen Entwicklungsteams und mit dem operativen Geschäft befassten Teams zu überwinden. DevOps überspannt die Lücke zwischen der Softwareentwicklung (bei der Anwendungscode erstellt wird) und dem operativen IT-Geschäft (bei dem diese Anwendungen in Produktion gehen, sodass sie Endbenutzern zur Verfügung gestellt und instandgehalten werden können). DevOps-Teams beschleunigen die Entwicklung von Anwendungen und Services und können in Kombination mit einem schnelleren Ansatz bei der Verwaltung der IT-Infrastruktur IT-Produkte bereitstellen und aktualisieren, um so in der Branche konkurrenzfähig zu bleiben.
DevOps ist zum Teil aus der Agile-Entwicklungsbewegung als Möglichkeit zur Lösung eines ihrer größten Probleme entstanden– während agile Entwickler häufiger neue Apps und Code-Updates hervorbrachten, hatten herkömmliche Operations Teams Schwierigkeiten, sie zu testen und bereitzustellen, sodass der Wert einer schnellen Entwicklung in Frage gestellt wurde. Durch die Ausweitung der Agilitätsgrundsätze auf den gesamten Lebenszyklus der Softwareentwicklung (SDLC) ist DevOps in der Lage, den gesamten Arbeitsablauf kontinuierlich zu optimieren. Leistungsstarke DevOps-Teams freuen sich nicht nur über schnellere Code-Iterationen und Bereitstellungen, sondern auch über insgesamt kürzere Markteinführungszeiten für neue Ideen, weniger Bugs und eine stabilere Infrastruktur.
CI/CD ist ein grundlegender Prozess in DevOps. Entwickler fügen regelmäßig – oft täglich – neuen Code in den Hauptquellcode ein. Während dieser neue Code in ein zentrales, gemeinsam genutztes Repository eingecheckt wird, testet und validiert ein automatisierter Build-Prozess die Änderungen, sodass die Entwickler Probleme schnell erkennen und sofort Feedback erhalten, um notwendige Anpassungen vornehmen zu können.
Die CI/CD-Pipeline ist im Wesentlichen ein Workflow, der einen Weg bietet, über den DevOps-Teams den Softwarebereitstellungsprozess automatisieren. Ohne eine automatisierte Pipeline müssten die Teams ihren Workflow manuell konfigurieren, was zeitaufwändig und fehlerträchtig wäre. Die CI/CD-Pipeline beseitigt manuelle Fehler, standardisiert die Feedbackschleifen der Entwickler und erhöht das Tempo der Produktiterationen.
Vorläufer von CI/CD sind die automatisierte Release-Automatisierung (ARA) und das automatisierte Release-Management (ARM), die beide in die Arbeitskategorie „Release-Automatisierung“ fallen und neue Wegmarken der sich entwickelnden automatisierten Prozesse und Trends in diesem Bereich darstellen.
Es gibt keine Standardverfahren oder -implementierung für eine CI/CD-Pipeline, und jedes DevOps-Team wählt die Tools und Dienste aus, die es für den Aufbau seiner Pipeline verwendet. In der Regel umfasst eine Pipeline jedoch die folgenden Phasen:
In jeder Phase der Pipeline erhält das Entwicklungsteam Benachrichtigungen zu Fehlern und kann daher Probleme sofort beheben. Die Codeänderungen durchlaufen die Pipeline erneut, sodass nur fehlerfreier Code in der Produktion bereitgestellt wird.
Continuous Deployment ist der Verteilvorgang, bei dem Codeänderungen in der Produktionsumgebung automatisiert veröffentlicht werden. Er wird ausgelöst, nachdem neuer Code integriert und durch Continuous Integration und Continuous Delivery genehmigt wurde. Die Codeänderungen durchlaufen eine Reihe automatisierter Tests und werden, nachdem die Tests bestanden wurden, sofort an die Benutzer der Software weitergegeben.
Continuous Deployment hört sich zwar wie ein Synonym für Continuous Delivery an – und beide werden auch häufig mit „CD“ abgekürzt –, aber es handelt sich um eine separate Praktik. Continuous Delivery ist ein Lieferprozess, der neue Builds automatisch in eine automatisierte QS-Testumgebung pusht, in der nach Bugs und anderen Problemen gesucht wird. Sobald die Tests bestanden werden, wird der Build zur Verteilung genehmigt und automatisch per Push an die Endbenutzer übertragen. Da in dieser letzten Phase keine Pause für menschliche Vermittlung erforderlich ist, wird sie auch als Continuous Deployment bezeichnet.
Continuous Deployment weitet zwar die Agilität und Geschwindigkeit von CI/CD aus, bringt aber eigene Risiken mit sich, da zwischen den abschließenden Tests und der Veröffentlichung für die Benutzer kein manuelles Eingreifen vorgesehen ist. Aufgrund dieses Problems eignet sich das Verfahren nicht gut für Software, bei der die Sicherheit vertraulicher Daten, die Einhaltung von Vorschriften oder hohe finanzielle Einsätze auf dem Spiel stehen.
CI/CD wird verwendet, um die Softwareentwicklung zu rationalisieren und zu automatisieren, um Apps und Services schneller und häufiger bereitzustellen. CI/CD erreicht dies größtenteils durch Automatisierung, durch die Tests, Feedback, Codekorrekturen und Verteilung beschleunigt werden.
Die Implementierung von CI/CD-Praktiken bietet viele Vorteile:
Jede Orchestrierung und Implementierung einer CI/CD-Pipeline ist ein wenig anders. Nachfolgend finden Sie jedoch einige grundlegende Richtlinien, die Ihnen dabei helfen sollen, häufig auftretende Probleme zu lösen und die effektivste Pipeline für Ihr Unternehmen zu unterhalten:
Beim Implementieren eines CI/CD-Prozesses gilt es einige Dinge zu beachten:
AWS (Amazon Web Services) und GCP (Google Cloud Platform) sind zwei beliebte DaaS-Optionen (DevOps-as-a-Service). Beide haben spezielle Vor- und Nachteile.
AWS ist in der Regel schnell, bietet eine einfache Möglichkeit, Ihr DevOps in die Cloud zu migrieren und arbeitet mit einem bequemen nutzungsorientierten Abrechnungsmodell. GCP stellt eine Fülle von Tools wie Stackdriver Monitoring, Stackdriver Debugger, Stackdriver Logging und einen Sicherheits-Scan-Service (App Engine) zur Verfügung, die Sie in Ihrer Anwendungslebenszyklus-Pipeline nutzen können.
Beide bieten hochwertige DevOps-Lösungen, sodass sich die Unterscheidungsmerkmale auf den Preis und die Einsatzbereiche beschränken.
Bei der Suche nach CI/CD-Tools zum Hinzufügen zu Ihrer Entwicklungs-Toolchain gilt es einige Dinge zu beachten.
Das erste ist die Frage, ob Sie ein Open-Source-CI/CD-Tool im Gegensatz zu einem kommerziellen Tool (es liefert den Code) verwenden oder Ihr eigenes entwickeln möchten. Eine Open-Source-Lösung spart Geld, aber es besteht das Risiko, dass die Entwickler den Code drastisch verändern oder die Entwicklung des Produkts ganz einstellen. Außerdem wird für Open-Source-Tools oftmals nur minimaler Support geboten. Kommerzielle Tools bieten dagegen in der Regel einen starken Support und besser vorhersehbare Update-Zyklen, können aber auch kostspielig sein und eine weniger flexible Integration bieten. Wenn Sie Ihre eigene Lösung entwickeln, können Sie sie an die speziellen Anforderungen Ihres Unternehmens anpassen. Allerdings erfordert sie viele Ressourcen.
Eine weitere Überlegung gilt dem Hosting-Modell. Wenn Ihre Codebasis vor Ort bleiben muss, benötigen Sie eine Toolchain, die Sie auf Ihren eigenen Servern oder in Ihrer virtuellen Infrastruktur einsetzen können. CI/CD-Tools sind jedoch überwiegend auf Cloud- und Cloud-native Infrastrukturen ausgerichtet, sodass CI/CD-Tools auch als Teil eines SaaS-Modells (Software-as-a-Service) angeboten werden, das auf der Cloud-Infrastruktur des Anbieters läuft, wodurch Sie weite Teile der Supportkosten auslagern können.
Wie auch immer Sie diese Fragen beantworten, Sie müssen auch die damit verbundenen Kosten berücksichtigen. Trotz der anfänglichen Einsparungen bei einem Open-Source-Tool entstehen Ihnen Kosten für die Einrichtung und den Support des Tools in Ihrer Infrastruktur sowie ein gewisser Produktivitätsverlust, solange die Entwickler lernen, damit umzugehen. Bei kommerziellen Standard- und SaaS-Tools zahlen Sie in der Regel eine Gebühr, die sich nach Ihrem Nutzungsverhalten richtet.
Welche Option für Ihr Unternehmen die beste ist, hängt davon ab, wie viele Builds Sie erstellen möchten, ob Sie parallele Builds benötigen und wie viele Benutzer auf das Tool zugreifen sollen.
Die Geschwindigkeit, mit der ihr Software ausliefert, gilt als wichtiges Unterscheidungsmerkmal im Markt. Erfolgreiche Unternehmen schaffen 50 bis 100 Deployments pro Tag, wobei einige Giganten wie Netflix sogar über 1.000 erreichen. Eine funktionale CI/CD-Pipeline fördert die Produktivität, Zuverlässigkeit und Geschwindigkeit, um diese Zahlen zu erreichen. Stabile Anwendungen sind notwendig, um sich ständig ändernde Geschäftsanforderungen zu erfüllen. Einfach ausgedrückt: Wenn ihr keine CI/CD-Praktiken befolgt, lauft ihr Gefahr, dass eure Firma den Anschluss verliert. Die Transformation eurer Software-Bereitstellung geht weder schnell noch einfach, aber der Aufwand lohnt sich. Dann ist euer Unternehmen für die kommenden Jahre gut aufgestellt.
Ihr habt einen Fehler entdeckt oder eine Anregung? Bitte lasst es uns wissen und schreibt eine E-Mail an ssg-blogs@splunk.com.
Dieser Beitrag spiegelt nicht zwingend die Position, Strategie oder Meinung von Splunk wider.
Weltweit führende Unternehmen verlassen sich auf Splunk, ein Cisco-Unternehmen, um mit unserer Plattform für einheitliche Sicherheit und Observability, die auf branchenführender KI basiert, kontinuierlich ihre digitale Resilienz zu stärken.
Unsere Kunden vertrauen auf die preisgekrönten Security- und Observability-Lösungen von Splunk, um ihre komplexen digitalen Umgebungen ungeachtet ihrer Größenordnung zuverlässig zu sichern und verbessern.