Wie man DevOps erfolgreich einführt

Eine erfolgreiche DevOps Implementierung erfordert eine klare Strategie und einen Top-Down-Ansatz

DevOps ist ein agiler, iterativer Ansatz für die Softwareentwicklung, mit dem Entwickler ihren Kunden schneller einen Mehrwert bieten können. Entwickler, die nach der DevOps-Methode arbeiten, konzentrieren sich darauf, die Arbeit in kleineren Schritten zu liefern, anstatt auf einen einzigen Veröffentlichungstermin hinzuarbeiten. Anforderungen, Pläne und Ergebnisse werden kontinuierlich ausgewertet, so dass die Entwickler auf Feedback reagieren können.

Aber obwohl das Konzept von DevOps nicht neu ist - es ist mehr als ein Jahrzehnt alt -, hat ein signifikanter Prozentsatz der Unternehmen DevOps noch nicht implementiert oder steht vor Herausforderungen bei der Nutzung von DevOps, um die beabsichtigten Vorteile zu erzielen. Warum sind einige Unternehmen mit ihrer DevOps-Implementierung erfolgreich und andere haben Probleme? Ganz einfach: Diejenigen, die mit DevOps erfolgreich arbeiten, haben ihre Reise mit einer klaren und umsetzbaren Strategie begonnen.

DevOps verlangt einen Kulturwandel

DevOps erfordert Zusammenarbeit, Transparenz, Vertrauen und Einfühlungsvermögen. Wenn diese Eigenschaften im Unternehmen bereits etabliert sind, sollte es kein großes Problem darstellen, die DevOps-Methode zu praktizieren. Wenn nicht, sind einige Anstrengungen erforderlich, um diese Eigenschaften zu entwickeln. Die gängigsten Organisationsstrukturen sind isoliert. Das bedeutet, dass verschiedene Teams unterschiedliche Verantwortungsbereiche haben und nur eine minimale teamübergreifende Kommunikation oder Zusammenarbeit erfolgt. Damit DevOps erfolgreich ist, müssen die Mauern eines in vielen Unternehmen gewachsenen Silodenkens eingerissen werden. Vielmehr müssen die Kommunikations- und Kollaborationslinien zwischen allen am Entwicklungsprozess Beteiligten offen sein und auch genutzt werden.

DevOps-Implementierungs-Roadmap

Um DevOps im Unternehmen zu etablieren, bedarf es eines Schritt-für-Schritt-Plans für den reibungslosen Übergang von der traditionellen Softwareentwicklung zum DevOps-Ansatz.

Bevor der Weg zu DevOps eingeschlagen wird, ist es entscheidend, die Ist-Situation zu analysieren und die aktuellen Herausforderungen und Treiber für die Umsetzung von DevOps zu verstehen.

Aktuelle Herausforderungen könnten sein:

  • zu viele Produktionsfehler,
  • Geschäftsinteressenten fordern Funktionen, die das Team nicht liefern kann,
  • langwierige, fehlerhafte Implementierungen,
  • Burnout und Frustration im Team,
  • Deployments, die mit mehreren Teams auf Abruf durchgeführt werden.

Wenn einer dieser Punkte zutrifft, ist es Zeit, ein DevOps-Projekt zu starten.

Organisieren einer DevOps-Initiative

Idealerweise geht eine DevOps-Initiative vom CIO eines Unternehmens aus. Damit erhält die IT-Abteilung die Möglichkeit, die notwendigen Veränderungen bei den Entwicklungs- und Betriebsaktivitäten für das gesamte Unternehmen weitestgehend schmerzfrei zu organisieren. Der CIO ist in der Lage, finanzielle Investitionen abzuschätzen und zu organisieren und die personellen Ressourcen optimal einzusetzen. Ein Programm-Manager verantwortet die Gestaltung der DevOps-Strategie und die Überwachung ihrer Umsetzung.

