DevOps verdrängt Agile als beliebtes Konzept der Softwareentwicklung, aber was genau bedeutet DevOps eigentlich?

Da der Begriff DevOps in unterschiedlichen Kontexten verwendet wird, herrscht oft Verwirrung darüber, was damit eigentlich gemeint ist, doch das muss nicht sein. Wie Sie hier erfahren werden, ist DevOps nichts anderes als ein weit gefasster Begriff wie „Qualität“, der je nach Kontext unterschiedliche Nuancen aufweist.

DevOps ist das aktuelle Trendthema in der Softwareentwicklung und wird fast genauso häufig erwähnt wie Agile. Trotzdem kann es schwierig sein, eine zufriedenstellende Definition für einen Begriff zu finden, der eine Philosophie, eine Unternehmenskultur, eine Reihe von Praktiken, Tools sowie die Rolle in einem Softwareentwicklungsteam beschreibt. In diesem Artikel werden wir versuchen, der Frage „Was ist DevOps?“ näher auf den Grund zu gehen.

DevOps ist ein umfassendes Konzept und sollte auch als solches behandelt werden, um es zu verstehen

Eine gute Beschreibung, wie der Begriff DevOps zu betrachten und zu definieren ist, ist, ihn in der gleichen Weise zu betrachten wie andere weit gefasste Konzepte wie „Qualität“ oder, im Kontext der Softwareentwicklung, „Agile“.

Bevor wir uns mit der Definition von DevOps befassen, sollten wir eine Parallele schaffen, mit der viele von uns vertraut sind, indem wir darüber nachdenken, wie wir über „Qualität“ denken, sie definieren und erreichen. Was also ist Qualität?

Auf der konzeptionellen Ebene bezeichnen wir etwas als Qualität, wenn wir es für besser halten als die meisten anderen vergleichbaren Beispiele von Dingen mit dem gleichen Endziel oder der gleichen Funktionalität. Lassen Sie uns das in einen konkreten Zusammenhang stellen und überlegen, was einen hochwertigen Laptop ausmacht.

Zunächst sollten wir uns überlegen, wofür ein Laptop konzipiert ist, was je nachdem, wer ihn benutzt und wofür er eingesetzt wird, unterschiedlich sein könnte. Ich verwende meinen Laptop, um das Microsoft Office-Paket auszuführen, insbesondere Outlook, Word, Excel, PowerPoint und Teams. Außerdem nutze ich ihn zum Surfen im Internet, wobei ich oft mehrere Tabs offen habe, zum Streamen von Inhalten und gelegentlich, für den Fall, dass ich abends eine Stunde für mich habe, ein Spiel darauf zu spielen.

Ich bin ein typischer Laptop-Nutzer, und deshalb sind die meisten Laptops so konzipiert, dass sie genau das können, was ich brauche. Für mich und andere Verbraucher mit meinem Profil basiert die wahrgenommene Qualität eines Laptops darauf, wie gut er mich bei all den Dingen unterstützt, die ich mit dem Gerät machen möchte.

Ich beurteile dies anhand einiger recht einfacher und relativ objektiver wie auch subjektiver Parameter.

Objektive Parameter sind:

  • Wie schnell kann ich den Laptop hochfahren und das tun, was ich tun möchte? Der alte Laptop meiner Frau braucht ewig, bis er hochgefahren ist, meiner dagegen nicht, so dass ich ihr Gerät sofort als qualitativ weniger überzeugend einstufen würde. Zumindest in der heutigen Zeit.
  • Wie flüssig und schnell das Gerät läuft und wie schnell ich zwischen all den Programmen hin- und herwechseln kann.
  • Die Schärfe der Bildschirmauflösung (obwohl ich das ehrlich gesagt nur dann bemerken würde, wenn ich einen Gegensatz zu einer höheren Auflösung habe, die ich von einem anderen Gerät gewohnt bin).
  • Wie lange hält der Akku, wenn der Laptop im Einsatz ist?
  • Wie leicht/bequem ist er in einem Rucksack oder einer Tasche zu transportieren?
  • Wie lange bleibt die Qualität all dieser Parameter erhalten? Das ist wahrscheinlich das Wichtigste. Die subjektiven Parameter sind:
  • Ist der Hersteller eine Marke, mit der ich vertraut bin und die ich mit hochwertigen Laptops assoziiere?
  • Ist der Laptop vom Design her wertig?
  • Fühlt sich das Gerät aufgrund der Materialien und Komponenten, aus denen es besteht, sowie deren Zusammenstellung während des Herstellungsprozesses wie ein Qualitätsprodukt an?

Wäre ich ein Gamer und würde die Qualität eines Gaming-Laptops beurteilen, dann würde ich wahrscheinlich die Qualität in etwa auf die gleiche Weise beurteilen, wobei ich den Schwerpunkt auf die Qualität des Geräts in Bezug auf die von mir gern gespielten Spiele lege.

Das ist die Qualität, wie sie der Endverbraucher definiert. Für einen Laptop-Hersteller ist die Definition von Qualität eine andere und beruht auf den Design-, Herstellungs- und Marketingprozessen, die die wahrgenommene Qualität des Endprodukts erreichen, das ich als Endbenutzer verwende. Qualität bezieht sich hier eher auf die Entscheidungen und Prozesse, die ein Laptop-Modell von einem Konzept zu einem Design, zu einer Lieferkette und dann zu einem Herstellungs- und Qualitätssicherungsprozess führen.

