DevOps und Continuous Integration / Continuous Delivery (CI / CD) – Softwarelösungen zeitgemäß up to date halten

Es ist nicht von der Zukunft der Softwareentwicklung die Rede, wenn Begriffe wie „iterativ“, „cloudnativ“, „automatisiert“, „agile Praktiken“, „agile Integration“, „Standardisierung von Umgebungen“ oder „Automatisierung von Sicherheitsfeatures“ fallen. Im Zweifel geht es hier stets um die digitale Transformation, die schon in vollem Gange ist und die sich immer schneller vollzieht.

Der Begriff „DevOps“ (eine Verbindung aus Development und Operations) bezeichnet dabei (Unternehmens-) Philosophien und Praktiken, welche die beschleunigte Bereitstellung von Software beziehungsweise IT-Serviceleistungen in diesem modernen Umfeld bedarfsgerecht ermöglichen sollen. Dafür arbeiten IT-Operations-Teams und klassische Entwicklerteams in einem bisher ungekannten Ausmaß eng zusammen, etwa mithilfe laufender Feedbacks. Agile Praktiken und agile Integration sind hier gewissermaßen eine Grundvoraussetzung (im Rahmen unseres Blogartikels über das „Agile Projektmanagement“ haben wir die wichtigsten Fakten zum Thema „Agilität“ bereits skizziert).

DevOps sorgen für ein hohes Maß an Geschwindigkeit, Qualität, Sicherheit und Reaktionsfähigkeit durch:

  • die grundsätzliche Automatisierung iterativer/routinemäßiger Aufgaben bei der Integration von neuem Code in bereits bestehende Anwendungen oder bei der Programmierung neuer Software
  • Standardisierung von Umgebungen, beispielsweise durch die Verwendung von Containern, in welche nicht nur die jeweiligen Anwendungen gepackt werden können, sondern auch für deren Ausführung erforderliche Laufzeitumgebungen, Einstellungen, Bibliotheken und vieles Weitere mehr
  • die frühzeitige unternehmerische Entscheidung für die Implementierung einer effektiven Automatisierung von Sicherheitsfeatures, die beispielsweise bestimmte Bedienereingaben zulassen und andere, die Probleme bereiten oder zu Sicherheitslücken führen würden, eben nicht

DevOps bezieht sich sowohl auf die Unternehmensphilosophie als auch auf grundsätzliches Plattformdesign und von beiden Aspekten abhängige Automatisierungsprozesse.

Was haben nun CI und CD mit DevOps zu tun?

CI steht für Continuous Integration (auch Agile Integration), was in der Praxis die automatisierte und kontinuierliche Integration neuer Codes in Quellcode-Repositorys von Software bezeichnet. Oder anders ausgedrückt: Ein Entwickler erstellt neue Features sowie Performance-Verbesserungen für Software – diese werden nach einer automatisierten Überprüfung direkt in das zugehörige Quellcode-Repositorium geschrieben. Die angesprochene maschinelle Überprüfung kann unter anderem beinhalten, ob der neue Code im Zusammenwirken mit neu entwickeltem Code anderer Entwickler vorhersehbare Programm- oder gar Betriebssystem-Abstürze verursachen könnte.

CD kann einerseits für Continuous Delivery stehen, also die (automatisiert) überprüfte Bereitstellung der neuen Quellcodes. Andererseits bezeichnet CD auch Continuous Deployment. Continuous Deployment geht mit automatisierten Update-Veröffentlichungen jedoch noch einen Schritt über die Continuous Delivery hinaus.

Sowohl CI als auch CD sind somit älter als die DevOps-Praktiken. Sie sind gewissermaßen integraler Bestandteil der vergleichsweise weit fortgeschrittenen digitalen Entwicklung in Industrieländern, welche eine möglichst flexible und schnelle Herangehensweise bei der Softwareentwicklung nachhaltig einfordert.

Dennoch sind, wie beispielsweise redhat.com richtigerweise feststellt, CI und CD in der Regel zentrale Bestandteile von DevOps-Praktiken beziehungsweise von DevOps-Methoden.

Im Abschnitt „CI/CD im Vergleich zu DevOps“ bei Red Hat ist den Open-Source-Entwicklern dafür zu danken, dass der bei einer vorausschauenden DevOps-Methodik unverzichtbare Sicherheitsaspekt betont wird: DevSecOps beschreibt daher nicht nur Development und Operations, sondern auch die Sicherheit. Denn schließlich stehen nach einer erfolgreichen schnellen Software-Entwicklungsphase anders als früher Monate oder Jahre für Sicherheitsüberprüfungen und das aufwendige nachträgliche Stopfen von Sicherheitslücken zur Verfügung. Die Sicherheitsexperten aus Ihrem Entwickler-Stab sollten demnach von Anfang an und über die gesamte Lebensdauer Ihrer (geplanten neuen) Softwareentwicklung mit einbezogen sein. Das macht die vertrauensvolle, konstruktive Zusammenarbeit von drei Bereichen erforderlich:

  • Softwareentwickler (Development)
  • Sicherheitsexperten (Security)
  • dem operativen Bereich (Operations)