Entwicklung einer DevOps-Strategie

Um eine effektive DevOps-Strategie zu entwerfen, sollte ein Programm-Manager Best Practices verwenden, die die abteilungsübergreifende Zusammenarbeit verbessern und neue Wege der Infrastrukturbereitstellung, Softwareentwicklung und -tests ermöglichen.

Die Entwicklungs-, Test-, Design- und Betriebs-Teams des Unternehmens müssen dazu in einer gemeinsamen DevOps-Arbeitsumgebung zusammengeführt werden, so dass sich alle Mitglieder auf die Ergebnisse des Softwareentwicklungszyklus konzentrieren und die Motive und Aufgaben des jeweils anderen verstehen können. Zu einer erfolgreichen Strategie gehört natürlich auch ein gemeinsames Ziel - die Beschleunigung des Softwareentwicklungszyklus und die Sicherstellung der hohen Qualität der Software - für alle an der Softwareentwicklung und dem IT-Betrieb Beteiligten.

Die Bereitstellung von Infrastructure as Code (IaC) sorgt dafür, dass die IT-Infrastruktur auf Anforderung der Entwickler oder Testingenieure bereitsteht, wann immer sie diese für die Erstellung eines neuen Builds oder die Überprüfung seiner Qualität benötigen. So können DevOps-Praktiker mit einem Klick eine neue Infrastruktur für die Entwicklung oder das Testen nutzen und menschliche Fehler vermeiden, die oft aus der manuellen Konfiguration von IT-Infrastrukturen resultieren. Die Automatisierung der Prozesse für Softwareerstellung, der Unit-Tests, der Anwendungstests über die Benutzeroberfläche, der Softwareintegration, der Bereitstellung und Freigabe beschleunigt den Softwareentwicklungs-, Test- und Freigabezyklus.

Containerisierung für einen stabilen Betrieb in unterschiedlichen Umgebungen

Um Probleme mit der Zuverlässigkeit von Software bei der Verschiebung von der Entwicklungs- zur Testumgebung und anschließend zur Produktion zu garantieren, empfiehlt sich eine Containerisierung. Container enthalten alles, was zum Ausführen einer Anwendung erforderlich ist, d. h. alle Abhängigkeiten, Bibliotheken, Konfigurationsdateien. Die Isolierung der containerisierten Teile der Software von der gesamten IT-Infrastruktur erlaubt auch einen stabilen Betrieb in unterschiedlichen Umgebungen, in denen sie eingesetzt werden. Die Containerisierung von Teilen der Anwendung (die Datenbank, das Frontend usw.) vereinfacht dem Betriebsteam die Verwaltung der Anwendung, da es nicht die gesamte Software neu erstellen muss, wenn Änderungen in einem der Microservices erforderlich sind. Zur Veraltung von containerisierten Anwendungen empfehlen sich Tools zur Infrastrukturautomatisierung wie Kubernetes, Ansible, Chef oder Puppet, die mit CI/CD-Tools wie Jenkins, Bamboo oder GoCD integriert werden, um das Konfigurationsmanagement und die Softwarebereitstellung effizienter zu gestalten.

Anteil der Testautomatisierung steigern

Um mit DevOps eine schnellere Auslieferung zu erreichen, muss ein ausreichender Anteil an automatisierten Tests gewährleistet sein. Zur Fehlervermeidung ist es ratsam, die Entwicklungs- und Testaktivitäten im Tandem durchzuführen. Am besten erfolgen die automatisierten Tests ein bis zweimal täglich, während sich die Anwendung noch im Entwicklungsstadium befindet. Fehler, die in diesem Stadium gefunden werden, können von den Entwicklern noch ausgemerzt werden, bevor der nächste Build freigegeben wird. Explorative, Usability- und Sicherheitstests sollten dagegen weiterhin manuell durchgeführt werden. Je nach Aufwand für das Schreiben automatisierter Tests können auch funktionale Tests teilweise manuell durchgeführt werden.

