Sprechen wir kurz über DevOps

(Last Updated On: 7. Juli 2017)

Wenn Sie meinen Beitrag über agile Projekt-Management Methoden in SAP Projekten gelesen haben, sind Sie für alles, was agile ist, wahrscheinlich schon Feuer und Flamme. Oder eben auch nicht. Es ist hoffentlich rüber gekommen, dass „Agile Methodes“ eben nicht etwas für jeden sind.

Die in diesem Beitrag vorgestellten agilen Modelle sind, mit der Ausnahme von PRINCE2 Agile, häufig auf ein bestimmtes Szenario zugeschnitten. So beschäftigt sich Scrum beispielsweise bevorzugt mit der Software-Entwicklung und Design Thinking mit der Produkt Innovation. SAP Activate wurde speziell für Einführungs- und Migrationsprojekte in der S/4HANA Produktfamilie konzipiert.

Ein DevOps Beispiel

DevOps, welchem wir uns heute widmen werden, widmet sich der Vereinigung der Software-Entwicklung und des System Operatings in einem Unternehmen. Was bedeutet das? Gehen Sie von folgendem Beispiel aus.

auf der einen Seite haben Sie ein Entwicklungs-Team, welches bestehende Software-Produkte in Ihrem Unternehmen weiter entwickelt bzw. neue Produkte entwirft. Auf der anderen Seite haben Sie ein Operations-Team, welches die Server-Landschaft, auf welcher diese Produkte deployt und entwickelt werden, verwaltet. Das Operations-Team ist dafür verantwortlich, dass diese Server-Landschaft jederzeit verfügbar bleibt, während auf der anderen Seite das Entwicklerteam darauf bestrebt ist, möglichst schnell neuen Code zur Weiterentwicklung der Software in die Produktions-Systeme zu bekommen.

Jedes mal, wenn das Entwickler-Team neuen Code in die Produktion deployt, stellt dies einen Aufwand für das Operations-Team dar. Denn hin und wieder verursacht neuer Code neue Probleme in der Produktion, auch wenn dieser vorher getestet wurde. Zusätzlich kommt erschwerend hinzu, dass Code, der vor einem Monat unter einer Entwicklungsumgebung 1.0 entwickelt wurde (Betriebssystem, Software-Bibliotheken usw.) nun einen Monat später in ein aktuelleres Produktiv-System deployt werden muss, weil dazwischen ein Patch Day anstand. Das heißt die Software-Umgebung, auf welcher der Code deployt wird, unterscheidet sich nun von der Entwicklungs-Umgebung. Das führt häufig zu Problemen.

Was ist nun, wenn man versuchen würde, die beiden Teams besser zu harmonisieren? Beispielsweise könnte man das Deployment von neuem Code so planen, dass neuer Code nur in einem bestimmten Zeitraum vor oder nach einem Patch Day deployt werden darf, um zu gewährleisten, dass ich die Software-Umgebung von Entwicklung und Produktion gleichen. Das ist nur eine der vielen möglichen Maßnahmen, die einen stabileren Betrieb garantieren würden.

So könnte man beispielsweise festlegen, dass beim Deployment ein Entwickler frei gestellt werden muss, der für eine kurzfristige Fehler-Analyse zur Verfügung steht. Sinnvoll ist auch, das Test-Team, welches den Code vor dem Deployment auf einem Test-System prüft, gemischt ist. So gehören dem Test-Team sowohl Mitglieder aus dem Entwicklungs- wie auch aus dem Operations-Team an. So wird nicht nur die Funktionalität des Codes, sondern des gesamten Systems geprüft.

Change Management und Automatisierung sind wichtige Bestandteile von DevOps

Zusätzlich werden KPI’s festgelegt, die bei jedem Deployment gemessen werden. So lässt sich beispielsweise fest stellen, dass neuer Code dazu geführt hat, dass sich die Performance des Produktiv-Systems signifikant verschlechtert hat. So lassen sich frühzeitig Gegenmaßnahmen einleiten. Desweiteren werden sämtliche Änderungen an der System-Umgebung fest gehalten. Das schließt nicht nur das Coding ein. Dies realisieren viele Unternehmen bereits heute über eine Versionsverwaltung wie Git oder Subversion.

Stattdessen werden auch die Software-Konfigurationsdateien versioniert und die Releases sämtlicher Software-Pakete (Betriebssystem, Programm-Bibliotheken usw.) mit Change-Datum festgehalten. Typische Tools in diesem Bereich sind etwa Chef, Puppet oder SaltStack. Diese Tools sind ein enormer Helfer in der Fehler-Analyse und in der Inventarisierung der verschiedenen Configuration Items. Häufig werden in diesem Zusammenhang auch neue Analyse-Tools wie New Relic eingeführt.

Ein weiteres wichtiges Thema bei DevOps ist die Automatisierung von Workflows. Die Einführung von DevOps soll die Agilität und die Produktivität der Betriebsumgebung nicht schmälern, sondern verstärken. Daher sollten die Maßnahmen, die im Rahmen von DevOps eingeführt werden, so weit wie möglich über Software abgedeckt werden. So werden etwa das Deployment und das Testen von Code automatisiert. Typische Tools in diesem Bereich sind Jenkings und Selenium. Oder das Deployment von Code erfolgt automatisch in einem festen Zeit-Intervall nach einem Patch Day.

Kleinere Deployment-Zyklen. Stichwort: Continuous Integration.

Ein weiterer wichtiger Baustein von DevOps ist die Zerlegung von Code in kleinere Bausteine. Anstatt etwa monatlich riesige Software-Pakete auf einen Schlag testen und deployen zu wollen, werden kleinere Bausteine in kürzeren Abständen getestet. So wird ein Bug Fix nach seiner Fertigstellung sofort deployt, wenn dies möglich ist. Dies führt dazu, dass man die Fehleranalyse und das Testen von neuem Code in kleine Häppchen verteilt. Dies führt dazu, dass sich das Operations Team nicht „voll frisst“ und dadurch langsam und träge wird, sondern immer nur kleine Snacks auf den Tisch bekommt. Dadurch bleibt das Operations Team Fit und reaktionsfähig. Diese stetige Integration von neuem Code in die Produktion nennt man „Continuous Integration“.

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren …

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.