Jump to section

Was ist CI/CD?

URL kopieren

2024 Global Tech Trends

Die schnelle Digitalisierung in der Technologiewelt hat dazu geführt, dass Organisationen teilweise andere Hauptbereiche ihres Unternehmens priorisieren. In der 10. Ausgabe unseres Berichts „Global Tech Trends 2024“ untersuchen wir Insights aus der Branche, Prioritäten und kritische Hindernisse.

Report lesen: Global Tech Trends 2024

Ziel von CI/CD, kurz für Continuous Integration und Continuous Delivery/Deployment, ist die Optimierung und Beschleunigung des Softwareentwicklungs-Lifecycle.

Continuous Integration (CI) bezieht sich auf die Praktik, Codeänderungen automatisch und regelmäßig in ein gemeinsames Quellcode-Repository zu integrieren. Continuous Delivery und/oder Continuous Deployment (CD) ist ein zweiteiliger Prozess, der die Integration, das Testen und die Bereitstellung der Codeänderungen umfasst. Continuous Delivery beinhaltet kein automatisches Produktiv-Deployment, während beim Continuous Deployment Update-Releases automatisch in die Produktivumgebung übergeben werden.

 

CI/CD Flow

 

Diese zusammenhängenden Praktiken werden oft als „CI/CD-Pipeline“ bezeichnet. Sie werden von Entwicklungs- und Operations-Teams unterstützt, die auf agile Weise mit einem DevOps- oder SRE-Ansatz (Site Reliability Engineering) zusammenarbeiten.

Mit CI/CD können Unternehmen einen kontinuierlichen Softwareentwicklungs- und -updatezyklus aufrechterhalten und dabei gleichzeitig Bugs und Codefehler vermeiden.

Wenn Apps zunehmend größer werden, können die Funktionen von CI/CD die Komplexität reduzieren, die Effizienz verbessern und Workflows optimieren.

CI/CD automatisiert die manuellen menschlichen Interventionen, die traditionell erforderlich sind, um neuen Code vom Commit in die Produktion zu bringen. Dadurch werden Ausfallzeiten minimiert, während Code-Releases häufiger stattfinden können. Da sich Updates und Codeänderungen schneller integrieren lassen, kann das Feedback von Nutzenden regelmäßiger und effizienter umgesetzt werden. Das führt zu positiven Ergebnissen für Nutzende und insgesamt zu einer höheren Kundenzufriedenheit. 

Das „CI“ in CI/CD steht für Continuous Integration, einen Automatisierungsprozess für Entwicklungsteams, der ein häufigeres Zusammenführen von Codeänderungen zu einem gemeinsamen Codezweig oder „Trunk“ ermöglicht. Im Zuge dieser Updates werden automatisierte Testschritte angestoßen, die für die Zuverlässigkeit der zusammengeführten Codeänderungen sorgen.

Bei der modernen Anwendungsentwicklung arbeiten mehrere Entwicklerinnen und Entwickler an unterschiedlichen Features einer App. Die gleichzeitige Zusammenführung der Quellcode-Verzweigungen an einem Tag (auch bekannt als „Merge Day“) kann einen hohen Arbeits- und Zeitaufwand bedeuten.

Wenn isoliert arbeitende Entwicklerinnen und Entwickler Änderungen an einer Anwendung vornehmen, können diese mit Änderungen in Konflikt stehen, die zeitgleich von anderen Entwicklungsteams durchgeführt wurden. Dieses Problem kann sich verschlimmern, wenn die einzelnen Entwicklerinnen und Entwickler jeweils eigene lokale Integrated Development Environment (IDE) definieren, statt im Team eine gemeinsame cloudbasierte IDE zu erstellen.

CI ist damit sozusagen die Lösung zu dem Problem, gleichzeitig zu viele Codezweige einer Anwendung in der Entwicklung zu haben, die miteinander in Konflikt stehen.