Lohnen sich Konzepte wie DevSecOps überhaupt?

Der Prozess, der auf zielführender Kollaboration aufbaut, scheint auf den ersten Blick aufwendig und komplex. Spätestens bei ersten praktischen Umsetzung wird er anspruchsvoll, aber mit der Zeit wird er zur Routine. Nach dem Durchlaufen dieser iterativen Prozesse, haben Sie nach dem Durchlaufe zeitgemäße Softwareprodukte, die Sie dem sich ändernden Marktumfeld, Nutzerwünschen oder auch neuen Problemstellungen im wahrsten Sinne des Wortes dynamisch und spielend einfach anpassen können.

Einen wichtigen Punkt möchten wir an dieser Stelle noch ergänzen: Natürlich ist es nicht nur Sinn dieser ganzen innovativen und schon seit Jahren bewährten Ansätze, Software-Bereitstellung in letzter Konsequenz kostenoptimiert und möglichst nutzerfreundlich bereitzustellen. Die weitgehende Modularisierung von Programmen, die durch die flexible agile Arbeitsweise vorangetrieben wird, lässt die Komplexität und Komplexität von Softwaredesigns nicht mehr wirklich zu. Er revolutioniert die Herangehensweise von Software-Entwicklern.

Tauchen beispielsweise neue Sicherheitslücken auf oder wird die Abstimmung auf geänderte Rahmenbedingungen erforderlich, können die für die jeweilige Problemstellung am besten geeigneten Programmierer aus Ihrem Hause umgehend und wirklich maßgeschneidert intervenieren. Wieso? Nun, mit diesen neuen Ansätzen (modularer Aufbau mit Microservices, Container, automatisierte Sicherheit, automatisierte Updates …) ist es bei einem neuen Release nicht mehr notwendig, Ihre Softwarelösung / App von Grund auf neu zu schreiben oder in weiten Teilen umzuarbeiten:

Sobald der operative Part aussagekräftiges Feedback von den Nutzern erhält, kommuniziert er den Sachverhalt mit den Entwicklern. Diese konzentrieren sich ausschließlich auf die spezielle Aufgabenstellung. Automatisierte Prozesse überprüfen die Kompatibilität des neuen Codes mit dem Bestand und mit parallelen Neuentwicklungen, Sicherheitsexperten und automatische Sicherheitsfeatures sorgen für Zuverlässigkeit und schon ist Ihr Vorhaben fast fertig, um live zu gehen.

Agile Herangehensweisen, agiles Management, agile Lösungsstrategien

Wenn Sie sich mit dem Thema DevOps und CI/ CD auseinandersetzen, werden Sie feststellen, dass agile Managementansätze wie Scrum und Kanban gewissermaßen als Voraussetzung gesehen werden, um die reibungslose Zusammenarbeit von IT-Operations-Teams, IT-Sicherheitsexperten und klassischen Entwicklerteams sicherzustellen. Im Endeffekt handelt es sich um nichts anderes als die Fortführung der Agilen Transformation, welche, ab einem bestimmten Digitalisierungsgrad von Unternehmen und Gesellschaften, zu einer praxisgerechten Notwendigkeit wird. Weiterführende Informationen zum Thema „Agile Transformation“ halten wir in diesem Beitrag für Sie bereit.

APIs und Microservices

Die Projektteams von DevSecOps oder DevOps nutzen immer öfter eine modulare Software-Architektur, die auf Microservices basiert. Anders als bei althergebrachter (monolithischer) Software sind die meisten einzelnen Funktionen und Aspekte dieses bausteinförmig aufgebauten Software-Gesamtkonzeptes voneinander unabhängig, obwohl sie vom Nutzer letztendlich als einheitliches Softwareprodukt wahrgenommen und verwendet werden.

Ein großer Vorteil dieser Microservices ist es, dass wichtige Neuerungen beispielsweise für nur einen oder ganz wenige dieser Services entwickelt und implementiert werden können. Das Software-Gesamtkonzept bleibt davon weitgehend unangetastet und / oder es wird automatisiert überprüft, ob sich unterschiedliche Programmbestandteile gegenseitig beeinträchtigen könnten.

