DevOps
DevOps vereint Entwicklung und Operations, um die Qualität und Auslieferung zu optimieren.
Was ist DevOps?
Unter DevOps versteht man diverse Praktiken, Tools und eine Kulturphilosophie, die die Prozesse zwischen Softwareentwicklungs- und IT-Teams automatisieren und integrieren. Im Vordergrund stehen dabei Teambefähigung, teamübergreifende Kommunikation und Zusammenarbeit sowie Technologieautomatisierung.
Die DevOps-Bewegung begann um das Jahr 2007, als die Communitys für Softwareentwicklung und IT Operations Bedenken über das traditionelle Softwareentwicklungsmodell äußerten, bei dem die Entwickler, die den Code schrieben, getrennt von Operations-Teams arbeiteten, die den Code bereitstellten und unterstützten. Der Begriff DevOps, eine Kombination aus den Wörtern Development und Operations, spiegelt den Prozess der Integration beider Fachgebiete in einen kontinuierlichen Prozess wider.
Wie funktioniert DevOps?
Ein DevOps-Team besteht aus Entwickler- und IT-Operations-Teams, die während des gesamten Produktlebenszyklus zusammenarbeiten, um die Geschwindigkeit und Qualität des Software-Deployments zu erhöhen. Es ist eine neue Arbeitsweise und ein kultureller Wandel mit tiefgreifenden Auswirkungen auf Teams und die Unternehmen, für die sie arbeiten.
Im Rahmen eines DevOps-Modells sind Entwicklungs- und Operations-Teams nicht mehr voneinander isoliert. Manchmal verschmelzen diese beiden Teams zu einem einzigen Team, in dem die Ingenieure während des gesamten Anwendungslebenszyklus zusammenarbeiten – von der Entwicklung und Tests bis hin zu Deployment und Betrieb – und über eine Reihe multidisziplinärer Fertigkeiten verfügen.
DevOps-Teams verwenden Tools, um Prozesse zu automatisieren und zu beschleunigen, was zu einer höheren Zuverlässigkeit beiträgt. Mithilfe einer DevOps-Toolkette können Teams wichtige DevOps-Grundlagen wie Continuous Integration, Continuous Delivery, Automatisierung und Zusammenarbeit umsetzen.
DevOps-Werte werden manchmal nicht nur auf Entwicklungsteams, sondern auch auf andere Teams angewendet. Wenn Sicherheitsteams einen DevOps-Ansatz verfolgen, ist Sicherheit ein aktiver und integrierter Bestandteil des Entwicklungsprozesses. Dies wird als DevSecOps bezeichnet.
Der DevOps-Lebenszyklus
Da es sich bei DevOps um einen fortlaufenden Prozess handelt, wird anhand einer Endlosschleife gezeigt, wie die Phasen des DevOps-Lebenszyklus zueinander in Beziehung stehen. Auch wenn die Phasen anscheinend schrittweise ablaufen, zeigt die Endlosschleife, dass während des gesamten Lebenszyklus Zusammenarbeit und iterative Verbesserungen unerlässlich sind.
Der DevOps-Lebenszyklus besteht aus acht Phasen, die die Prozesse, Fertigkeiten und Tools repräsentieren, die für Entwicklung (auf der linken Seite der Schleife) und Operations (auf der rechten Seite der Schleife) erforderlich sind. In jeder Phase arbeiten die Teams zusammen und kommunizieren miteinander, um eine konsistente Ausrichtung, Geschwindigkeit und Qualität sicherzustellen.
Entdecken
Die Entwicklung von Software ist ein Mannschaftssport. Zur Vorbereitung auf den nächsten Sprint müssen Teams Workshops durchführen, um Ideen zu finden, zu organisieren und zu priorisieren. Die Ideen müssen mit den strategischen Zielen übereinstimmen und dem Kunden Nutzen bringen. Agile kann DevOps-Teams dabei als Orientierung dienen.
Planen
DevOps-Teams sollten agile Praktiken anwenden, um die Geschwindigkeit und Qualität zu verbessern. Agile ist ein iterativer Ansatz für das Projektmanagement und die Softwareentwicklung. Teams können mit diesem Ansatz Aufgaben in kleinere Einheiten zerlegen, um einen zusätzlichen Mehrwert zu erhalten.
Erstellen
Git ist ein kostenloses Open-Source-System zur Versionskontrolle. Es bietet zudem umfassende Unterstützung für das Branching, Merging und Umschreiben des Repository-Verlaufs. Daraus sind viele innovative, leistungsstarke Workflows und Tools für den Entwicklungs-Build-Prozess entstanden.
Test
Continuous Integration (CI) ermöglicht mehreren Entwicklern zu einem einzigen gemeinsam genutzten Repository beizutragen. Beim Mergen von Codeänderungen werden automatisierte Tests durchgeführt, um vor der Integration die Fehlerfreiheit des neuen Codes zu bestätigen. Das Mergen und Testen von Code gibt Entwicklerteams oftmals zusätzliche Gewissheit bezüglich der Qualität und Vorhersehbarkeit des bereitgestellten Codes.
Bereitstellen
Continuous Deployment (CD) ermöglicht es Teams, regelmäßig und automatisch Funktionen zu veröffentlichen. Teams haben auch die Option des Deployments mit Feature-Flags. Sie können regelmäßig und methodisch neue Codes an Benutzer ausliefern, anstatt dies in einem Rutsch zu tun. Diese Methode verbessert die Geschwindigkeit, Produktivität und Nachhaltigkeit von Softwareentwicklerteams.
Betrieb
Verwalte die End-to-End-Bereitstellung von IT-Services für Kunden. Dazu zählen die Praktiken für Design, Implementierung, Konfiguration, Deployment und Wartung der gesamten IT-Infrastruktur, die die Services eines Unternehmens unterstützt.
Beobachten
Identifiziere und behebe schnell Probleme, die sich auf die Verfügbarkeit, Geschwindigkeit und Funktionalität des Produkts auswirken. Informiere dein Team automatisch über Änderungen, risikoreiche Aktionen oder Ausfälle, um Services weiter am Laufen zu halten.
Fortlaufendes Feedback
DevOps-Teams sollten jeden Release bewerten und Berichte erstellen, um zukünftige Releases zu verbessern. Durch kontinuierliches Feedback können Teams ihre Prozesse optimieren und Kundenrückmeldungen einbeziehen, um den nächsten Release zu verbessern.
DevOps-Tools
DevOps-Tools gehen auf die wichtigsten Phasen des DevOps-Lebenszyklus ein. Sie unterstützen DevOps-Praktiken und helfen dabei, die Zusammenarbeit zu verbessern, Kontextwechsel zu reduzieren, Automatisierungsfunktionen einzuführen und Observability und Überwachung zu nutzen.
DevOps-Toolketten folgen normalerweise zwei Ansätzen: dem einer universellen oder dem einer offenen Toolkette. Eine universelle Toolkette bietet eine Komplettlösung, die normalerweise nicht in andere Tools von Drittanbietern integriert werden kann. Eine offene Toolkette ermöglicht hingegen die Anpassung an verschiedene Tools. Beide Ansätze haben ihre Vor- und Nachteile.
Ein Beispiel für eine offene DevOps-Toolkette ist die Open DevOps-Lösung von Atlassian, die auf Jira basiert und sich in Apps von führenden Anbietern und aus dem Marketplace integrieren lässt.
Welche Vorteile bietet DevOps?
In der Atlassian-Umfrage zu DevOps-Trends 2020 gaben 99 % der Befragten an, dass DevOps einen positiven Einfluss auf ihr Unternehmen habe. Zu den Vorteilen von DevOps gehören schnellere und einfachere Releases, Teameffizienz, erhöhte Sicherheit, qualitativ hochwertigere Produkte und folglich zufriedenere Teams und Kunden.
Geschwindigkeit
Teams, die DevOps-Prinzipien anwenden, produzieren häufigere, hochwertigere und stabilere Releases. Tatsächlich ergab der DORA-Bericht 2019 State of DevOps, dass Spitzenteams 208-mal häufiger und 106-mal schneller bereitstellen als weniger leistungsfähige Teams. Durch Continuous Delivery können Teams Software mithilfe automatisierter Tools erstellen, testen und bereitstellen.
Bessere Zusammenarbeit
Die Grundlage von DevOps ist eine Kultur der Zusammenarbeit zwischen Entwicklungs- und Operations-Teams, die sich die Verantwortung teilen und Aufgaben kombinieren. Dies macht Teams effizienter und spart Zeit im Zusammenhang mit Arbeitsübergaben und der Erstellung von Code, der für die Umgebung entwickelt wurde, in der er ausgeführt wird.
Schnelles Deployment
Durch häufigere und schnellere Releases können DevOps-Teams Produkte zügig verbessern. Durch die schnelle Veröffentlichung neuer Funktionen und die Behebung von Bugs kann ein Wettbewerbsvorteil erzielt werden.
Qualität und Zuverlässigkeit
Praktiken wie Continuous Integration und Continuous Delivery stellen sicher, dass Änderungen funktionsfähig und sicher sind, was die Qualität eines Softwareprodukts verbessert. Die Überwachung hilft Teams, in Echtzeit über die Leistung informiert zu bleiben.
Sicherheit
Durch die Integration von Sicherheitsfunktionen in eine Pipeline für Continuous Integration, Continuous Delivery und Continuous Deployment ist DevSecOps ein aktiver, eingegliederter Teil des Entwicklungsprozesses. Sicherheit wird zum integralen Bestandteil des Produkts, indem aktive Sicherheitsaudits und Sicherheitstests in agile Entwicklungs- und DevOps-Workflows eingebunden werden.
Welches sind die Herausforderungen bei der Einführung von DevOps?
Gewohnheiten lassen sich nur schwer ablegen. Teams, die sich an eine isolierte Arbeitsweise gewöhnt haben, können mit der Veränderung von Teamstrukturen zur Übernahme von DevOps-Praktiken Probleme haben oder sich diesen sogar widersetzen. Einige Teams gehen vielleicht fälschlicherweise davon aus, dass neue Tools ausreichen, um DevOps-Prinzipien einzuführen. DevOps ergibt sich jedoch erst aus der richtigen Kombination aus Mitarbeitern, Tools und Kultur. Jeder in einem DevOps-Team muss den gesamten Wertstrom von der Ideenfindung über die Entwicklung bis hin zur Endbenutzererfahrung nachvollziehen können. Und um während des gesamten Produktlebenszyklus zusammenarbeiten zu können, müssen Silos aufgelöst werden.
DevOps ist nicht die Sache einer Einzelperson. Alle sind gemeinsam gefragt.
Robert Krohn
Leiter Engineering, DevOps bei Atlassian
Der Umstieg von einer veralteten Infrastruktur auf Infrastructure as Code (IaC) und Microservices kann eine schnellere Entwicklung und Innovation ermöglichen. Der höhere betriebliche Workload kann jedoch zur Herausforderung werden. Am besten schaffst du eine solide Grundlage für Automatisierung, Konfigurationsmanagement und Continuous-Delivery-Praktiken, um die Last zu verringern.
Blindes Vertrauen in Tools kann Teams von den notwendigen Grundlagen von DevOps ablenken: der Team- und Organisationsstruktur. Sobald eine Struktur etabliert wurde, muss als Nächstes auf die Prozesse und das Team eingegangen werden. Danach folgen die Tools.
So übernimmst du DevOps-Prinzipien
Die Einführung von DevOps-Prinzipien erfordert, dass die Teams, Tools oder Prozesse, die dein Unternehmen derzeit nutzt, bewertet und gegebenenfalls geändert oder entfernt werden. Es muss die notwendige Infrastruktur aufgebaut werden, damit Teams ihre Produkte eigenständig entwickeln, bereitstellen und verwalten können, ohne sich zu sehr auf externe Teams verlassen zu müssen.
DevOps-Unternehmenskultur
In einer DevOps-Kultur nutzen Teams neue Arbeitsweisen, die eine bessere Zusammenarbeit und Kommunikation umfassen. Sie richtet Mitarbeiter, Prozesse und Tools verstärkt auf eine einheitlichere Kundenorientierung aus. Dabei übernehmen multidisziplinäre Teams die Verantwortung für den gesamten Produktlebenszyklus.
Info und Support
In Unternehmen, in denen DevOps gut funktioniert, werden Experimente und ein gewisses Maß an Risikobereitschaft gefördert. Dort ist es normal, über den Tellerrand hinauszuschauen, und Misserfolge werden ganz natürlich als Möglichkeit verstanden, dazuzulernen und sich zu verbessern.
Agile
Agile Methoden sind in der Softwarebranche äußerst beliebt, da sie es Teams ermöglichen, wie selbstverständlich flexibel, gut organisiert und souverän auf Veränderungen zu reagieren. DevOps ist ein kultureller Wandel, der die Zusammenarbeit zwischen denjenigen fördert, die Software entwickeln und warten. Gemeinsam genutzt führen agile Methoden und DevOps zu einer hohen Effizienz und Zuverlässigkeit.
DevOps-Praktiken
Continuous Integration
Continuous Integration ist ein Prozess zur automatisierten Integration von Codeänderungen in ein Softwareprojekt. Entwickler können damit regelmäßig Codeänderungen in einem zentralen Repository mergen, in dem Builds und Tests ausgeführt werden. Dadurch sind DevOps-Teams in der Lage, Fehler schneller zu beheben, die Softwarequalität zu verbessern und die Zeit für die Validierung und Veröffentlichung neuer Softwareupdates zu reduzieren.
Continuous Delivery
Continuous Delivery erweitert die Continuous Integration, indem Codeänderungen automatisch in einer Test-/Produktionsumgebung bereitgestellt werden. Sie folgt einer Continuous-Delivery-Pipeline, in der automatisierte Builds, Tests und Deployments als ein Release-Workflow orchestriert werden.
Situationsbewusstsein
Es ist wichtig, dass jedes Unternehmensmitglied Zugriff auf die Daten hat, die es benötigt, um seine Arbeit so effektiv und schnell wie möglich zu erledigen. Die Teammitglieder müssen bei Fehlern in der Deployment-Pipeline gewarnt werden, und das unabhängig davon, ob sie systemisch oder infolge fehlgeschlagener Tests entstanden sind. Sie müssen außerdem rechtzeitig über den Zustand und die Leistung von Anwendungen informiert werden, die in der Produktion ausgeführt werden. Metriken, Protokolle, Ablaufverfolgungen, Überwachung und Warnungen sind wichtige Feedback-Quellen, die Teams für das weitere Vorgehen bei ihrer Arbeit benötigen.
Automatisierung
Automatisierung ist eine der wichtigsten DevOps-Praktiken, weil sie es den Teams ermöglicht, den Entwicklungs- und Bereitstellungsprozess für hochwertige Software viel schneller zu durchlaufen. Durch Automatisierung kann das einfache Pushen von Codeänderungen an ein Quellcode-Repository einen Build-, Test- und Deployment-Prozess auslösen, der die Zeitdauer dieser Schritte erheblich verkürzt.
Infrastructure as Code
Unabhängig davon, ob dein Unternehmen über ein lokales Rechenzentrum verfügt oder vollständig auf die Cloud umgestellt hat – die Fähigkeit, Infrastruktur schnell und konsistent bereitzustellen, zu konfigurieren und zu verwalten, spielt eine wichtige Rolle für die erfolgreiche DevOps-Einführung. Infrastructure as Code (IaC) geht über das einfache Skripting der Infrastrukturkonfiguration hinaus und behandelt deine Infrastrukturdefinitionen als echten Code. Dazu verwendet der Prozess Quellcodeverwaltung, Codereviews, Tests usw.
Mikroservices
Microservices ist ein Architekturkonzept, bei dem eine Anwendung als eine Sammlung kleinerer Services erstellt wird, die unabhängig voneinander bereitgestellt und betrieben werden können. Jeder Service hat seine eigenen Prozesse und kommuniziert über eine Schnittstelle mit anderen Services. Diese Trennung von Zuständigkeiten und entkoppelter unabhängiger Funktion machen DevOps-Praktiken wie Continuous Delivery und Continuous Integration möglich.
Überwachung
Die DevOps-Teams überwachen den gesamten Entwicklungsprozess von Planung, Entwicklung, Integration und Testen bis hin zu Deployment und Betrieb. Das ermöglicht es Teams, schnell und automatisch auf eventuelle Verschlechterungen des Kundenerlebnisses zu reagieren. Noch wichtiger ist, dass Teams in früheren Entwicklungsstadien testen und fehlerhafte Produktionsänderungen minimieren können.
Erste Schritte mit DevOps
Am einfachsten geht der Einstieg in DevOps, wenn du einen kleinen Wertstrom identifizierst (z. B. eine kleine unterstützende App oder einen Service) und mit einigen DevOps-Praktiken experimentierst. Wie bei der Softwareentwicklung ist es weitaus einfacher, einen einzelnen Wertstrom mit einer kleinen Gruppe von Stakeholdern zu transformieren, als zu versuchen, ein Unternehmen gleich komplett auf eine neue Arbeitsweise umzustellen.
Atlassian bietet eine Open DevOps-Lösung, die End-to-End-DevOps-Prozesse mit Tools von Atlassian und anderen Drittanbietern bereitstellt. Mit Jira als Grundlage können Teams entscheiden, ob sie Atlassian-Produkte verwenden oder ihre bevorzugten Produkte in die offene Toolkette integrieren möchten. Das Atlassian-Ökosystem bietet eine gute Auswahl an Integrationen und Add-ons, mit denen Teams ihre Toolkette an ihre Anforderungen anpassen können.
Schau dir unbedingt unsere DevOps-Tutorials zu Automatisierung, Tests, Sicherheit, Observability, Feature-Flags und Continuous Delivery an.
Melde dich für unseren DevOps-Newsletter an
Thank you for signing up