Mit DevOps Software schneller entwickeln und in Betrieb nehmen

by | 01.04.2019 | Wissen

Den Begriff DevOps sieht man immer öfter. Wissen Sie, was er bedeutet? DevOps entstand in den letzten Jahren mit der agilen Softwareentwicklung. Die immer kürzeren Marktzyklen von Softwareprodukten forderten eine immer effizientere Softwareentwicklung, aber auch ein schnelleres und häufigeres Deployment. Was diese Rahmenbedingungen Entwicklungs- und Deployment-Teams abverlangen und was der Nutzen von DevOps ist, erfahren Sie in diesem Beitrag.

Automatisierung und Überwachung auf allen Stufen der Softwareentwicklung

DevOps (Development und Operations) ist eine Software-Engineering-Kultur und -Praxis mit dem Ziel, Softwareentwicklung (Dev) und Softwarebetrieb (Ops) zu vereinheitlichen und die funktionsübergreifende Zusammenarbeit zu fördern.

Das Hauptmerkmal der DevOps-Bewegung ist es, die Automatisierung und Überwachung auf allen Stufen der Softwareentwicklung, von der Integration über das Testen und Freigeben bis hin zum Deployment und Infrastruktur-Management, zu fördern. DevOps und Agile ergänzen sich gegenseitig und zielen auf kürzere Entwicklungszyklen, häufigeres Deployment und zuverlässigere Releases ab. Das alles in enger Abstimmung mit den Geschäftszielen.

Lifecycle von DevOps

Das Development-Team produziert am Ende eines jeden Sprints funktionierende Software. Diese muss jedoch oft warten, bis das festgesetzte Releasedatum im Unternehmen erreicht ist. Selbst beim Release-Termin kommt es immer wieder zu Verzögerungen, wenn das Operations-Team nicht auf die Integration und das Deployment vorbereitet ist oder das Unternehmen nicht bereit ist, mit der neuen Funktionalität live zu gehen. Kürzere Time-to-Market, ein wesentlicher Vorteil von Scrum,  kann deshalb oft nicht vollständig realisiert werden.

Das Development-Team muss innerhalb der ersten Sprints nachweisen, dass das Produkt realisierbar ist und Wert schafft. Um dies zu erreichen, braucht man eine Betriebsumgebung und eine anfängliche Architektur, in der die Ziele der Service Level Agreements erreicht werden. Auch das wird durch DevOps unterstützt.

Nicht mehr getrennt, sondern gemeinsam

Mit DevOps werden die Abteilungen Development und Operations nicht mehr getrennt betrachtet und betrieben, sondern sie werden als ein Team gesehen und arbeiten eng zusammen. Und zwar über den gesamten Lebenszyklus einer Applikation hinweg – vom Entwurf über die Entwicklung bis hin zum Betrieb einer Applikation – um gemeinsam ein Produkt mit dem größtmöglichen Mehrwert zu schaffen und Software jederzeit und schneller in Betrieb nehmen zu können.

Häufigeres und schnelleres Deployment wird durch Automatisierung nicht nur im Development (Build, Test), sondern auch im Deployment umgesetzt. Ziel ist es, möglichst alles zu automatisieren. Das geschieht in einem agilen Umfeld nach agilen Werten und Prinzipien (Scrum.de, 2015). Daraus ergeben sich kürzere Zyklen, Sie erhalten früheres Feedback der Anwender und sehen auch, ob die Stabilität und die Zuverlässigkeit so sind, wie gedacht.

Alle Tools und Automatisierungsmaßnahmen der Welt sind jedoch wertlos, wenn bei den Development- und Operations-Teams kein echtes Interesse an einer Zusammenarbeit besteht. DevOps löst keine Probleme beim Einsatz von Tools. Der Fokus liegt vielmehr darauf, dass menschliche Probleme gelöst werden und die funktionsübergreifende Zusammenarbeit gefördert wird.

DevOps ist eine Kultur, nicht eine Rolle oder eine Software

DevOps einführen braucht Zeit, denn es soll eine neue Arbeitskultur entstehen, die sich an den agilen Werten und Prinzipien des agilen Manifests orientiert, aber auch auf Werten wie Transparenz, Offenheit und Respekt basiert. Eine Teamwork-Kultur nachhaltig zu verändern, braucht nicht Monate, sondern Jahre.

Öfter liefern und bessere Qualität

DevOps hilft einem Software-Team dabei durch:

  • frühere Nachweise, dass das Produkt realisierbar ist
  • Automatisierung nicht nur in der Entwicklung (Build, Test), sondern auch im Deployment und dazwischen
  • enge Zusammenarbeit zwischen dem Development und Operations-Team
  • besseren und schnelleren Wissensaustausch zwischen dem Development und Operations-Team
  • “Inspect and Adapt” über den gesamten Liefer-Workflow hinweg – auch mit dem Ziel, nach Möglichkeiten zur Verbesserung der menschlichen Zusammenarbeit zu suchen.
  • Mitglieder des Operations-Teams, die denken wie Entwickler und umgekehrt
  • Verkürzung und Erweiterung von Feedback-Kreisläufen, damit die nötigen Korrekturen vorgenommen werden können

Die Effizienzsteigerung vom “traditionellen Testing” zum Continuous Delivery und weiter zum DevOps ist immens. Hier geht’s aber nicht nur um Effizienz, sondern auch darum, schneller mit dem Produkt auf dem Markt zu sein. Zweiter auf dem Markt zu sein, heißt sehr oft “Game over”. Der Druck, schneller zu sein, wird von Jahr zu Jahr größer.

DevOps hat auch einen positiven Einfluss auf Teams. Menschen, die vorher vielleicht nicht die beste Meinung voneinander hatten, arbeiten viel enger zusammen und schätzen die Arbeit der anderen Disziplin als wertvoll ein. Beide profitieren vom Wissen des anderen und bauen gemeinsam ein besseres Produkt. Mehrwert wird schneller, in höherer Qualität und zu niedrigeren Kosten geliefert und die Risiken sollten dadurch auch sinken.

Nicht überall ist DevOps gleich wirkungsvoll

DevOps ist der richtige Weg, wenn es um “reine Softwareentwicklung” geht, wie z.B. von Mobile Apps, PC-Anwendersoftware oder Web-Anwendungen. Hier sind schnelle Marktanpassung und kurze Releasezyklen relevant. Wenn man hingegen Software für große ERP-Systeme, Versicherungssysteme oder Systeme, bei denen die Software Teil eines Produktes ist, wie z.B. für Werkzeugmaschinen, Flugzeuge oder Autos, entwickelt, kann DevOps nicht den vollen Nutzen ausspielen. Ein aktuelles Beispiel dazu ist die Software für die Boeing 737 Max 8. Bei solchen Systemen dauern die Releasezyklen nicht Tage oder Wochen, sondern teilweise mehrere Monate. Hier sind z.B. Expertenwissen, aufwändige Tests, Abnahmen und detaillierte Dokumentation Pflicht. Aber auch hier hat natürlich eine bessere Zusammenarbeitskultur zwischen Development und Operation-Teams viele positive Effekte.

Lesen Sie mehr von Roland Wanner in seinem Blog: https://www.rolandwanner.ch/blog/

Sehen Sie im Video, wie Sie mit objectiF RPM Continuous Deployment von Microservices in eine Cloud realisieren können.