/DevOps | Einführung

DevOps | Einführung

Wenn man Leute nach der Definition von DevOps fragt, so gibt einem jeder eine andere Antwort. Mal ist es die Zusammenarbeit zwischen Development und Operations, von deren Begriffen sich die Abkürzung DevOps ja auch ableitet, für andere ist es Continuous Integration bis hin zu Continuous Delivery.

Die kürzeste Definition, die ich je gehört habe ist:

DevOps = 10 Release pro Tag

Das bedeutet aber nicht, dass tatsächlich 10 mal am Tag released werden soll, sonder es geht lediglich um die Tatsache, das 10 mal am Tag released werden könnte. Es geht also darum, dass ein Release nicht länger als 1 Stunde dauern sollte und die Organisation, die Prozesse und Tools dahingehend optimiert werden sollen, so dass ein Release nicht länger als eine Stunde dauert.

DevOps ist…

…Zusammenarbeit zwischen Development und Operations 

Hierbei geht es im Wesentlichen darum, dass vorher getrennt agierende Bereiche zusammenarbeiten und gemeinsam an dem Ziel arbeiten Software schneller und zuverlässiger entwickelt, getestet und freigegeben werden kann.

…Infrastruktur als Code

Hierbei wird die Konfiguration der Infrastruktur genau so gehandhabt wie Softwareprogrammierung. In den Anwendungen sind Konfigurationsskripte enthalten, die ihre eigenen Umgebungen erstellen und orchestrieren. Damit weichen die starren Grenzen zwischen Anwenrungen und Umgebungen auf. Auf Basis dieser „programmierbaren Infrastruktur“ können virtuelle Maschinen programmseitig verwaltet werden.

…Automatisierung

Hier geht es darum alle am Lieferprozess beteiligten Prozessschritte in einem „sinnvollem“ Maß zu automatisieren. Ich habe bewusst „sinnvoll“ verwendet, da es Beispiele gibt, wo versucht wird alle Prozesse so weit es nur geht zu automatisieren und damit schafft man einen wirklichen Wartungsalptraum. Betrachte also alle Prozessschritte, optimiere diese und schaue inwieweit sich die einzelnen Schritte automatisieren lassen – betrachte aber immer den Wartungsaufwand der Automatisierung gemessen an der Zeit, die durch die Automatisierung eingespart wird. Auch die Häufigkeit der Wiederholungen einzelner Prozessschritte spielt hierbei eine wesentliche Rolle, um abzuschätzen ob sich eine Automatisierung lohnt.

…Messung und Verbesserung

Sammle relevante Daten und optimiere anhand folgender Fragen kontinuierlich die Prozesse:

  • Wie lange braucht ein Check-In, bis er vom Kunden genutzt werden kann? UND hierbei ist nicht der Product Owner gemeint!!! Oft werden Release häufig und schnell geliefert – aber leider nur zum Product Owner oder zum Stakeholder. Der User bekommt die Feature aber leider sehr viel später freigeschalten – DevOps bedeutet kontinuierlich zum KUNDEN ausliefern.
  • Wie schnell kann ein System nach Ausfall wieder laufen?
  • Wie werden meine Produkte/Feature genutzt?
  • Wo brauche ich Service Level Aggreements?

…Feature Toggles

Mit Hilfe von Feature-Toggles ist es möglich mehrere Quellcode-Zweige bereit zu stellen, so dass Feature getestet werden können, bevor sie fertig sind und zum Kunden veröffentlicht werden. Sobald Feature können zur Laufzeit für bestimmte Benutzergruppen aktiviert oder deaktiviert werden. Somit ist der Code hochgradig skalierbar.

…Lean Startup

lean startup