Was ist DevOps?
Erfahren Sie, wie DevOps Menschen, Prozesse und Technologien verbindet, um Kunden in kürzerer Zeit bessere Produkte zu liefern.
Einfach erklärt: DevOps
Der Begriff setzt sich aus „Dev“ (Development) und „Ops“ (Operations) zusammen und vereint Menschen, Prozesse und Technologien, um Kunden einen kontinuierlichen Mehrwert zu bieten.
Was bedeutet DevOps für Teams? Mit DevOps lassen sich zuvor getrennten Rollen wie Entwicklung, IT-Betrieb, Qualitätstechnik und Sicherheit koordinieren, um gemeinsam bessere und zuverlässigere Produkte zu realisieren. Durch die Einführung der DevOps-Kultur in Verbindung mit DevOps-Methoden und -Tools können Teams besser auf die Anforderungen ihrer Kunden reagieren, das Vertrauen in eigene Anwendungen stärken und Geschäftsziele sehr schnell erreichen.
Die Vorteile von DevOps
Teams, die die DevOps-Kultur, -Methoden und -Tools einführen, sind besonders leistungsstark und entwickeln in kürzerer Zeit bessere Produkte, die zu zufriedeneren Kunden führen. Diese verbesserte Zusammenarbeit und Produktivität ist auch ein wesentlicher Faktor für die Erreichung der folgenden Geschäftsziele:
Kürzere Time-to-Market
Anpassung an die Markt- und Wettbewerbssituation
Aufrechterhaltung der Stabilität und Zuverlässigkeit von Systemen
Verbesserung der MTTR (Mean Time To Recover, mittlere Reparaturzeit)
DevOps und Anwendungslebenszyklus
DevOps wirkt sich durch Planungs-, Entwicklungs-, Bereitstellungs- und Betriebsphasen auf den Anwendungslebenszyklus aus. Jede Phase baut auf den anderen auf, und keine der Phasen ist rollenspezifisch. In einer idealen DevOps-Kultur ist jede Rolle in bestimmtem Ausmaß an jeder Phase beteiligt.
Planen
In der Planungsphase konzipieren, definieren und beschreiben DevOps-Teams die Features und Merkmale der Anwendungen und Systeme, an denen sie arbeiten. Sie verfolgen den Fortschritt mit niedriger und hoher Detailtiefe – von Aufgaben für ein einzelnes Produkt bis hin zu Aufgaben für ein breites Produktportfolio. DevOps-Teams setzen auf eine agile und transparente Planung, indem sie Backlogs erstellen, Fehler nachverfolgen, die agile Softwareentwicklung mit Scrum verwalten, Kanban-Boards verwenden und den Fortschritt in Form von Dashboards visualisieren.
Entwickeln
Die Entwicklungsphase umfasst alle Aspekte der Programmierung – das Schreiben, Testen, Prüfen und Integrieren des Codes durch Teammitglieder. Hinzu kommt das Einbinden von Code in Buildartefakte, die in unterschiedlichen Umgebungen bereitgestellt werden können. DevOps-Teams wollen Innovationen schnell umsetzen – ohne Kompromisse bei Qualität, Stabilität und Produktivität. Zu diesem Zweck verwenden sie hochproduktive Tools, automatisieren manuelle Routineschritte und durchlaufen in kleinen Schritten automatisierte Tests und Continuous Integration.
Bereitstellen
Darunter versteht man den Prozess der konsistenten und zuverlässigen Bereitstellung von Anwendungen in Produktionsumgebungen. Die Bereitstellungsphase umfasst auch das Implementieren und Konfigurieren der vollständig gesteuerten, zugrunde liegenden Infrastruktur, auf der diese Umgebungen basieren.
In der Bereitstellungsphase definieren Teams einen Releaseverwaltungsprozess mit eindeutigen manuellen Genehmigungsschritten. Sie legen außerdem automatisierte Gates fest, die Anwendungen zwischen den Phasen verschieben, bis sie den Kunden zur Verfügung gestellt werden. Die Automatisierung sorgt dafür, dass diese Prozesse skalierbar, wiederholbar und kontrollierbar sind. So können DevOps-Teams ihre Lösungen meist einfach, verlässlich und sicher bereitstellen.
Ausführen
Die Ausführungsphase umfasst die Verwaltung, Überwachung und Problembehandlung von Anwendungen in Produktionsumgebungen. Bei der Einführung von DevOps-Methoden müssen die Teams zuverlässigen Systembetrieb und Hochverfügbarkeit gewährleisten, Ausfallzeiten möglichst vermeiden sowie gleichzeitig die Sicherheit und Governance stärken. DevOps-Teams arbeiten an der Erkennung von Problemen, bevor diese sich auf das Kundenerlebnis auswirken, und schaffen im Ernstfall zügig Abhilfe. Um wachsam zu bleiben, sind umfangreiche Telemetriedaten, umsetzbare Warnungen und vollständige Sichtbarkeit in Anwendungen und zugrunde liegende Systeme erforderlich.
DevOps-Kultur
Auch wenn DevOps-Methoden Prozesse technologiebasiert automatisieren und optimieren, beginnt alles mit der Unternehmenskultur und den daran teilhabenden Menschen. Für die Einführung einer DevOps-Kultur sind weitreichende Änderungen an der Arbeitsweise und Zusammenarbeit nötig. Doch wenn sich Unternehmen zu einer DevOps-Kultur verpflichten, können sie die passende Umgebung für leistungsfähige, erfolgreiche Teams bereitstellen.
Zusammenarbeit, Sichtbarkeit, Abstimmung
Eine gute DevOps-Kultur zeichnet sich insbesondere durch die Zusammenarbeit zwischen Teams aus. Diese beginnt bei der Sichtbarkeit. Unterschiedliche Teams, z. B. für die Entwicklung und den IT-Betrieb, müssen sich über ihre Prozesse, Prioritäten und Zuständigkeiten zum Thema DevOps austauschen. Diese Teams müssen zudem ihre Zusammenarbeit planen sowie ihre geschäftlichen Ziele und Erfolgskriterien aufeinander abstimmen.
Geänderte Zuständigkeiten und Verantwortlichkeiten
Bei der gegenseitigen Abstimmung übernehmen Teams Verantwortung und werden in weitere Lebenszyklusphasen einbezogen – zusätzlich zu denen, die ihre Rolle ausmachen. Entwickler sind beispielsweise nicht nur für die Innovation und Qualitätssicherung in der Entwicklungsphase verantwortlich, sondern auch für die Leistung und Stabilität, die Änderungen in der Ausführungsphase mit sich bringen. Gleichzeitig müssen IT-Fachkräfte Governance, Sicherheit und Compliance in der Planungs- und Entwicklungsphase sicherstellen.
Kürzere Releasezyklen
DevOps-Teams bleiben agil, da sie Software in kurzen Zyklen veröffentlichen. Kürzere Releasezyklen erleichtern auch die Planung und das Risikomanagement, da es sich um einen inkrementellen Prozess handelt, der auch die Auswirkungen auf die Systemstabilität verringert. Zudem können Unternehmen auf die sich verändernden Kundenbedürfnisse und auf den Wettbewerbsdruck reagieren.
Kontinuierliches Lernen
Leistungsstarke DevOps-Teams denken wachstumsorientiert. Sie arbeiten nach dem Fail-Fast-Prinzip und integrieren Erfahrungen in ihre Prozesse. Dies führt zu einer ständigen Verbesserung, höherer Kundenzufriedenheit, hohem Innovationstempo und schneller Anpassung an den Markt. DevOps ist eine kontinuierliche Journey, sodass es immer Raum für Wachstum gibt.
DevOps-Methoden
Neben der Schaffung einer DevOps-Kultur setzen Teams DevOps in die Praxis um, indem sie bestimmte Verfahren während des Anwendungslebenszyklus implementieren. Dazu zählen u. a. das Beschleunigen, Automatisieren und Optimieren einzelner Phasen. Wieder andere umfassen mehrere Phasen, damit Teams nahtlose Prozesse erstellen und so die Produktivität steigern können.
Continuous Integration und Continuous Delivery (CI/CD)
Unter Konfigurationsverwaltung versteht man die Zustandsverwaltung von Ressourcen in einem System, das aus Servern, virtuellen Computern und Datenbanken besteht. Mithilfe von Tools für die Konfigurationsverwaltung können Teams Änderungen kontrolliert und systematisch umsetzen, um Risiken infolge einer veränderten Systemkonfiguration zu verringern. Teams verwenden diese Tools, um den Systemzustand nachzuverfolgen und Konfigurationsabweichungen zu vermeiden. Dabei wird untersucht, inwieweit die Konfiguration einer Systemressource im Laufe der Zeit vom gewünschten Zustand abweicht.
In Verbindung mit „Infrastructure-as-Code“ lassen sich Systemdefinition und -konfiguration leicht in Vorlagen umsetzen und automatisieren, sodass Teams komplexe Umgebungen skalierbar betreiben können.
Versionskontrolle
Unter Versionskontrolle versteht man das Verwalten von Code in Form von Versionen. Dabei werden Revisionen und der Änderungsverlauf nachverfolgt, damit der Code ganz leicht überprüft und wiederhergestellt werden kann. Diese Methode wird in der Regel mit einem Versionskontrollsystem wie Git implementiert, in dem mehrere Entwickler zusammen Code schreiben können. Diese Systeme bieten einen transparenten Prozess zum Zusammenführen von Codeänderungen, die in denselben Dateien vorgenommen werden, für die Konfliktbehandlung und für das Rollback von Änderungen in einen früheren Zustand.
Die Versionskontrolle ist eine grundlegende DevOps-Methode, mit der Entwicklungsteams leicht zusammenarbeiten, Programmieraufgaben unter den Teammitgliedern aufteilen und den gesamten Code speichern können, um ihn bei Bedarf bequem wiederherstellen zu können.
Die Versionskontrolle ist auch für andere Methoden wie Continuous Integration und Infrastructure-as-Code erforderlich.
Agile Softwareentwicklung
Die agile Softwareentwicklung ist ein Ansatz, bei dem die Zusammenarbeit im Team, das Feedback von Kunden und Benutzern sowie eine hohe Anpassungsfähigkeit an Veränderungen durch kurze Releasezyklen im Vordergrund stehen. Teams, die nach der Agile-Methode arbeiten, bieten den Kunden kontinuierliche Änderungen und Verbesserungen, erfassen Kundenfeedback und passen sich den Bedürfnissen und Wünschen der Kunden an. Die agile Softwareentwicklung unterscheidet sich grundlegend von älteren Frameworks wie dem Wasserfallmodell, das lange Releasezyklen umfasst, die durch aufeinander folgende Phasen definiert sind. Kanban und Scrum sind zwei gängige Frameworks für die Agile-Methode.
Infrastructure-as-a-Code (IaC)
Infrastructure-as-Code definiert die Systemressourcen und Topologien in deskriptiver Weise. Dadurch können Teams diese Ressourcen so verwalten, wie sie es mit Code tun würden. Diese Definitionen können gespeichert und in Versionskontrollsystemen eingeordnet werden, wo sie überprüft und rückgängig gemacht werden können – auch hier ähnlich wie Code.
Durch das Anwenden von Infrastructure-as-Code können Teams Systemressourcen zuverlässig, wiederholbar und kontrolliert bereitstellen. Infrastructure-as-Code ermöglicht zudem die automatisierte Bereitstellung und reduziert das Risiko menschlicher Fehler. Davon profitieren insbesondere komplexe, umfangreiche Umgebungen. Mit dieser wiederholbaren, zuverlässigen Lösung für die Umgebungsbereitstellung können Teams Entwicklungs- und Testumgebungen einrichten, die mit der Produktionsumgebung identisch sind. Das Duplizieren von Umgebungen in unterschiedliche Rechenzentren und Cloudplattformen wird dadurch besonders einfach und effizient.
Konfigurationsverwaltung
Unter Konfigurationsverwaltung versteht man die Zustandsverwaltung von Ressourcen in einem System, das aus Servern, virtuellen Computern und Datenbanken besteht. Mithilfe von Tools für die Konfigurationsverwaltung können Teams Änderungen kontrolliert und systematisch umsetzen, um Risiken infolge einer veränderten Systemkonfiguration zu verringern. Teams verwenden diese Tools, um den Systemzustand nachzuverfolgen und Konfigurationsabweichungen zu vermeiden. Dabei wird untersucht, inwieweit die Konfiguration einer Systemressource im Laufe der Zeit vom gewünschten Zustand abweicht.
In Verbindung mit „Infrastructure-as-Code“ lassen sich Systemdefinition und -konfiguration leicht in Vorlagen umsetzen und automatisieren, sodass Teams komplexe Umgebungen skalierbar betreiben können.
Continuous Monitoring
Unter Continuous Monitoring versteht man vollständige Echtzeiteinblicke in die Leistung und Integrität des gesamten Anwendungsstapels – von der zugrunde liegenden Infrastruktur bis hin zu den übergeordneten Softwarekomponenten. Diese Sichtbarkeit resultiert aus der Erfassung von Telemetriedaten und Metadaten und aus der Einrichtung von Warnungen für vordefinierte Bedingungen, die die Aufmerksamkeit einer Fachkraft erfordern. Die Telemetrie umfasst Ereignisdaten und Protokolle, die aus verschiedenen Systembereichen erfasst werden. Die Speicherung erfolgt dort, wo die Daten analysiert und abgefragt werden können.
Leistungsstarke DevOps-Teams sorgen dafür, dass Warnungen praxisnah und aussagekräftig sind. Zudem erfassen sie umfangreiche Telemetriedaten, um Erkenntnisse aus großen Datenmengen zu gewinnen. Durch diese Erkenntnisse können Teams Probleme in Echtzeit beheben und testen, wie die Anwendung in künftigen Entwicklungszyklen verbessert werden kann.
DevOps-Tools
Teams nutzen viele verschiedene DevOps-Tools, um die DevOps-Kultur in ihrem Unternehmen zu fördern. Die meisten Teams setzen mehrere Tools ein und entwickeln individuelle Toolketten, die an die jeweilige Phase im Anwendungslebenszyklus angepasst sind. Die Einführung eines bestimmten Tools oder einer bestimmten Technologie ist zwar nicht gleichbedeutend mit der Einführung von DevOps, aber wenn die DevOps-Kultur etabliert und die Prozesse definiert wurden, können Mitarbeitende DevOps-Methoden implementieren und optimieren – vorausgesetzt, sie verfügen über die richtigen Tools. Mit diesen Tools setzen Sie DevOps in der Praxis um:
DevOps und die Cloud
Die Einführung der Cloud hat die Art und Weise, wie Teams Anwendungen entwickeln, bereitstellen und ausführen, grundlegend verändert. Zusammen mit der Einführung von DevOps haben Teams nun die Möglichkeit, ihre Methoden zu optimieren und die Kundenzufriedenheit zu steigern.
Cloudagilität
Durch die Fähigkeit, Cloudumgebungen über mehrere Regionen und mit unbegrenzten Ressourcen schnell bereitzustellen und zu konfigurieren, steigern Teams ihre Agilität bei der App-Bereitstellung. Heutzutage muss niemand mehr physische Server kaufen, konfigurieren und verwalten. Stattdessen erstellen Teams komplexe Cloudumgebungen in wenigen Minuten, die wieder heruntergefahren können, falls sie nicht mehr benötigt werden.
Kubernetes
Da immer mehr Anwendungen auf Containertechnologie basieren, entwickelt sich Kubernetes zum Branchenstandard für das Orchestrieren von Containern in großem Maßstab. Automatisierte Prozesse zur Erstellung und Bereitstellung von Containern über CI/CD-Pipelines und die Überwachung dieser Container in Produktionsumgebungen werden im Zeitalter von Kubernetes immer wichtiger.
Serverloses Computing
Da die Verwaltung der Infrastruktur nun zum größten Teil in der Hand des Cloudanbieters liegt, können sich Teams auf die Apps statt auf die zugrunde liegende Infrastruktur konzentrieren. Dank serverlosem Computing können Apps ausgeführt werden, ohne dass Server konfiguriert oder verwaltet werden müssen. Einige Optionen reduzieren die Komplexität und das Risiko bei der Bereitstellung und Ausführung.
Beginnen Sie Ihre DevOps-Journey
Durch die Vielzahl der verfügbaren Methoden und Lösungen kann DevOps zunächst unübersichtlich erscheinen. Das Wichtigste ist, klein anzufangen und von anderen zu lernen.
Häufig gestellte Fragen
-
DevOps wird unter Mithilfe verschiedener Unternehmensrollen umgesetzt und erfordert die enge Zusammenarbeit zwischen mehreren Rollen. In den meisten Fällen umfassen die DevOps-Rollen die Bereiche Entwicklung, IT, Betrieb, Sicherheit und Support.
-
DevOps ist nicht auf eine einzelne Rolle beschränkt. Sämtliche Mitarbeitende, die an den Lebenszyklusphasen einer Anwendung beteiligt sind, müssen nach der DevOps-Kultur arbeiten. In manchen Unternehmen gibt es jedoch einige Beschäftigte oder Teams, deren Fokus allein auf der Automatisierung, dem Festlegen von Methoden und der Implementierung von CI/CD-Pipelines liegt. Die offizielle Bezeichnung für diese Rollen kann beispielsweise „DevOps-Entwickler“ oder „DevOps-Spezialist“ lauten.
-
Die Einführung von DevOps in einem großen Unternehmen kann eine Herausforderung darstellen. Es erfordert Geduld und Beharrlichkeit, die Kultur eines großen Unternehmens zu ändern und die Prozesse und Tools zu standardisieren. In den meisten großen Unternehmen gibt es Early Adopters der DevOps-Methoden. Wenn sich diese Methoden weiterentwickeln und positive Ergebnisse liefern, folgen andere Teams in der Regel diesem Beispiel und beginnen ihre DevOps-Journey.
-
Das eigentliche Ziel von DevOps besteht darin, den Kunden einen kontinuierlichen Mehrwert zu bieten. Die Ergebnisse der DevOps-Einführung müssen in Relation zu den Geschäftszielen bewertet werden. DevOps-Teams richten sich nach diesen Zielen und erreichen diese durch kurze Releasezyklen. Dank dieser Zyklen können Teams flexibel auf den Markt reagieren und sich durch Kundenfeedback kontinuierlich weiterentwickeln.
-
Sowohl DevOps als auch Agile sind Frameworks für die moderne Softwareentwicklung, die bei der Entwicklung, Einführung oder dem Release von Produkten zum Einsatz kommen. DevOps ist eine Kultur, die die Zusammenarbeit aller Rollen fördert, die an der Entwicklung und Wartung der Software beteiligt sind. Agile ist eine Entwicklungsmethode, die auf nachhaltige Produktivität und zügige Releases ausgerichtet ist, wobei reale Bedingungen und dynamische Anforderungen berücksichtigt werden. DevOps und Agile schließen sich nicht gegenseitig aus und werden häufig kombiniert.
-
Neben Continuous Integration sind Continuous Delivery und Continuous Deployment weitere Methoden, mit denen die Phasen der Softwarebereitstellung automatisiert werden.