Bei einer erfolgreichen CI werden die von Entwicklungsteams vorgenommenen Codeänderungen nach der Zusammenführung validiert, indem die Anwendung automatisch entwickelt und verschiedene Stufen automatisierter Tests – in der Regel Unit- und Integrationstests – durchgeführt werden. So wird sichergestellt, dass die Anwendung nach den Änderungen weiterhin funktioniert. Wenn bei den automatisierten Tests ein Konflikt zwischen neuem und bestehendem Code entdeckt wird, lassen sich diese Fehler dank CI einfach und regelmäßig beheben.

„CD“ in CI/CD bezieht sich auf Continuous Delivery und/oder Continuous Deployment – verwandte Konzepte, die zuweilen synonym verwendet werden. Bei beiden geht es um die Automatisierung weiterer Phasen der Pipeline, aber die Begriffe werden manchmal separat verwendet, um den Umfang der Automatisierung in CD zu verdeutlichen. Die Wahl zwischen Continuous Delivery und Continuous Deployment hängt von der Risikotoleranz und den spezifischen Anforderungen der Entwicklungs- und Operations-Teams ab.

 Continuous Delivery automatisiert das Release von validiertem Code in ein Repository, nachdem in der CI-Phase die Builds automatisiert und Unit- und Integrationstests durchgeführt wurden. Für einen effektiven CD-Prozess (Continuous Delivery) ist es also wichtig, dass CI bereits in Ihre Entwicklungs-Pipeline integriert ist.

Sämtliche Phasen der Continuous Delivery – vom Zusammenführern der Codeänderungen bis hin zur Lieferung der produktionsfertigen Builds – umfassen Test- und Release-Automatisierungen. Am Ende dieses Prozesses kann das Operations-Teams eine Anwendung dann schnell in die Produktion übergeben.

Continuous Delivery bedeutet üblicherweise, dass App-Änderungen eines Entwicklungsteams automatisch auf Bugs getestet und in ein Repository (wie GitHub oder eine Container Registry) hochgeladen werden, von wo aus sie vom Operations-Team in einer Live-Produktivumgebung bereitgestellt werden können. Dadurch lässt sich das Problem der mangelnden Transparenz und Kommunikation zwischen Entwicklungs- und Geschäftsteams überwinden. Continuous Delivery dient hier dem Zweck, über eine Codebasis zu verfügen, die stets bereit ist für das Deployment in einer Produktivumgebung. Außerdem soll das Deployment von neuem Code mit minimalem Aufwand erfolgen können.

Die Endphase einer ausgereiften CI/CD-Pipeline ist das Continuous Deployment (CD). Continuous Deployment ist eine Erweiterung der Continuous Delivery und kann sich auf die automatische Freigabe von Entwickleränderungen vom Repository zur Produktivphase beziehen, wo sie direkt von den Nutzenden verwendet werden können.

Mit CD können Operations-Teams von manuellen Prozessen entlastet werden, die die Anwendungsbereitstellung verlangsamen. Continuous Deployment baut auf den Vorteilen der Continuous Delivery auf, indem auch die nächste Phase in der Pipeline automatisiert wird.

In der Praxis bedeutet Continuous Deployment, dass App-Änderungen einer Entwicklerin oder eines Entwicklers binnen weniger Minuten nach ihrer Erstellung live gehen können (vorausgesetzt, sie bestehen den automatischen Test). Dies erleichtert eine kontinuierliche Integration von Feedback ungemein. Zusammen können diese miteinander verbundenen CI/CD-Praktiken die Risiken bei Anwendungs-Deployment reduzieren, da sie den Prozess erleichtern, viele Releases mit kleinen Änderungen vorzunehmen statt sämtliche Änderungen in einem einzigen Release durchzuführen.

Da es jedoch in der Pipeline vor dem Übergang in die Produktion kein manuelles Gate gibt, ist Continuous Deployment stark von einer gut konzipierten Test-Automatisierung abhängig. Dabei können enorme Vorlaufkosten erforderlich sein, um automatisierte Tests für verschiedene Test- und Releasephasen in der CI/CD-Pipeline zu schreiben.

CI/CD ist ein wesentlicher Bestandteil von DevOps-Methoden, mit denen die Zusammenarbeit zwischen Entwicklungs- und Operations-Teams gefördert werden soll. Sowohl CI/CD als auch DevOps legen den Fokus auf die Automatisierung von Code-Integrationsprozessen. Dadurch beschleunigen sie die Prozesse, die Ideen (wie etwa neue Features, Verbesserungsanfragen oder Bug Fixes) von der Entwicklung bis zur Bereitstellung in einer Produktivumgebung durchlaufen, in der sie dann Nutzenden einen Mehrwert bieten können. 