Vollständige Überwachung der Anwendungsleistung und DevOps-Pipeline

Die Überwachung der Anwendungsperfomance verschafft den DevOps-Teams Transparenz über alle Leistungsprobleme, z. B. hohe Latenzzeiten, Speicherlecks, Laufzeitfehler. Die Probleme können bei der Überwachung des Anwendungsservers oder der Überwachung der Benutzererfahrung aufgedeckt werden. Um Anwendungsdefekte zu erkennen, zu priorisieren und zu isolieren, bevor sie von den Endbenutzern entdeckt werden, ist das Application Performance Monitoring hilfreich. Es dient auch dazu, die Ursachen der Fehler schnell zu finden, indem spezielle Software zur Anwendungsüberwachung wie Zabbix, Nagios oder Prometheus eingesetzt wird, die auf die Überwachung einer bestimmten Anwendung zugeschnitten ist.

Die Überwachung der DevOps-Pipeline sorgt dafür, dass ein fehlerhafter Build oder ein fehlgeschlagener Test keine unnötigen Verzögerungen verursachen. So verbessert die Automatisierung zwar die Entwicklungsgeschwindigkeit erheblich, schlägt jedoch ein automatisierter Prozess fehl und niemand weiß davon, sollte die Arbeit besser manuell ausgeführt werden.

Kontinuierlich Feedback sammeln

Um sicherzustellen, dass die Teammitglieder über alle Informationen verfügen, die für die rechtzeitige Erledigung ihrer Aufgaben erforderlich sind, bedarf es eines kontinuierlichen Feedbacks. Das bedeutet, dass die Entwicklerteams sofort über Pipelinefehler informiert und schnellstmöglich eindeutige, umfangreiche Code-Testergebnisse zur Verfügung gestellt werden. Aus Sicht des Produktmanagements wird das Team auf Produktionsfehler, Leistungsmängel oder gemeldete Fehler aufmerksam gemacht. In der Vergangenheit war die Überzeugung weit verbreitet, dass ein Entwicklungsteam Software nur hinsichtlich Geschwindigkeit oder Qualität optimieren kann. Kontinuierliches Feedback ist eines der Elemente von DevOps, das beides ermöglicht.

Weissenberg Intelligence – Ihr kompetenter Partner in allen Fragen der digitalen Transformation Anmeldung

Weissenberg Intelligence – Ihr kompetenter Partner in allen Fragen der digitalen Transformation

Möchten auch Sie die Wettbewerbsfähigkeit Ihres Unternehmens im digitalen Zeitalter stärken? Wir beraten Sie gern zur digitalen Transformation Ihres Unternehmens.

Fazit:

Bevor man sich für eine DevOps-Implementierung entscheidet, sollte der Zeitaufwand und der organisatorische Aufwand abgeklärt und die neuen Technologien bedacht werden, die benötigt werden, damit die DevOps-Initiative erfolgreich ist. Der greifbarste Vorteil, den DevOps bringen wird, ist die schnellere Bereitstellung von Software ohne Qualitätseinbußen.

Um diesen Vorteil zu erreichen, muss sowohl der Softwareentwicklungsprozess als auch die Anordnung der IT-Infrastruktur verändert werden. DevOps hilft dabei, die IT-Infrastruktur zuverlässig zu machen - aufgrund der starken Zusammenarbeit zwischen den DevOps-bezogenen Teams und der Ausrichtung zwischen den Entwicklungs-, Test- und Produktionsumgebungen. Aber das alles funktioniert nicht ohne eine saubere, überlegte Implementierung des DevOps-Modells. Der Bedeutung von DevOps für Unternehmen entsprechend ist bei der Umsetzung der DevOps-Strategie ein Top-Down-Ansatz erforderlich, der für Klarheit und Transparenz innerhalb der Organisation sorgt.

Beitrag weiterempfehlen