Interessanterweise zählen die Projektteams, die ganz gezielt auf Microservices setzen, auch zu besonders aktiven Nutzern und Anbietern von APIs. Die Application Programming Interfaces sind dabei nichts anderes als Programmierschnittstellen, welche die Kommunikation ihrer Software (-komponenten) mit Software (-komponenten) Anderer möglich machen.

Die Möglichkeit, durch APIs Interaktionen und Kommunikation zu optimieren, zählt für die betreffenden Projektteams dabei zur Selbstverständlichkeit. Darüber hinaus kann die API-Technologie zu einer lukrativen Einnahmequelle werden – etwa wenn Sie als Softwareentwickler oder Unternehmen über Daten verfügen, die für Andere interessant sind und die Sie gegen eine entsprechende Gebühr zur Verfügung stellen können. Dazu zählen zum Beispiel aktuelle Wetterdaten, Börsendaten, Statistiken oder Wechselkursrechner und vieles Weitere mehr.

Zur Verdeutlichung: eine kurze schematische Zusammenfassung

Continuous Integration → Continuous Delivery → Continuous Deployment

CI sowie CD und CD im Zusammenhang betrachtet, ergeben einzelne Stufen einer sogenannten Pipeline, die von der Entwicklung von Softwarekomponenten bis zur Veröffentlichung reicht.

Im Rahmen der Continuous Integration sollten, bei einer optimalen Herangehensweise, folgende Schritte stattfinden, wobei der von uns im Zusammenhang mit dem DevOps-Ansatz diskutierte Sicherheits-Aspekt im Idealfall bereits inkludiert ist:

  • Entwickeln
  • Testen
  • Sicherheitsüberprüfung
  • Zusammenführen

In diesem Schritt werden auch eventuell auftauchende Kompatibilitätsprobleme einzelner Codes aufgedeckt und behoben, welche durch das Prinzip unabhängig und räumlich von einander getrennt arbeitender Programmierer prinzipiell immer auftreten können.

Im nun folgenden Schritt, der automatisierten oder teilautomatisierten Continuous Delivery, wird der Quellcode dann zum Beispiel maschinell gepackt und in das Software-Repositorium integriert.

Den finalen Abschnitt dieser stark automatisierten Software-Veröffentlichungs-Pipeline stellt dann das Continuous Deployment dar, mit dem die neue Software, nachdem sie diverse automatisierte Tests durchlaufen hat, direkt an die Nutzer ausgeliefert wird. Das Continuous Deployment ist also ein wichtiger Schritt in Richtung vollständiger Automatisierung. Fehlt dieser Schritt in der Pipeline, muss die Software gegebenenfalls manuell geprüft, manuell vorbereitet und ebenfalls von Hand für die Auslieferung freigegeben werden.

IBM listet eine ganze Reihe wichtiger Schritte beziehungsweise technischer Vorgehen und Werkzeuge auf, damit Continuous Deployment den von den Leitern der Softwareprojekte erhoffen Mehrwert eines hohen Automatisierungsgrades auch erbringen kann. Darunter sind zum Beispiel die Versionskontrolle, eine Überprüfung des Codes an sich, eine Kontrolle der Konfigurationseinstellungen oder auch ein Infrastruktur-Monitoring, um positive wie negative Resultate neuer Quellcodes einschätzen zu können.

Lernen Sie vielfältige CI/ CD-Frameworks und -Tools kennen

Red Hat setzt auf Tekton Pipelines, Microsoft verspricht mit Azure Pipelines einen DevOps Workflow auf höchstem Niveau und Google Cloud illustriert, wie Sie eine schlagkräftige und maßgeschneiderte CI/ CD-Pipeline mittels Azure Pipelines, Google Kubernetes Engine und Google Container Registry erstellen können. So komplex die Materie also auch scheinen mag, bei der Entscheidung für DevOps-Methoden steht Ihnen geradezu eine Fülle an bedarfsgerechten CI/ CD-Elementen zur Verfügung, um die gesteckten Entwicklungsziele zu erreichen.

Und diese drei Beispiele stellen gewissermaßen nur einen kleinen Bruchteil der Ihnen zur Verfügung stehenden Entscheidungsmöglichkeiten für die Nutzung, Gestaltung oder Anpassung einer Pipeline dar. Mittlerweile haben alle bekannteren Cloud Service Provider CI/ CD-Pipelines beziehungsweise CI/ CD-Lösungen im Portfolio. Bekannte Open Source-Anbieter sind Concourse, GoCD, Jenkins, Spinnaker, Screwdriver und Tekton.

Ein Maximum an Flexibilität als Schlüssel für eine erfolgreiche unternehmerische Zukunft

