DevOps

Foto von Sohrab Salimi
Sohrab Salimi
3 Min. Lesezeit

Unter DevOps versteht man

  1. Eine Sammlung technischer Methoden und Tools und
  2. Eine bestimmte Kultur der Zusammenarbeit zwischen den Teams Softwareentwicklung und IT.

Bei DevOps geht es darum, die Zusammenarbeit zwischen Softwareentwicklung und IT-Betrieb über gemeinsame Prozesse und Software Tools effizienter zu gestalten und aufeinander abzustimmen. Ein DevOps Team besteht dabei aus Entwicklern und IT-Mitarbeitern, die über den gesamten Produktlebenszyklus zusammenarbeiten.

Ursprünge von DevOps

Der Begriff DevOps entstand im Jahr 2009 und setzt sich zusammen aus den Teilen Dev (= Bereich Software Development / Softwareentwicklung) und Ops (= Bereich IT Operations / Systemadministration).

Die Bewegung, die zur Entwicklung von DevOps führte, begann jedoch schon früher: Bereits um das Jahr 2007 tauschten sich die Communitys für IT Operations und Softwareentwicklung miteinander aus. Die Mitglieder sahen die Trennung der Teams für das Schreiben des Codes und für das Bereitstellen und Unterstützen des Codes als kritisch. Dieser Austausch markiert den Start für die Integration der beiden Fachgebiete.

Ziele von DevOps

DevOps wird eingesetzt, um die folgenden Ziele zu erreichen:

  • Die Software Qualität erhöhen
  • Die Entwicklung und Auslieferung der Software schneller machen
  • Das Miteinander der an der Entwicklung und Bereitstellung beteiligten Teams verbessern
  • Hohe Betriebsstabilität sicherstellen und technische Defekte durch Änderungen und Neuerungen vermeiden

Wie werden diese Ziele erreicht?

Diese Ziele werden erreicht, indem die Prozesse zwischen den Teams Development und Operations im Unternehmen automatisiert und integriert werden. Die wichtigsten Aspekte dabei sind:

  • Automatisierung der Technologie
  • Teamübergreifende Kommunikation und Zusammenarbeit
  • Teambefähigung

Der DevOps Lebenszyklus

Den fortlaufenden DevOps Prozess kann man sich wie eine Endlosschleife vorstellen, der zumeist aus den folgenden 6 Phasen besteht:

  1. Planen
  2. Erstellen / Build
  3. Continuous Integration und Continuous Delivery
  4. Überwachen und Warnen / Monitor
  5. Operate
  6. Fortlaufendes Feedback

Diese 6 Phasen repräsentieren verschiedene Fertigkeiten, Prozesse und Werkzeuge aus den Bereichen Entwicklung und Operations. Wichtig ist, dass beide Teams als bzw. wie ein gemeinsames Team in jeder der Phasen zusammenarbeiten und miteinander kommunizieren.

Welche Methoden & Tools gehören zu DevOps?

Methoden

DevOps umfasst verschiedene voneinander unabhängige Techniken:

  • Agile Softwareentwicklung
  • Continuous Integration (auch: CI oder Kontinuierliche Integration) und Continuous Delivery (auch: CD)
  • Kontinuierliches Service Monitoring
  • Microservices
  • Automatisierte Softwaretests
  • Software Configuration Management, Versionsverwaltung und "Infrastructure as Code"
  • Bereichsübergreifende Key Performance Indicators (KPIs)

Tools

Die genannten Methoden werden z. B. durch die folgenden DevOps Tools ermöglicht oder unterstützt:

  • GitHub und GitLab (für Continuous Integration und Continuous Delivery, automatisierte Sofwaretests und Versionsverwaltung)
  • Jenkins (Continuous Integration)
  • Puppet (für Infrastructure as Code)
  • Ansible (für Configuration Management)
  • Vagrant (als Virtualisierungsplattform)
  • Azure DevOps (z. B. für Continuous Integration, Testing, Release Management und Systems Management)
  • Microsoft Azure (für Monitoring und Hosting)
  • Team Foundation Server
  • Docker (für Container Virtualisierung)
  • Kubernetes (Container Orchestrierung)

Welche Kultur der Zusammenarbeit strebt DevOps an?

DevOps soll die Kooperation zwischen Entwicklung und Operations als bereichsübergreifendes Team verbessern und ihre Trennung voneinander aufheben. Eine enge Zusammenarbeit entsteht dabei durch folgende Aspekte:

  • Die Teams IT Operations und Software Development arbeiten eng zusammen und werden oft für die gesamte Dauer des Produktlebenszyklus zu einem Team zusammengeführt.
  • Das gesamte Team fokussiert sich auf Kundenbedürfnisse und -nutzen während des Software Lifecycles.
  • Innerhalb des Teams werden Prozesse und Pläne einander konsequent sichtbar gemacht.
  • Prioritäten, Zuständigkeiten und Änderungen werden miteinander abgestimmt.
  • Das Risikomanagement wird vereinfacht durch kürzere Release Zyklen und Planungen.
  • Alle Mitglieder des Teams pflegen eine regelmäßige und offene Kommunikation.

Herausforderungen bei der Einführung von DevOps

Wie immer, wenn Neuerungen eingeführt werden, gibt es Mitglieder im Team, die sich mit der Umsetzung schwer tun oder konkrete Widerstände dagegen aufbauen. Wichtig ist daher, dass alle Teammitglieder die Prinzipien, Werte und Vorteile von DevOps wirklich verstehen und dass sich ein Unternehmen ausreichend Zeit für das Informieren und Einführen nimmt.

Wichtig zu beachten:

  1. Je früher das Verständnis für die Team-Vereinigung von Entwicklung und Operations wächst und Silos entsprechend aufgelöst werden, desto leichter funktioniert die Integration von DevOps.
  2. Es genügt nicht, einfach nur die genannten Tools anzuwenden, um die Vorteile aus DevOps zu nutzen. Entscheidend hierbei ist die Kombination aus Kultur, Methoden, Prozessen und Tools.

Fazit zu DevOps

DevOps hat auf die meisten Unternehmen einen durchweg positiven Einfluss. Denn der Ansatz sorgt für höhere Teameffizienz und Sicherheit, schnellere Releases von Software und eine höhere Produkt-Qualität für zufriedenere Kunden.
Die Vorteile der DevOps Prinzipien sind so groß, dass der dahinter steckende Ansatz samt seiner Werte mittlerweile auch in anderen Teams Anwendung findet. So bezeichnet beispielsweise DevSecOps die Integration von Sicherheit in den Entwicklungsprozess.

Mehr zu diesem Thema

A/B Testing

Finder hier die Grundlagen für A/B Testing auf deiner Website. Wir erklären die dir Grundlagen und den Einstieg in agiles Testen

Application Lifecycle Management (ALM)

Application Lifecycle Management oder ALM beschreibt den kontinuierlichen Prozess um eine Software Applikation von Anfang bis Ende zu managen.

Definition of Ready

Die Definition of Ready beschreibt das gemeinsame Verständnis des Scrum Teams im Hinblick auf den Reifegrad von Anforderungen und deren Umsetzung.