Image
9_blog.png

DevOps Definition, Ziele, Best Practices und Tools

🕒 Lesedauer: 4 Minuten

DevOps ist heute in aller Munde. Von manchen als "next big thing" gesehen, von anderen als buzzword-verdächtiges Geldgrab.

Definition: Aber was ist DevOps wirklich?

DevOps ist die Abkürzung von Development und Operations. Anders ausgedrückt handelt es sich um die Verbindung zweier Bereiche, die zwar miteinander zu tun haben, aber klassisch meistens für sich stehen. Wenn wir uns jedoch von dieser Abkürzung lösen, ist DevOps viel mehr: es handelt sich um eine neue Unternehmenskultur, bei der die schnelle Auslieferung von qualitativ hochwertiger Software im Vordergrund steht. Diese wird durch die Verbindung von Development und Operations erreicht.

Im vorherigen Absatz wurde auch der Haupt-Vorteil angedeutet: eine hohe Auslieferungsrate, die nicht mit geringerer Qualität einhergeht. Die großen US-Unternehmen - Amazon, Netflix & Co. - machen genau dies vor. Insbesondere von Amazon ist bekannt, dass dort beim Continous Deployment- Ansatz minütlich mehrere Deployments in der Live-Umgebung stattfinden.

Um eine solch schnelle Auslieferung zu erreichen,sind mehrere Schritte erforderlich, von denen einige im Folgenden kurz angerissen werden.

Einsatz von DevOps

Prozesse

Manche Unternehmen sehen DevOps als Tool oder als Software, aber da - wie beschrieben - DevOps eine neue Unternehmenskultur ist, greift dieser Ansatz wesentlich zu kurz. Es spielen für die Einführung im Unternehmen vor allem die entsprechenden Prozesse eine wesentliche Rolle. Alle Prozesse, die die Entwicklung, den Betrieb und die Auslieferung von der Entwicklung in den Betrieb betreffen, müssen gegebenenfalls angepasst werden. Dies ist zwar einfacher, wenn bereits agile Prozesse existieren, die Agilität ist aber nur ein erster Schritt. Die agilen Prozesse betreffen aber zunächst die Entwicklung (und den Bereich Test) - die Prozesse zur Auslieferung (= Delivery) müssen hier somit einen weiteren Weg zurücklegen. Dies ist vielleicht leichter zu verstehen, wenn die entsprechenden Tools und die Prozesskette betrachtet wurden.

 

 

DevOps Toolset

Prozesse und das passende DevOps Toolset

DevOps hängt von der passenden Software ab. Diese sorgt dafür, dass

  • entsprechende Prozesse definiert werden
  • sich der Software-Auslieferungsprozess in diesen Prozessen bewegt
  • das Monitoring den Prozess und die Server überwacht

Die gesamte Prozesskette läuft im Allgemeinen wie folgt ab:

  1. Checkin einer neuen Version in das Repository
  2. Unittests + Test auf Code Conventions
  3. Packaging + Build
  4. automatisierte Integrationstests
  5. automatisierte Frontend-Tests
  6. Release (Management)
  7. Konfiguration
  8. Monitoring

Dieser Gesamtprozess kann mit dem richtigen DevOps Toolset automatisiert werden. Hier gibt es entsprechende Produkte, vor allem aus dem Open Source-Umfeld.

 

Image
devops-agile-cycle.png

Bild: DevOps Prozessschleife. (Klicken zum Vergrößern) [Quelle: Qytera]

 

 

Open Source Software - DevOps

Gerade im Open Source-Bereich gibt es viele Tools, die bei der Erstellung einer DevOps-Pipeline unterstützen. Durch die Offenheit dieser Software lassen sich auch in vielen Fällen weitere Plugins einbinden, sodass Sie Prozesse auch für spezielle Umgebungen modellieren können.

Es könnten zum Beispiel folgende Produkte zum Einsatz kommen:

  • Docker
  • Git
  • JUnit
  • Jenkins
  • Apache Maven
  • Selenium

DevOps Engineering

Somit muss ein DevOps Engineer eine ausgewogene Mischung zwischen einem Systemadministrator und einem Developer sein. In diesem Prozess muss das Große und Ganze im Blick behalten werden. Beim DevOps Engineering ist es wichtig, aktiv in den Entwicklungsverlauf eingreifen zu können, falls etwas Fehlerhaftes im Code entdeckt wird. Gleichzeitig muss aber auch eine integrierte Entwicklungsumgebung wieder zum Laufen gebracht werden können.

Folgende Aufgaben müssen im DevOps-Engineering erledigt werden:

  • Die Erstellung von Tools und Skripten für die agile Entwicklung
  • Verschiedene Skripte für die Automatisierung programmieren z.B. automatisieren von Code-Analysen
  • Automatisierung von verschiedenen Testing-Verfahren z.B. Performance- und Unittests
  • Verwaltung des Codes in Versionen mit verschiedenen Tools
  • Verwaltung von Systemressourcen
  • Dokumentation aller relevanten Maßnahmen

Um fachlich immer auf der Höhe zu bleiben, ist es insbesondere in diesem Bereich wichtig, regelmäßig Schulungen und Fortbildungen zu besuchen.

Denken - Change-Prozess

Die neuen Prozesse und Strukturen müssen selbstverständlich auch in den Köpfen der Mitarbeiterinnen und Mitarbeiter ankommen. Dies betrifft die Arbeit auf mehreren Ebenen: das Projekt- oder Produktmanagement erhält neue Freigabeprozesse, die Entwicklung muss eventuell das eigene Qualitätsverständnis anpassen - zum Beispiel auch den Umgang mit dem Repository.

Eine große Änderung kommt jedoch auch auf den Operations-Bereich zu: dieser Bereich hat ganz besonders das Ziel von stabilen Plattformen und Versionen - und damit eher seltenen Deployments. Es muss Überzeugungsarbeit geleistet werden, um von den Vorteilen des neuen Prozesses zu überzeugen.

Hier hilft es, den oben genannten 6. Schritt zu betonen - vor dem endgültigen Releasen auf den Server eine Prüfung der Testergebnisse durchführen zu lassen.

Veröffentlicht am 19.März 2020

Aktualisiert am 16.April 2024

Wilson Campero

Geschäftsführer, Senior Testmanager

Wilson Campero ist IT-Unternehmer und Experte für Softwarequalität sowie ISTQB Certified Full Advanced Tester. Seit 13 Jahren ist das Testen von Software sein Spezialgebiet.

Finden Sie weitere interessante Artikel zum Thema: