Devops Engineering

DevOps verstehen

Das Fraunhofer IKS forscht an der Übertragung von DevOps-Konzepten auf Robotikanwendungen.

In der DevOps-Praxis werden diverse Tools und eine spezifische Kulturphilosophie eingesetzt, welche die Prozesse zwischen den Softwareentwicklungsteams, auch Developer genannt und den IT-Teams automatisieren und integrieren sollen. Dabei rücken Aspekte wie die Befähigung der Teams, die Kommunikation und Zusammenarbeit über Teamgrenzen hinweg und die Automatisierung der Technologie in den Fokus.

Es ist wichtig zu betonen, dass DevOps nicht nur eine Reihe von Tools oder Methoden darstellt, sondern eine tiefgreifende Veränderung der Unternehmenskultur erfordert. Ziel ist eine stärkere Integration und Kollaboration zwischen den Developern, die die Software entwickeln, und den IT-Operators, die für den Betrieb und die Wartung dieser Software verantwortlich sind. Dadurch soll eine höhere Geschwindigkeit und Flexibilität in der Softwarelieferung und außerdem eine höhere Qualität und bessere Reaktionsfähigkeit auf Kundenbedürfnisse erreicht werden.

Jetzt Kontakt aufnehmen

DevOps und die Abgrenzung zu traditioneller Softwareentwicklung

Die traditionelle projektbasierte Softwareentwicklung weist einige schwerfällige Mechanismen auf, die durch den DevOps-Ansatz behoben werden können. In der konventionellen Umgebung gibt es oft einen Software-Lebenszyklus, der die Bereitstellung neuer Funktionen für komplexe Softwaresysteme zeitaufwändig und mühsam macht. Zudem besteht die Gefahr, dass Funktionen bei der Veröffentlichung bereits veraltet sind, da Entwicklung und Testen oft langwierige Prozesse sind.

Außerdem werden bei Tests häufig nicht alle Softwarefehler identifiziert, was zu Problemen bei der Qualitätssicherung führt. Zudem ist die Erstellung eines kontinuierlichen Flusses von neuen Funktionen und Fehlerbehebungen schwer zu erreichen, da herkömmliche Entwicklungsmethoden in diskreten Phasen organisiert sind, wobei jeder Schritt vor dem nächsten abgeschlossen werden muss.

Glühwürmchen Weg
© iStock.com/Diana Radicchi

Im Gegensatz dazu bietet der DevOps-Ansatz den Entwickelnden mehr Freiheit, erfordert aber auch mehr Verantwortung. Er betont die Integration und Kollaboration zwischen Entwicklung und Betrieb, wodurch viele der genannten Probleme gelöst werden können. Durch den Einsatz von Automatisierung, kontinuierlicher Integration und Bereitstellung kann ein stetiger Strom neuer Funktionen und Fehlerbehebungen gewährleistet werden, während gleichzeitig die Softwarequalität aufrechterhalten und das Risiko bei der Bereitstellung minimiert wird.

Funktionsweise und Mechanismen von DevOps

DevOps als Methode optimiert den Produktlebenszyklus und verbessert die Softwarequalität durch zwei Kernprinzipien: Shift Right und Shift Left.

  • Shift Right passt den Software-Lebenszyklus an den Entwicklungsprozess an und minimiert das Risiko von Softwarefehlern. Die Vereinfachung aller Entwicklungsphasen und kontinuierliches Feedback im Betriebsstadium sind zentrale Bestandteile dieses Ansatzes.
  • Shift Left setzt auf Entwicklung in einer betriebsähnlichen Umgebung von Anfang an, um stabilen Code zu schreiben. Durch schnellere Feedbackschleifen kann die Entwicklung ihre Fehler frühzeitig erkennen und beheben.

Das Produktlebenszyklus-Management ist ein weiterer wichtiger Aspekt von DevOps, besonders bei cyber-physischen Systemen. Denn diese erfordern umfassende Vortests durch realitätsnahe Simulationen, um potenzielle Probleme vorab zu identifizieren und zu beheben. Die beständige Investition in Entwicklung und Verbesserung von Tools, Testmethoden und Simulationsmöglichkeiten ist dabei entscheidend.

© Fraunhofer IKS
Veranschaulichung des DevOps-Ansatzes: Entwicklung und IT-Betrieb arbeiten zusammen, um Prozesse zu optimieren.

Sinn und Zweck von DevOps: Nutzen & Einsatzbereiche

DevOps stellt einen zentralen Baustein in der fortschreitend digitalisierten Welt dar, welche immer mehr auf hochleistungsfähigen Recheneinheiten für Algorithmen und cyber-physischen Systemen basiert. Dieser Ansatz ist von besonderer Bedeutung für Firmen, die High-Tech-Produkte entwickeln, aber auch für marktführende Digitalkonzerne. In diesem Zusammenhang werden häufig traditionelle Unternehmensstrukturen überdacht und Software-Ingenieurinnen und -Ingenieuren eine zunehmende Verantwortung zugeschrieben. Wichtig zu beachten ist dennoch, dass auch vermeintlich einfache Anpassungen der Software oftmals die Expertise mehrerer Fachleute erfordern, um einen vollumfänglichen Überblick zu gewährleisten.

DevOps nutzt eine umfangreiche Sammlung von Tools, um alltägliche Aufgaben zu automatisieren und damit die Effizienz zu steigern. Das angestrebte Ziel ist das Erreichen einer sogenannten "grün zu grün" Mentalität, die sicherstellt, dass die Software stets in einem produktionsreifen Zustand verbleibt.

Das Versprechen von DevOps

DevOps bietet bedeutende Vorteile, die dazu beitragen, Entwicklungsprozesse zu optimieren und das Potenzial für Fehler zu minimieren. Im Folgenden finden Sie die drei größten Chancen und Vorteile von DevOps.

