Wenn es um Softwareentwicklung geht, liegt der Schlüssel zur Beschleunigung aller involvierten Prozesse in Continuous Integration (CI) und Continuous Delivery (CD). Dabei handelt es sich um eine Sammlung von Prinzipien und Methoden, die Development Teams dazu befähigt, Änderungen am Programmcode schneller, öfter und mit höherer Stabilität vorzunehmen. Im Ergebnis führt das zu einer deutlich schnelleren Reaktion auf Geschäftserfordernisse und Kundenbedürfnisse.
Continuous Integration & Delivery - Definition
Der Begriff Continuous Integration repräsentiert eine Coding-Philosophie sowie ein Methodenset, das geschaffen wurde, um Softwareentwickler bei der regelmäßigen Integration kleinerer Änderungen am Programmcode zu unterstützen. Darüber hinaus können Code-Teile so auf regelmäßiger Basis in Repositories zur Versionskontrolle fließen. Da das Gros heutiger Softwareanwendungen in der Entwicklung verschiedene Plattformen und Tools benötigt, brauchen die Developer einen zuverlässigen Weg, um die Einzelteile miteinander integrieren und Änderungen validieren zu können.
Das Ziel von CI ist es, Software konsistent und automatisiert zu programmieren, zu bündeln und zu testen. Die Konsistenz im Integrationsprozess ermöglicht eine höhere Frequenz von Änderungen am Code, was wiederum zu mehr Kollaboration und am Ende zu höherer Qualität der Applikation führt.
Continuous Delivery schließt nahtlos an Continuous Integration an und beschreibt die automatisierte Auslieferung von Applikationen innerhalb definierter IT-Infrastrukturen. Die meisten Software Developer arbeiten heutzutage mit diversen Entwicklungslandschaften - Continuous Delivery sorgt dafür, dass Code-Änderungen automatisiert über diese heterogene Infrastrukturlandschaft hinweg ausgerollt werden.
Continuous Integration und -Delivery erfordern außerdem Continuous Testing, schließlich besteht das Ziel darin, hochqualitative und durchgängig sichere Applikationen für die Endbenutzer zu schaffen. In Kombination sorgen CI und CD dafür, dass der Prozess der Softwareentwicklung deutlich beschleunigt wird. Continuous Integration und Continuous Delivery werden als Pipeline implementiert. Dabei gilt CI/CD gemeinhin als Best Practice für DevOps Teams.
Der Trend zur CI/CD Pipeline
Nach Einschätzung von Branchenexperten setzen immer mehr Unternehmen auf Continuous Integration und Continuous Delivery, um Design, Entwicklung und Auslieferung von Softwareprodukten schneller und effizienter zu gestalten. Insbesondere in Unternehmen, die auf agile Softwareentwicklung setzen, ist das der Fall, wie ein Blick auf die Gartner-Umfrage "Agile in the Enterprise" zeigt.
Demnach weisen agile Entwicklungsteams eine deutlich erhöhte Adoptionsrate von CI/CD auf: "Meiner Meinung nach ist Continuous Integration der natürliche Startpunkt für die Schaffung von automatisierten Pipelines", sagt Sean Kenefick, Analyst bei Gartner. "Die etwas diffizileren Aspekte von Continuous Delivery werden für automatisiertes Testing und die Re-Architektur von Software benötigt."
Serverless Computing, steigende Security-Anforderungen und der Agile-Trend haben CI/CD inzwischen zu einer Mainstream-Strategie für alle Unternehmen erhoben, die etwas mit Softwareentwicklung zu tun haben: "Features wie Continuous Integration, automatisiertes Testing und Continuous Delivery wurden früher nur von hippen Startups angeboten. Inzwischen bedienen sich auch traditionelle (Groß-)Unternehmen erfolgreich dieser Methoden", weiß Hasan Yasar, Direktor am Software Engineering Institute der Carnegie Mellon University.
Im Folgenden geben wir Ihnen einige Tipps an die Hand, wie Sie eine nachhaltige CI/CD-Strategie in Ihrem Unternehmen implementieren.
CI/CD braucht Stakeholder
Eine möglichst frühe Einbeziehung aller an einem Entwicklungsprojekt beteiligten Stakeholder ist für den Erfolg einer CI/CD-Strategie essenziell, wie Yasar weiß: "Der maßgebliche Benefit entsteht durch die Beteiligung aller Stakeholder in jeder Phase eines Entwicklungsprojekts, bei der Entscheidungen getroffen werden. Die IT sollte beispielsweise einbezogen werden, wenn es um die Architektur geht, damit die Entwickler auf einer Plattform arbeiten, die von vorneherein allen Anforderungen der IT genügt."
Dieses Muster sollte bei allen wesentlichen Projektentscheidungen mit allen relevanten Stakeholdern wiederholt werden. So ist sichergestellt, dass jede große Entscheidung unter Beteiligung von Experten gefällt und die im Rahmen des Projekt-Lebenszyklus üblicherweise entstehenden, technischen Schulden auf ein Minimum reduziert werden.
Das richtige CI/CD-System
Die auf dem Markt erhältlichen Systeme für Continuous Integration und Continuous Delivery können Unternehmen ganz konkrete Vorteile verschaffen. Der Einsatz solcher Systeme ist nach Überzeugung von DevOps Engineer Josh Komoroske vom Security-Anbieter StackRox auch ein Signal dafür, wie gesund eine Entwicklungsabteilung ist: "Wenn es zum Kinderspiel wird, neue Features zu integrieren, zu testen und auszurollen, erhöht sich die Reaktionsfähigkeit einer Organisation auf Veränderungen drastisch. Dauert es hingegen Wochen oder Monate, ihren Kunden etwas zu liefern, kommt ein anderes Unternehmen, dass es schneller und besser kann."
Wenn es darum geht, die entsprechende Software auszuwählen, sollten Unternehmen jedoch vor allem gewissenhaft recherchieren, so der Experte weiter. Die eingehende Analyse des vorhandenen Ökosystems und der hierfür verfügbaren Lösungen sei dazu genau so unerlässlich, wie die Einbindung der Softwareentwickler. Schließlich sind sie es, die das CI/CD-System im Tagesgeschäft nutzen sollen. Ist die Entscheidung für das CI/CD-System gefallen, sollten Unternehmen alles daransetzen, dessen Vorteile klar herauszustellen: "Setzen Sie das System auf und demonstrieren Sie anhand konkreter Beispiele, wie es funktioniert", rät Komoroske. "Wenn die Menschen sehen, dass es einen Mehrwert für ihre Workflows bringt, wird das Ganze zum Selbstläufer."
Continuous Integration & Delivery Tools
Continuous Delivery Tools decken laut Gartner im Wesentlichen vier Bereiche ab:
Neuaufbau für Isolationszwecke;
Automatisiertes Testing;
Schaffung einer automatisierten Prozess-Pipeline;
Automatisierte Bereitstellung und Konfiguration von Umgebungen;
Diese Komponenten sind allgemein gehalten und können viele individuelle Prozesse nach sich ziehen, um eingesetzt werden zu können. Um beispielsweise automatisiertes Testing zu realisieren, müssen jeweils eigene Sets für Performance- und Security Testing erzeugt werden. Außerdem sind auch automatisierte Tests notwendig, die die IT-Umgebungen und Orchestrierungs-Plattformen hinsichtlich ihrer korrekten Konfiguration überprüfen. "Es gibt dabei keinen Aspekt, der wichtiger ist als der andere - alle sind von gleicher Bedeutung", sagt Gartner-Analyst Kenefick.
Unternehmen sollten dafür sorgen, dass manuelle Zulassungsprozesse an kritischen Stellen im Deployment-Prozess zum Zuge kommen. Diese verhindern, dass ungetesteter oder nicht freigegebener Programmcode in Produktions- oder Testumgebungen gelangt. Darüber hinaus ermöglicht dieses Vorgehen eine bessere Kontrolle darüber, wann der Code für Schlüssel-Umgebungen freigegeben wird.
Metriken für den CI/CD-Erfolg
Wie bei den meisten anderen Technologien und Prozessoptimierungen ist auch im Fall von Continuous Integration und Continuous Delivery nicht damit getan, einmal etwas aufzusetzen und dann die Füße hochzulegen. Einblicke in verschiedene Metriken des "Build/Test/Deploy"-Zyklus sind unabdingbar für die effiziente Optimierung von CI/CD Tools.
Diese Tools sollten für Unternehmen Multiplikatoren darstellen und sowohl Entwicklungs- als auch Testzeiten und die Time-to-market reduzieren. Deshalb ist es unerlässlich, die Verbesserungen von CI/CD Tools zu erfassen und diese im Zeitverlauf miteinander zu vergleichen.
Was Continuous Integration & Delivery bringt
Damit das Entwicklungsteam in einem Unternehmen die notwendigen Kompetenzen aufbauen kann, um eine CI/CD-Strategie erfolgreich zu fahren, sollten Unternehmen verstehen, warum genau sie Continuous Integration und Continuous Delivery brauchen. Diese Vorteile können erschlossen werden:
Verbesserte Produktivität der Softwareentwickler
Optimierung des Delivery Frameworks
Verbesserte Prozesseffizienz
Agile Transformation
Frühe CI/CD-Plattformen wurden als Orchestrierungs-Services konzipiert, die Prozesse rund um den Produkt-Lebenszyklus miteinander verbinden, um die Produktivität zu erhöhen. Mit der Zeit, die die Entwicklung des Programmcodes in Anspruch nimmt, steht und fällt allerdings auch der Return on Investment.
Farid Roshan, Chef-Entwickler beim Softwareanbieter Altimetrik, weiß worauf es bei modernen CI/CD-Initiativen ankommt: "Sie sind auf modulare IT-Architekturen anpassbar, erlauben 'plug and play'-Verfahren und ermöglichen es, die Pipeline so zu konfigurieren, dass sie diverse Delivery Frameworks unterstützt. Nur wenn die Pipeline auch richtig implementiert wird, ist dafür Sorge getragen, dass die Softwareentwickler erweiterte Funktionalitäten schaffen können, die den aktuellen Geschäftsanforderungen entsprechen."
Dabei, so der Experte weiter, sei es aber auch wichtig, künftige Anforderungen zu antizipieren: "Entwickeln Sie CI/CD-Fähigkeiten für Ihre zukünftigen Business-Ziele. Die Adoption eines CI/CD-DevOps-Ansatzes innerhalb von Silo-Strukturen und auf Basis existierender Prozesse führt zu Fragmentierung, einem Mangel an Standardisierung und einem minimalen ROI hinsichtlich Agilität. Das kann einen Kaskadeneffekt für das gesamte Unternehmen nach sich ziehen."
Automatisierung mit CI/CD
Im Rahmen einer Continuous-Integration- und Continuous-Delivery-Strategie sollten Unternehmen alle Prozesse automatisieren, bei denen das sinnvoll ist. Dabei sollten Aspekte, die sich nicht automatisieren lassen, klar herausgestellt werden, empfiehlt Hasan Yasar: "Automatisierung ist ein Grundpfeiler von DevOps und gleichzeitig einer der wesentlichen Benefits einer DevOps-Implementierung, die auf CI/CD Enablement abzielt."
Der agile DevOps-Ansatz, den das SEI empfiehlt, wird durch "Infrastructure as a Code" (IaC) ermöglicht. Darunter versteht man das Management von Infrastruktur-Komponenten (etwa Netzwerke, virtuelle Maschinen oder Load Balancer) unter Anwendung derselben Versionierungs-Methoden, die DevOps Teams bei der Erstellung von Quellcode nutzen. Darüber hinaus werden hierbei diverse Umgebungen automatisiert: "Das Ziel ist, alle automatisierten Prozesse wie Programmcode zu behandeln. Dieser wird in einem abgesicherten Versionskontrollsystem vorgehalten", erklärt Yasar.
Dabei ist der Infrastruktur-Code im selben Repository abgelegt wie der Applikations-Code. So haben sowohl die Entwickler als auch alle Stakeholder jederzeit Zugriff.
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.