Beim auf Zusammenarbeit basierenden DevOps-Ansatz aber wird Sicherheit zur gemeinsamen Verantwortung, die von Anfang an in den Ablauf integriert ist. Dieses Prinzip ist so zentral, dass es auch „DevSecOps“ genannt wird, um zu unterstreichen, dass DevOps-Initiativen eine starke Sicherheitsbasis zugrunde liegen muss. DevSecOps (Development, Security und Operations) ist ein Konzept für Unternehmenskultur, Automatisierung und Plattformdesign, das Sicherheit als gemeinsame Verantwortlichkeit im gesamten IT-Lifecycle integriert. Eine wichtige Komponente von DevSecOps ist das Einführen einer sicheren CI/CD-Pipeline.

CI/CD-Sicherheit dient dem Schutz von Code-Pipelines durch automatisierte Prüfungen und Tests, um Schwachstellen bei der Softwarebereitstellung zu vermeiden. Durch die Integration von Sicherheit in Ihrer Pipeline - mit Ansätzen wie Shift Left und Shift Right - können Sie Ihren Code besser vor Angriffen schützen, Datenlecks vermeiden, die Compliance mit Richtlinien unterstützen und für Qualitätssicherung sorgen.

Die schnelle Entwicklung und Bereitstellung ohne angemessene Sicherheitsvorkehrungen kann die Pipeline Risiken wie den folgenden aussetzen:

  • Offenlegung sensibler Daten gegenüber externen Quellen
  • Verwendung von unsicherem Code oder Komponenten von Drittanbietern
  • Unbefugter Zugriff auf Quellcode-Repositories oder Build-Tools

Das Identifizieren und Beheben von Schwachstellen während des gesamten Softwareentwicklungszyklus stellt sicher, dass Codeänderungen gründlich getestet werden und den Sicherheitsstandards entsprechen, bevor sie in der Produktion bereitgestellt werden.

CI/CD-Tools können ein Team dabei unterstützen, die Entwicklung, das Deployment und die Tests zu automatisieren. Einige Tools unterstützen speziell die Integration (CI), andere verwalten die Entwicklung und das Deployment (CD), andere wiederum kontinuierliches Testen oder ähnliche Funktionen.

Tekton Pipelines ist ein CI/CD-Framework für Kubernetes-Plattformen, das ein cloudnatives CI/CD-Standarderlebnis mit Containern bietet.

Neben Tekton Pipelines gibt es noch weitere quelloffene CI/CD-Tools, die Sie sich ansehen sollten:

  • Jenkins, ein umfassendes Tool zur Handhabe von einfachen CI-Servern bis hin zu vollständigen CD-Hubs
  • Spinnaker, eine CD-Plattform für Multi-Cloud-Umgebungen
  • GoCD, ein CI/CD-Server mit Schwerpunkt auf Modellierung und Visualisierung
  • Concourse, „ein kontinuierlicher Open Source-Macher“
  • Screwdriver, eine für CD konzipierte Build-Plattform

Teams können auch gemanagte CI/CD-Tools in Betracht ziehen, die von verschiedenen Anbietern erhältlich sind. Die großen Public Cloud-Anbieter verfügen über CI/CD-Lösungen, ebenso wie GitLab, CircleCI, Travis CI, Atlassian Bamboo und viele andere.

Außerdem ist ein Tool, das für DevOps grundlegend ist, wahrscheinlich auch Teil eines CI/CD-Prozesses. Tools für die Konfigurationsautomatisierung (wie Ansible, Chef und Puppet), Container Runtimes (wie Docker, rkt und cri-o) und Container-Orchestrierung (Kubernetes) sind keine reinen CI/CD-Tools, kommen aber in vielen CI/CD-Workflows vor.