Reduzierter Umfang für Änderungen

Agile oder iterative Entwicklungsansätze, die typischerweise für DevOps verwendet werden, bedeuten häufigere Veröffentlichungen und weniger Änderungen pro Release im Vergleich zu traditionellen Wasserfall-Entwicklungsmodellen. Durch regelmäßige Bereitstellungen wird sichergestellt, dass jede Änderung nur minimale Auswirkungen auf das Produktionssystem hat, und die Anwendungen entwickeln sich mit der Zeit kontinuierlich weiter. 

Verbesserte Koordination der Bereitstellung

DevOps hilft dabei, die Silos zwischen den Entwicklungs- und Betriebsteams zu überbrücken und Kompetenz- und Kommunikationslücken zu schließen. Hierbei spielen starkes Release-Management und Kollaborationstools wie Tabellenkalkulationen, Telefonkonferenzen, Instant Messaging und Unternehmensportale (wie Wiki, SharePoint) eine entscheidende Rolle. Sie stellen sicher, dass alle Beteiligten die Änderungen verstehen und effektiv zusammenarbeiten.

Automatisierung

Robuste Automatisierungsprozesse im Rahmen der Bereitstellung stellen die Wiederholbarkeit von Aufgaben sicher und reduzieren die Wahrscheinlichkeit von Fehlern während der Bereitstellung.

Die Herausforderungen von DevOps

Natürlich ist die Implementierung der Methode DevOps nicht ohne Herausforderungen, die es zu meistern gilt. Im Folgenden finden Sie die drei größten Baustellen von DevOps.

Bewältigung eines trägen Software-Lebenszyklus

Traditionelle Softwareentwicklung kann sich über lange Zeiträume erstrecken, in einigen Fällen sogar mehrere Jahre dauern. Durch die Länge dieses Zyklus können viele Funktionen bereits veraltet sein, bevor sie überhaupt auf den Markt kommen. Zudem kann es sehr schwierig sein, alle Softwarefehler zu identifizieren. 

Risiken bei Nichtbefolgung des DevOps-Prozesses

Die Nichtbefolgung der DevOps-Prozesse kann zu schweren Unfällen führen, von Umweltschäden bis hin zum Verlust von Menschenleben durch Softwarefehler.

Kultureller Wandel in Unternehmen

DevOps erfordert eine tiefgreifende Veränderung der Unternehmenskultur. Im Gegensatz zur traditionellen Trennung von Entwicklung, Testen, Bereitstellung und Betrieb, übernehmen Softwareentwickelnde die volle Verantwortung für ihren Code. Ingenieurinnen und Ingenieure müssen alle notwendigen neuen Tests schreiben und sicherstellen, dass ihre Änderungen keine nachteiligen Nebenwirkungen haben. Zudem müssen sie offen für fortschreitende Verbesserungen sein, da die vollständige Übernahme der Verantwortung die Beherrschung aller Phasen des Software-Lebenszyklus erfordert.

Datenschutzprobleme

Da DevOps eine ständige Internetverbindung erfordert, können Datenschutzprobleme auftreten. 

Forschung zu DevOps: Fraunhofer IKS und Magazino

Trotz allem birgt die Transformation zu DevOps enormes Potenzial für viele Unternehmen und damit verbunden, große Vorteile für Verbrauchende, die von weniger Ausfallzeiten und maßgeschneiderten Produkten profitieren können. Aufgrund der Systemkomplexität und der Anpassung an individuelle Produktbereiche sollte die Einführung von DevOps am besten in inkrementellen Schritten erfolgen.

Im Rahmen des Verbundprojekts »RoboDevOps« hat das Fraunhofer-Institut für Kognitive Systeme IKS zusammen mit der Magazino GmbH an der Übertragung von DevOps-Konzepten auf Robotikanwendungen geforscht. Dabei wurde der gesamte Lebenszyklus der Software miteinbezogen. Der erste Schritt besteht in der Entwicklung einer Softwarearchitektur (Shift Right), gefolgt von Simulationen und Tests. Während der Einführungsphase werden verschiedene Möglichkeiten zur Weiterentwicklung untersucht. Danach soll ein intuitives System zur Überwachung des Fortschritts etabliert werden, in dem alle Prozesse so automatisiert wie möglich ablaufen. Die Ergebnisse des Forschungsprojekts wurden in einem Whitepaper zusammengefasst. Die Veröffentlichung eines weiteren "Best-Practice"-Papers ist geplant, das wertvolle Einblicke und Ratschläge für andere Organisationen bietet, die sich auf den Weg zur Implementierung von DevOps machen wollen.

Referenzen und weitere Informationen

Hier finden Sie weitere Projekte, Referenzen und Informationen rund um DevOps und die Forschung des Fraunhofer IKS.

 

RoboDevOps – Kontinuierliche Entwicklung und Absicherung von autonomen, mobilen Robotersystemen

Das Fraunhofer IKS hat zusammen mit Magazino an der Übertragung von DevOps-Konzepten auf die Robotik geforscht. Sie konnten Herausforderungen identifizieren und spezifische Lösungen erarbeiten. 

 

DevOps in der Automobilbranche

Hochautomatisierte und autonome Fahrfunktionen gewinnen immer mehr an Bedeutung, wodurch sich moderne Autos zu fahrenden Computern entwickeln. Das MANNHEIM-Projekt AutoDevSafeOps, an dem auch das Fraunhofer IKS beteiligt ist, erarbeitet einen wichtigen Ansatz, um die hohen Anforderungen durch automatisierte und vernetzte Fahrzeuge an die bereits bestehende Softwarearchitektur zu erfüllen.