Was ist kontinuierliche Bereitstellung?

Kontinuierliche Bereitstellung ist ein Ansatz für die Softwareentwicklung, bei dem komplette Softwareabschnitte in kurzen, gesteuerten Zyklen in einem bereitstellungsfähigen Format bereitgestellt werden.

Früher musste eine Software, bevor sie für den Endbenutzer freigegeben werden konnte, langwierige Zyklen der Entwicklung, Prüfung und Überarbeitung durchlaufen. Diese Wasserfallmethode, bei der ganze Produkte im Voraus entwickelt, getestet und dann bereitgestellt werden, war extrem zeitaufwändig, verursachte schleppende Bereitstellungszyklen und beeinträchtigte die Experience der Benutzer.

Die kontinuierliche Bereitstellung ist eine Kernkomponente von DevOps und gehört in den Gesamtkontext von CI/CD. Entstanden ist die kontinuierliche Bereitstellung im Rahmen der Revolution der agilen Software. Anstatt komplette Pakete auf einmal zu erstellen, werden bei der kontinuierlichen Bereitstellung alle Aspekte der Erstellung von Code, der in die Produktion gehen könnte, berücksichtigt, während fortgeschrittene Automatisierungslösungen für sich wiederholende Aufgaben wie Tests eingesetzt werden. Unter bestimmten Umständen kann der Code direkt in die Produktion gehen – dies wird auch als kontinuierliche Bereitstellung bezeichnet.

Für Unternehmen und Softwareanbieter ergeben sich daraus eine Reihe wichtiger Vorteile:

Geringeres Bereitstellungsrisiko

Wenn Entwickler umfangreiche Bereitstellungen veröffentlichen, kann eine Menge schief gehen. Die kontinuierliche Bereitstellung verringert das Risiko der Bereitstellung, indem sie den Schwerpunkt auf kleinere Changes legt, die leichter zu überprüfen und zu beheben sind und weniger Zeit zur Korrektur benötigen, falls sie nicht wie erwartet funktionieren.

Präzisere Nachverfolgung der Fortschritte

Die kontinuierliche Bereitstellung ermöglicht es den Verantwortlichen von Anwendungen und Projekten, den Fortschritt zu verfolgen und zu entscheiden, wann und wie die Bereitstellung in Produktions- oder Testumgebungen stattfinden soll, anstatt lediglich darauf zu warten, dass die Entwickler entscheiden, wann die Arbeit abgeschlossen ist. In einigen Fällen kann es sinnvoll sein, die während des gesamten Lebenszyklus der kontinuierlichen Bereitstellung gesammelten Informationen im Rahmen einer Lösung für das Wertstrommanagement zu nutzen, um die relativen Fähigkeiten der Teams zu verstehen und Engpässe zu erkennen und zu beseitigen.

Schnellere Veröffentlichungen

Wenn die Bereitstellung von Software in vorher festgelegten Entwicklungsphasen erfolgt, können einzelne Phasen viel Zeit in Anspruch nehmen. Die kontinuierliche Bereitstellung zwingt Teams dazu, Tests und Fehlerbehebung in andere tägliche Prozesse zu integrieren und sich auf die Automatisierung bei der Erstellung, Bereitstellung usw. zu verlassen, um die Last zu verteilen. So lässt sich die Anzahl der Entwicklungsphasen verringern, es gibt weniger redundante Arbeit und die Durchlaufzeiten sind kürzer. Typisch für die kontinuierliche Bereitstellung ist, dass die Software jederzeit freigegeben werden kann – eine deutliche Verbesserung gegenüber den langen Bereitstellungszeiten der herkömmlichen Softwareentwicklung.

Verbessertes Feedback

Entwickler, die viel Zeit in die Entwicklung einer Anwendung investieren, um dann bei der Veröffentlichung festzustellen, dass sie ineffektiv ist oder nicht gut ankommt, stehen wieder am Anfang und können ihren Aufwand nur schwer rechtfertigen. Durch kürzere, häufigere Veröffentlichungen kommen Probleme beim Testen und andere Schwierigkeiten schneller ans Licht und die Benutzer der Anwendung können frühzeitig und häufig Feedback geben, sodass die Entwickler bei Bedarf entsprechende Korrekturen vornehmen können.

Bessere Produkte

Mit zuverlässigem Feedback während des gesamten Lebenszyklus können Entwickler ihre Produkte verbessern und straffen, indem sie Funktionen und Ideen testen und auf alles verzichten, was unnötig oder ineffektiv ist oder sich negativ auf die Experience der Benutzer auswirkt.