Es gibt viele verschiedene Möglichkeiten, CI/CD zu implementieren, je nach der von Ihnen bevorzugten Strategie für die Anwendungsentwicklung und dem Cloud-Anbieter. Red Hat® OpenShift® Service on AWS bietet verschiedene Optionen wie Tekton und OpenShift Pipelines, um Ihren eigenen CI/CD-Workflow zu vereinfachen. Mit Red Hat OpenShift können Unternehmen CI/CD einsetzen, um die Entwicklung, das Testen und das Deployment einer Anwendung für mehrere On-Premise-Umgebungen und Cloud-Plattformen zu automatisieren. 

Unsere Expertinnen und Experten unterstützen Ihre Organisation beim Entwickeln der erforderlichen Praktiken, Tools und Kultur, mit denen Sie Ihre bestehenden Anwendungen effizienter modernisieren und den Einstieg in die cloudnative Anwendungsentwicklung beschleunigen können.

Mit Red Hat® OpenShift® können Unternehmen die Produktivität ihrer Entwicklungsteams steigern, ihre CI/CD-Pipelines automatisieren sowie Sicherheitsmaßnahmen früher einbinden und auf den gesamten Entwicklungszyklus ausweiten.

Red Hat OpenShift Pipelines wurde entwickelt, um die Schritte der CI/CD-Pipeline in einem eigenen Container auszuführen. Dadurch lassen sich die einzelnen Schritte unabhängig skalieren, und die Anforderungen der Pipeline werden erfüllt. Dies bedeutet, dass Administrations- und Entwicklungsteams Pipeline-Blueprints für Anwendungen erstellen können, die auf den besonderen Geschäfts- und Sicherheitsanforderungen ihres Unternehmens basieren.

Red Hat OpenShift GitOps ist ein Operator, der einen Workflow bereitstellt, mit dem Git-Repositories, CI/CD-Tools (Continuous Integration/Continuous Delivery) und Kubernetes integriert werden. So können Sie eine schnellere, skalierbare Softwareentwicklung mit mehr Sicherheit erreichen, ohne dabei Abstriche bei der Qualität machen zu müssen.Mit OpenShift GitOps können Kunden deklarative Git-gesteuerte CD-Workflows erstellen und direkt in ihre Anwendungsentwicklungsplattform integrieren.

Red Hat Ansible® Automation Platform enthält sämtliche Tools, die für das Implementieren einer unternehmensweiten Automatisierung erforderlich sind, einschließlich einer eventgesteuerten Lösung, Analysefunktionen und vordefinierten Content Collections. Durch die gemeinsame YAML-basierte Sprache und einen Ansatz für den gewünschten Zustand können Sie dieselben Automatisierungsinhalte sowohl für den täglichen Betrieb als auch für Ihre CI/CD-Pipeline verwenden. Und da die Plattform mit nahezu allen Aspekten Ihrer IT-Infrastruktur zusammenarbeitet, können Sie konsistente Entwicklungs-, Test- und Produktivumgebungen einfach und schnell bereitstellen und so die Zuverlässigkeit und Resilienz Ihrer Anwendungen erhöhen.

Ansible Automation Platform lässt sich auch mit Red Hat Advanced Cluster Management for Kubernetes integrieren und ermöglicht Ihnen so die Orchestrierung von Kubernetes-Clustern innerhalb Ihrer CI/CD-Pipeline. Außerdem können Sie mit der für Menschen lesbaren Automatisierungssprache Red Hat OpenShift Operators einfacher entwickeln und verwalten.

Weiterlesen

Artikel

Was ist ein DevOps Engineer?

DevOps Engineers verfügen über eine besondere Kombination aus praktischem und theoretischem Fachwissen, mit der sie Zusammenarbeit, Innovationen und einen kulturellen Wandel im Unternehmen ermöglichen.  

Artikel

Was ist CI/CD?

CI/CD sorgt für eine kontinuierliche Automatisierung und Überwachung über alle Phasen des App-Lifecycles hinweg, von Integration und Tests bis hin zu Bereitstellung und Deployment.

Artikel

Was ist DevSecOps?

Wenn Sie die Agilität und Reaktionsfähigkeit von DevOps vollständig ausschöpfen möchten, muss die IT-Sicherheit im gesamten Lifecycle Ihrer Apps eine Rolle spielen.