In unserem vorangegangenen Beitrag über die IT-Schlüsseltechnologien unserer Zeit haben wir darauf hingewiesen, wie wichtig Flexibilität bereits jetzt ist und welche große Bedeutung ihr noch zukommen wird.Eine Vielzahl von KI/AI-Entwicklungen und mit Beginn der kommenden Dekade insbesondere das Quantencomputing werden ein Maximum an Flexibilität in unterschiedlichsten Bereichen erzwingen.

Das Positive: Mit DevOps-Praktiken, die Continuous Integration (CI), Continuous Delivery (CD) und Continuous Deployment (CD) als wertvolles Handwerkszeug konsequent nutzen, haben Unternehmen bereits jetzt die Tools und agilen Vorgehensweisen zur Hand, um die zukünftigen, noch anspruchsvolleren Herausforderungen im Bereich Software zu meistern. Schließlich wird es spätestens mit dem intensiven Einsatz des Quantencomputings darum gehen, unterschiedlichste Generationen und Klassen von Computersystemen über leistungsstarke Netzwerke sinnvoll miteinander zu verknüpfen. Das geht vom Legacy-System über den heimischen Laptop und das Firmennetzwerk bis hin zur Cloud, die dann als Schnittstelle zur bisher unvorstellbaren Rechenleistung des Quantencomputings fungieren wird.

Auch wenn man auf die Leistungsfähigkeit agiler Konzepte wie DevOps, CD und CI in Verbindung mit dem Cloudcomputing durchaus vertrauen darf, bleibt eine Herausforderung: Das Quantencomputing erfordert eine völlig neue Art der Programmierung, da es die bisherige Beschränkung auf Nullen und Einsen, das althergebrachte „ja“ und „nein“, um gleich mehrere Möglichkeiten erweitert, etwa im Sinne eines „Vielleicht“ und damit vollständig sprengt.

Fazit

Es kann nicht oft genug betont werden, dass Flexibilität und schnelle Reaktionsfähigkeit bereits heute der Schlüssel zum Erfolg sind. Das gilt ganz besonders im Bereich der Software- respektive App-Entwicklung. Eine zügige Marktreife, eine bedarfsgerechte Produktpflege, die maßgeschneiderte Umsetzung von Kunden- und Nutzerwünschen, Kosteneffizienz oder auch die Möglichkeit, in Teams zu arbeiten, die rund um den gesamten Globus verteilt sind. Mit einer konsequenten DevOps-Methodik und mit der Entscheidung für eine Pipeline, die Ihre Projekte optimal fördert, sind sie sowohl auf die aktuelle dynamische Marktsituation als auch auf (überraschende) Entwicklungen der nahen Zukunft bestens vorbereitet.

Denken Sie aber daran, dass dieser Weg der Workflow-Optimierungen und schnellen Produkt-(weiter)entwicklung gewissermaßen nie abgeschlossen sein wird. Im Gegensatz zum Quantencomputing, dessen Booster-Wirkung auf Veränderungen in IT, Arbeitswelt und Lebensweise viele Menschen in wenigen Jahren zwar sicherlich überraschen wird, ist die unaufhaltsame und sich selbst beschleunigende KI-Entwicklung aktuell schon da. Das Bewusstsein für das disruptive Potenzial dieser Technologie hingegen „hinkt“ demgegenüber noch ein wenig hinterher.

Wenn Sie heute Arbeitsweisen wie DevOps, CI und CD also nicht bereits konsequent anwenden, dürfte sich die Konkurrenzsituation für Sie spätestens dann drastisch verschärfen, wenn Wettbewerber modernste KI-gestützte Lösungen in Betrieb nehmen, welche einen noch höheren Automatisierungsgrad ermöglichen und die Produktivität noch weiter erhöhen.

In unserem vorangegangenen Beitrag haben wir das olympische Motto „höher, schneller, weiter“ herangezogen, um die sich beschleunigende Entwicklung im IT-Bereich und bei IT-Schlüsseltechnologien zu illustrieren. Dabei haben wir festgestellt, dass Softwareprodukte durchaus dezidiert als Schlüsseltechnologie betrachtet werden müssen. Es liegt ja auf der Hand: Ohne Software kann kein Rechner Berechnungen für seine Nutzer anstellen.

Sofern Sie also im Bereich der Softwareentwicklung tätig sind, nehmen Sie eine wichtige Position in der IT und für die Nutzer dieser Software (Ihre Nutzer und Kunden) ein. Mit DevOps-Techniken und geeigneten CI/ CD/ CD-Pipelines haben Sie zeitgemäße Instrumente zur Hand, damit das so bleibt und damit Sie Ihre Marktposition festigen oder verbessern können. Zugleich gehen Sie einen großen Schritt in Richtung Automatisierung, die der Großteil der Führungskräfte in der IT-Branche als wichtigste Komponente seines (zukünftigen) Erfolgs betrachtet.

Bild von Elchinator auf Pixabay