Geringere Kosten

Die kontinuierliche Bereitstellung setzt auf Automatisierung, um viele der Fixkosten zu eliminieren, die die Softwareentwicklung traditionell belastet haben. Daraus ergeben sich geringere Investitionskosten im Vorfeld und während des gesamten Entwicklungszyklus und eine höhere Rendite bei den verbleibenden Kosten.

Höhere Mitarbeiterzufriedenheit

Entwicklungsmarathons und bevorstehende Projektabgabetermine zermürben die Entwicklungsteams oft. Umgekehrt lassen sich kleinere Korrekturen und Veröffentlichungen leichter und in Verbindung mit anderen Aufgaben verwalten. Die kontinuierliche Bereitstellung trägt nicht nur zu einem weniger stressigen Arbeitsumfeld bei und beugt Burnout vor, sondern ermöglicht es den Entwicklern auch, direkter mit den Benutzern zu interagieren und den Nutzen ihrer Arbeit für die Kunden besser nachvollziehen zu können.

Oberflächlich betrachtet, sind sich kontinuierliche Bereitstellung und kontinuierliches Deployment sehr ähnlich. Aber auch wenn beide zur agilen Softwareentwicklung gehören, gibt es feine Unterschiede zwischen den zwei Spielarten, die zu berücksichtigen sind.

Kontinuierliche Bereitstellung erfordert manuelle Entscheidungen

Wie vorstehend beschrieben, automatisiert die kontinuierliche Bereitstellung viele der Prozesse, die mit der Softwareentwicklung verbunden sind. Teams können so inkrementelle, kontinuierliche Changes an Produkten vornehmen. Was bei der kontinuierlichen Bereitstellung jedoch nicht automatisiert wird, ist die letzte Phase: die Genehmigung der Bereitstellung für die Produktion. Änderungen, die vorgenommen und in Testumgebungen übertragen wurden, werden in der Regel manuell überprüft und genehmigt, bevor sie in die Bereitstellung übergehen.

Kontinuierliches Deployment automatisiert Produktionsaktualisierungen

Das kontinuierliche Deployment geht noch einen Schritt weiter, indem Updates entweder nach einem vordefinierten Zeitplan automatisch bereitgestellt werden oder sobald der Code im Rahmen des Prozesses der kontinuierlichen Bereitstellung übergeben wird. Wenn für den Code kein Bereitstellungsfenster erforderlich ist, erhalten die Entwickler durch die zuverlässige Automatisierung der Change Governance (sofern verwendet) im Wesentlichen direkten Zugriff auf die Produktion und können sicherstellen, dass die Aktualisierungen regelmäßig bereitgestellt werden, ohne dass sie die Bereitstellung selbst durchführen müssen. Dadurch erhalten Unternehmen mehr Kapazität, um mehr Bereitstellungen zu einem bestimmten Zeitpunkt zu veröffentlichen, es wird sogar ein großer Teil des Aufwands für größere Releases vermieden. Für die meisten Unternehmen kommt kontinuierliches Deployment aufgrund von strengen Governance-Anforderungen nicht in Frage, etwa durch Branchenvorschriften. Die Implementierung von kontinuierlichem Deployment hängt in solchen Unternehmen weitgehend von der Fähigkeit ab, die bisher manuell durchgeführten Genehmigungen zu automatisieren, z. B. im Rahmen eines formellen Change-Management-Prozesses.

Das Gesamtkonzept der kontinuierlichen Bereitstellung ist leicht zu erfassen: Zeitintensive Entwicklungsprozesse werden in kleine, automatisierte Aufgaben und Veröffentlichungen aufgeteilt. Das Konzept zu verstehen und zu wissen, wie man die Methodik umsetzt, sind jedoch zwei paar Schuhe. Die folgenden Punkte sind wichtige Voraussetzungen für die Umstellung auf kontinuierliche Softwarebereitstellung:

Umstellung der Denkweise auf DevOps-Methoden

Der bereits erwähnte Wasserfall-Ansatz für die Softwareentwicklung ist in den Köpfen und Prozessen der Entwicklungsteams möglicherweise noch tief verwurzelt. Daher erfordert der Kulturwandel hin zu DevOps und agiler Entwicklung eine umfassende Planung und gründliche Schulung. Wenn sich die Entwicklungsteams nicht entsprechend einbringen, wird die kontinuierliche Bereitstellung wahrscheinlich nicht erfolgreich sein.

Schwerpunkt auf Zusammenarbeit zwischen DevOps und Führung