Entscheidend für die Qualität sind die Fähigkeiten der Mitarbeiter, die alle Aufgaben in dieser Wertschöpfungskette übernehmen, wie gut sie und die von ihnen ausgeführten Prozesse verwaltet werden, welche Ressourcen ihnen zur Verfügung stehen und sogar welche Hilfsmittel für die Produktionslinie sowie für das Logistiknetzwerl verwendet werden, über das der Laptop schließlich in den Laden oder das Lager gebracht wird, wo ich als Endnutzer ihn schließlich über eine E-Commerce-Plattform kaufen kann. Es gibt sogar eine Funktion, die sich auf die Aufrechterhaltung einheitlicher Qualitätsstandards konzentriert - die Qualitätssicherung (oder Quality Assurance - QA).

Auch die Art und Weise, wie das Produkt und die dahinter stehende Marke vermarktet werden, beeinflusst die wahrgenommene Qualität des Laptops auf einer anderen Ebene. Dazu kommt, noch der visionäre CEO des Herstellers wie er einen TEDx-Vortrag darüber hält, dass die Qualität seiner Produkte nur möglich sei, weil seine Philosophie oder „Mission“ darin bestehe, hochwertige Produkte zu entwickeln, herzustellen und zu verkaufen. Wie wir sehen, hat das Konzept der Qualität eines Laptops viele Ebenen und Ausdrücke. Dasselbe gilt für DevOps.

Was ist DevOps?

Das umfassende Konzept von DevOps ist ähnlich vielschichtig. Auf der höchsten konzeptionellen Ebene ist DevOps ein Ansatz für die Softwareentwicklung oder den Softwareentwicklungslebenszyklus (SDLC), der die traditionell getrennten Entwicklungs- und Operation-Teams vereint. Das Ziel eines DevOps-Ansatzes ist es, aus der Sicht des Endbenutzers qualitativ höherwertige Software zu produzieren. In der Regel wird dies so definiert, dass die Software schnell, reibungslos und intuitiv läuft, gut aussieht und ihren Zweck erfüllt, wobei der Aufwand im Verhältnis zum Nutzen als angemessen betrachtet wird.

Ein DevOps-Ansatz soll die Verwirklichung dieses Ziels besser ermöglichen, indem die Reibungspunkte beseitigt werden, die bisher zwischen isolierten Entwicklungs- und Operation-Teams aufgetreten sind. In einem SDLC ohne DevOps wird ein neues Softwaresystem oder eine neue Iteration in der Entwicklungs- und Testumgebung entwickelt und getestet sowie anschließend ans Operations-Team übergeben.

Die Aufgabe des Operations-Team ist es, die Software in der Produktionsumgebung auszuführen und den Benutzern zur Verfügung zu stellen. Theoretisch sollte die Software dann genau so laufen wie in der Entwicklungs- und Testumgebung. Das ist jedoch nicht immer der Fall, was zu Fehlern und Ausfällen führen kann, die sich auf die Wahrnehmung der Softwarequalität durch die Benutzer auswirkt.

In einem DevOps-SDLC liegt es in der gemeinsamen Verantwortung der Akteure in der Entwicklung und der Operation, dafür zu sorgen, dass die Software in der Produktionsumgebung genau so läuft wie in der Entwicklungs- und Testumgebung. Dies wird dadurch erreicht, dass die Mitarbeiter in der Entwicklung die Produktionsumgebung und die Mitarbeiter im Bereich Operation die Entwicklungsumgebung betrachten - und alles tun, um sicherzustellen, dass beide Umgebungen symmetrisch zueinander sind. Auf diese Weise lässt sich das Risiko, dass die Software für die Benutzer nicht wie vorgesehen funktioniert, weitgehend vermeiden.

DevOps bedeutet also, dass die Rollen und Zuständigkeiten der Teammitglieder, sowohl in der Entwicklung als auch der Operation, sowie die Art und Weise, wie sie zusammenarbeiten und auf das gleiche Endziel hinarbeiten, angepasst werden. Dazu gehören ferner eine Reihe von Prozessen und Praktiken. Als auch spezielle Tools, mit denen virtuelle Umgebungen sowie CI/CD-Pipelines erstellt werden, die einen reibungslosen Ablauf der Software-Iterationen von der Entwicklung bis zur Produktion ohne Leistungseinbußen ermöglichen.

DevOps führt außerdem eine neue Rolle in das Softwareentwicklungsteam ein - den DevOps-Engineer. Ein DevOps-Engineer ist auf die Verwendung von DevOps-Tools spezialisiert, um die DevOps-Pipelines einzurichten, zu überwachen und zu pflegen, die Entwicklung und Operation miteinander verbinden. All dies ist nur möglich, wenn alle Teammitglieder sowie andere Stakeholder, wie z. B. die Unternehmensleitung, die Einführung eines DevOps-Ansatzes in der Organisation unterstützen.

Aus diesem Grund wird der Begriff DevOps, wie von John Adam erläutert, zur Beschreibung folgender Punkte verwendet:

  • Eine Philosophie
  • Eine Unternehmenskultur
  • Eine Methodik
  • Eine Reihe von Praktiken/Verfahren
  • Eine Reihe von Tools & Werkzeugen
  • Eine Teamrolle

Der Begriff DevOps stiftet viel Verwirrung. Doch das ist nicht nötig, wenn wir verstehen, dass DevOps, wie unsere Analogie „Qualität“, lediglich ein weit gefasstes Konzept ist, das auf mehreren Ebenen und in verschiedenen Kontexten aus unterschiedlichen Blickwinkeln ausgedrückt werden kann.