ArtikelEntwicklung

Gegen die „Release-Angst“ – Wie Release Orchestration die Software-Entwicklung optimiert

Autor/Redakteur: Tim Johnson, Director, Product Marketing bei CloudBees/gg

Automatisierung ist wohl einer der wichtigsten Trends in der Softwareentwicklung. Die schnellen Erfolge, die Unternehmen durch die Automatisierung von Aufgaben wie Infrastrukturbereitstellung, Softwaretests und Builds erzielen, können durchaus beeindruckend sein. Allerdings geht damit die Gefahr einher, dass die Organisationen dank der kurzfristigen Verbesserungen in der Software-Entwicklung vergessen, dass die unterschiedlichen Stränge der Softwareentwicklung eine übergeordnete Orchestrierung benötigen.

Bild: CloudBees

Diese Release Orchestration bietet dem Management einen besseren Überblick über Tools, Pipelines, Funktionen, Releases und Abhängigkeiten. Darüber hinaus vereinfacht sie das Zusammenspiel der unterschiedlichen Teams über die oben genannten Bereiche hinweg – unabhängig von der Art der Anwendung oder Umgebung. Denn Release-Orchestrierung verbindet Automatisierungsinseln durch Sequenzierung und ermöglicht es Teams, von der Transparenz in anderen Teilen des Unternehmens zu profitieren und konforme Release-Prozesse durchzusetzen. Sie bietet eine End-to-End-Sicht, die einen übergreifenden, wertorientierten Ansatz für DevOps fördert, statt nur auf einzelne Pipelines zu achten.

Erleichterung für das Release-Team

Während des gesamten Release-Prozesses sind mehrere Teams beteiligt. So sind beispielsweise Ihre DevOps-Leiter, Site Reliability Engineers (SREs) und Plattform-Engineering-Teams in der Regel für die Erstellung der Release-Pipeline-Vorlagen verantwortlich, während die Engineering-Manager üblicherweise an der Planung der tatsächlichen Software-Releases und der Termine beteiligt sind. Sie alle müssen in der Lage sein, der Abteilungs- oder Unternehmensleitung ein aktuelles Bild des Software-Release-Status zu vermitteln. Komplexität und eine eingeschränkte Sicht auf einzelne DevOps-Stufen und -Umgebungen schränken aber genau diese Option ein.

Auch ein zweiter Aspekt ist hier von großer Bedeutung: Während die Entwickler ihre eigenen hochwertigen Werkzeuge auswählen können, finden die Tools für das Release-Management nicht die Aufmerksamkeit, die vonnöten wäre. Dies führt dazu, dass die für die Verwaltung von Releases Verantwortlichen mit behelfsmäßiger Software zu kämpfen haben, die für diese Aufgabe nicht oder nur mit Einschränkungen geeignet ist. Im schlimmsten Falle – und den gibt es doch häufiger als man allgemein annimmt – müssen sie komplexe Zeitpläne in Tabellenkalkulationen oder selbst entwickelten Systemen verfolgen und mit den Beteiligten per E-Mail kommunizieren. Das ist nicht unbedingt produktiv.

Es entsteht somit eine unzusammenhängende Sicht auf einen komplexen Entwicklungs- und Bereitstellungsprozess. Dies gestaltet es schwierig, vorausschauend zu planen und auf potenzielle Hindernisse und Herausforderungen zu reagieren. Eine isolierte Sicht auf den Softwareentwicklungs- und -produktionsprozess lässt das Management in einem reaktiven Zustand verharren, in dem es sich ständig Gedanken über mögliche Probleme wie Fehler in letzter Minute oder Produktionsprobleme macht. In der Fachwelt gibt es dafür sogar einen Begriff: „Release-Angst“.

Ein effektives Tool für die Release-Orchestrierung muss diese Anforderungen ausbalancieren, indem es die Erfahrung der Entwickler unterstützt und gleichzeitig intuitive Tools einsetzt, um den Release-Prozess zu unterstützen und die Release-Angst zu beseitigen. Letztendlich muss es die Geschäftsergebnisse der effektiven Bereitstellung anerkennen und verbessern.

Das fehlende Glied in ausgereiften DevOps-Organisationen

Viele Unternehmen setzen Release-Orchestrierung mit Automatisierung gleich. In der Praxis handelt es sich um aber zwei getrennte, sich ergänzende Aktivitäten.

Automatisierung ist nur ein Teil eines umfassenderen Prozesses. Zu viele Teams automatisieren Aufgaben, ohne sich Gedanken über die Rolle zu machen, die sie in umfassenderen Prozessen spielen. Viele Unternehmen versäumen es, die Auswirkungen der Automatisierung über die grundlegenden Geschwindigkeits- und Genauigkeitsmetriken hinaus zu messen, die in jedem ausgereiften DevOps-Prozess nur ein Grundpfeiler sind.

Orchestrierung ordnet diese Aufgaben in End-to-End-Prozessketten an, in denen jede automatisierte Aufgabe mit der nächsten kommuniziert. Sie bietet eine koordinierende Ebene, die verschiedene Tools, Pipelines und Prozesse in einer einzigen Ansicht verbindet. So entsteht eine ganzheitliche Sicht auf den Softwareentwicklungs- und -bereitstellungsprozess über mehrere Plattformen hinweg, während gleichzeitig die Kommunikation mit den Beteiligten verbessert wird.

Die Orchestrierung sammelt außerdem Daten aus all diesen Tools und Aufgaben an einem einzigen Ort zur Analyse. Auf diese Weise entsteht eine End-to-End-Ansicht des gesamten Pipeline-Portfolios, die es den Teammitgliedern ermöglicht, über einzelne Pipelines hinauszublicken und Lücken in ihrem Wissen zu schließen. Dank der verbesserten Sichtbarkeit können sie ineffektive Prozesse korrigieren und anderen Stakeholdern genaue, zeitnahe Updates zur Verfügung stellen.