Die Umstellung der Denkweise hin zu DevOps muss über die Grenzen der Softwareentwicklung hinaus reichen. Schnelle Feedbackschleifen und eine effektive Entscheidungsfindung erfordern eine effiziente Zusammenarbeit und Koordination mit den Führungskräften, damit alle die richtigen Prozesse kennen und beherzigen.

Gewährleistung effektiver Sicherheit und Compliance

Schnelle Durchlaufzeiten und problemlose Software-Releases nützen Unternehmen nicht viel, wenn die Endprodukte den Sicherheits- oder Compliance-Anforderungen nicht standhalten können. Glücklicherweise lassen sich viele der Automatisierungs-Tools, die im Rahmen der kontinuierlichen Bereitstellung verwendet werden, auch dazu einsetzen, das mit der Bereitstellung verbundene Sicherheitsrisiko zu minimieren. Automatisierte Code-Scanning-Tools mit Richtlinien, die von spezialisierten Sicherheitsteams festgelegt werden, sind Teil der Pipeline. Wenn automatisiertes Change-Management implementiert ist, werden die erfolgreichen Durchläufe dieser Scans zu einem Teil der Informationen, die zur automatischen Erstellung und Genehmigung von Change-Anforderungen verwendet werden.

Die Etablierung eines optimierten End-to-End- Prozesses unter Verwendung der kontinuierlichen Bereitstellung erfordert die Einhaltung mehrerer Grundprinzipien:

Aufbau von zuverlässigen Prozessen

Straffe Prozesse sind das Herzstück der kontinuierlichen Bereitstellung. Damit diese Prozesse die bestmöglichen Bereitstellungszyklen ermöglichen, müssen sie in allen Umgebungen konsistent und wiederholbar sein. Viele Unternehmen richten eine Stelle ein, die dafür verantwortlich ist, die Plattform und die Prozesse zu definieren, mit denen die Entwickler an der kontinuierlichen Bereitstellung teilnehmen.

Automatisierung der Infrastruktur

Kontinuierliche Bereitstellung ist ohne Automatisierung nicht möglich – zumindest nicht effektiv. Manuelle Prozesse sind zeitaufwändig und lassen sich nur schwer reproduzieren. Daher sollten Unternehmen bestrebt sein, so viele Teile der Infrastruktur wie möglich zu automatisieren. Beim Testen von Code und Codequalität ist dies inzwischen gang und gäbe. Mit dem Aufkommen von DevSecOps wird die gleiche Automatisierung auch auf die Beseitigung von Sicherheitsschwachstellen ausgedehnt. Diese Form der Automatisierung greift nun auch auf Bereiche wie die Verwaltung von Konfigurationsdaten über, in denen Richtlinien die Angemessenheit von Konfigurationsänderungen überprüfen können (z. B. URLs, Datenbankstrings und alle anderen Arten von Aktualisierungen der Anwendungs-, Infrastruktur- und Umgebungskonfiguration). In regulierten Umgebungen kann nun auch der letzte Governance-Schritt des Change-Managements automatisiert werden, wenn Informationen aus den in der Bereitstellungspipeline verwendeten Tools verwendet werden.

Durchgehende Versionierung

Ein Unternehmen, das auf kontinuierliche Bereitstellung setzt, möchte nicht noch einmal von vorne anfangen müssen, wenn sich herausstellt, dass etwas nicht korrekt erstellt wurde. Mithilfe der Versionskontrolle können Entwickler alle Changes am Code verfolgen und verwalten, sodass sie in dem unvermeidlichen Fall, dass bei den letzten Aktualisierungen ein Problem auftritt, einfach eine frühere Version wiederherstellen können. Dies schafft eine solidere Grundlage für kontinuierliche und häufige Verbesserungen.

Priorisierung anspruchsvoller Aufgaben

Die Optimierung von Prozessen und das Abarbeiten von Aufgaben sollten mit der Zeit einfacher werden, denn durch effektives DevOps werden die schwierigsten und zeitaufwändigsten Aufgaben priorisiert, die zuerst erledigt werden müssen. Setzen Sie den Entwicklungszyklus an die erste Stelle und kümmern Sie sich dann um die Optimierung aller anderen Aufgaben. Die agile Planung hat sich in diesem Bereich mit Fähigkeiten wie Roadmap-, Szenario- und Big-Room-Planung und Unified Backlogs erheblich weiterentwickelt.

Schnelle Problemlösung

Ähnlich wie bei der Priorisierung der anspruchsvollsten Aufgaben müssen agile Unternehmen auch bei der Behebung von Fehlern und anderen Problemen vorgehen können, sobald diese auftreten. Dies gewährleistet nicht nur, dass Produkte kontinuierlich weiterentwickelt und verbessert werden, sondern hilft auch, die Kosten zu senken, indem Probleme gelöst werden, während sie gerade erst entstehen. Künstliche Intelligenz wird in diesem Bereich in hohem Maße genutzt. KI-Lösungen für den Betrieb werden immer vorausschauender und helfen dabei, Probleme zu erkennen und zu beheben, bevor die Benutzer davon betroffen sind.

Geteilte Verantwortung

Kontinuierliche Bereitstellung verlangt, dass alle Beteiligten an einem Strang ziehen und auf ein gemeinsames Ziel hinarbeiten. Mit anderen Worten: Die Verantwortung des Einzelnen für das Produkt endet nicht, wenn seine Aufgaben erledigt sind. Dieser Grundsatz erfordert einen Kulturwandel in Bezug auf Verantwortlichkeit. Eine gewisse Zentralisierung von Informationen kann in diesem Zusammenhang die Zusammenarbeit erleichtern. Datenmodelle, die den gesamten Prozess von der Idee bis zum Betrieb in der Produktion verknüpfen, sorgen dafür, dass alle an der Lieferung Beteiligten nachvollziehen können, was passiert ist und warum.

Genaue Definition des Abschlusses

In der traditionellen Entwicklung waren die Aufgaben der einzelnen Personen, Teams oder Abteilungen viel stärker voneinander abgegrenzt, sodass die Definition, wann eine Version fertig ist, oft sehr unterschiedlich ausgefallen ist. Mit der gemeinsamen Verantwortung kommen auch gemeinsame Ziele und alle Beteiligten müssen sich darüber im Klaren sein, dass eine Funktion erst dann fertig ist, wenn sie erfolgreich bereitgestellt wurde.

Ständige Verbesserung

Der iterative Ansatz kann die Zeitachse für die Entwicklung drastisch verkürzen. Seine wahre Stärke liegt jedoch in seiner Fähigkeit, Unternehmen bei der Optimierung ihrer Produkte zu unterstützen. Durch die Automatisierung effektiver Prozesse, die Streichung oder Überarbeitung unnötiger Aufgaben und die fortlaufende Behebung von Fehlern und anderen Problemen erzeugen Unternehmen effiziente Verfahren, die jederzeit wiederholbar sind. Automatisierung ist der Schlüssel und effektive, leistungsstarke Softwareversionen sind der Lohn dafür.

Die Lösungen für IT-Management von ServiceNow unterstützen Initiativen zur kontinuierlichen Bereitstellung in jedem Unternehmen auf wirksame Weise.

Profitieren Sie von ServiceNow DevOps, nutzen Sie die Leistungsfähigkeit und Flexibilität der preisgekrönten Now Platform zur Beschleunigung der Softwareentwicklung und -bereitstellung und profitieren Sie von einer verbesserten Konnektivität und einem besseren Einblick in Ihre vorhandenen Toolchains. Nutzen Sie integrierte Automatisierungsoptionen und sorgen Sie dafür, dass das Erstellen, Verfolgen und Genehmigen von Changes nicht zu Engpässen in Ihren Prozessen führt. Ein detaillierter Prüfpfad von Anfang bis Ende minimiert das Risiko und sorgt dafür, dass wichtige Daten an einem einzigen, zentralen Ort verfügbar sind.

Gehen Sie noch einen Schritt weiter und wenden Sie agile Prinzipien auf komplexe Softwareinitiativen an: mit dem ServiceNow Scaled Agile Framework (SAFe). Diese Anwendung umfasst visuelle Dashboards, hochentwickelte Portfolioplanung, farbkodierte Aufgabenpriorisierung, detaillierte Planungs- und Monitoring-Optionen und einen leicht zugänglichen Rückstand (Backlog) mit zentralisierten SAFe-Stories, SAFe-Features, Incident-Problemen und mehr.

ServiceNow ist Ihr Partner für eine effektive kontinuierliche Bereitstellung. Machen Sie sich selbst ein Bild davon und revolutionieren Sie die Art und Weise, wie Ihr Unternehmen Anwendungen erstellt und bereitstellt.

Fähigkeiten, die mit Ihrem Geschäft wachsen

Weiten Sie den DevOps-Erfolg auf das gesamte Unternehmen aus. Verringern Sie die Risiken, die ein schnelles Tempo mit sich bringt, und minimieren Sie die Reibung zwischen IT-Betrieb und Entwicklung.