DevOps Grundlagen (1/2): Vorteile & Best Practices
Was ist nochmal DevOps?
Schon kurz nach dem ersten Kontakt mit DevOps wird klar, dass bereits die Definition des Begriffs häufig nicht eindeutig ist. Es handelt sich dabei nicht – wie oft angenommen – um ein Tool oder eine Programmiersprache, sondern kurzgefasst um eine Sammlung von Vorgehensweisen, Praktiken und Methoden, um neue Software-Features schneller auszuliefern.
Ziel ist es also, die Zeit von der Ideenphase bis zur Veröffentlichung zu verkürzen um damit eine zufriedene Kundschaft zu schaffen. Darüber hinaus ist DevOps immer eine Frage des richtigen Mindsets, da die Grenzen zwischen den Abteilungen abgebaut und cross-funktionale Teams etabliert werden. Dies bedeutet, dass z.B. die Teams für Entwicklung, Betrieb und Qualitätssicherung zusammengezogen werden und als eine Einheit agieren.
Früher war es gängige Praxis, dass eine ganze Applikation entwickelt wird, anschließend die Qualitätssicherung das fertige Produkt testet und es dann von der IT-Administration in den produktiven Betrieb genommen wird. Mit DevOps werden einzelne Bausteine dieser Applikation entwickelt und getestet, in Betrieb genommen. Das so unmittelbar erhaltene Feedback fließt wieder in den Entwicklungsprozess zurück und kann genutzt werden um die weitere Entwicklung mit stärkerem Fokus auf die Wünsche der Kundschaft durchzuführen. Der Begriff DevOps ist deshalb eine Verbindung aus den Begriffen Development und Operations.
Wo überhaupt anfangen?
Erfahrungsgemäß ist es nicht einfach, neue Arbeitsmethoden im Unternehmen zu etablieren, welche die tägliche Zusammenarbeit fundamental verändern. Es ist deshalb wichtig, sich dabei Zeit zu lassen und nicht direkt alles auf einmal zu machen. Zusätzlich muss eine Bereitschaft der Mitarbeitenden bestehen, offen für neue Arbeits- und Denkprozesse zu sein, sonst wird die erste Euphorie schnell verpuffen. Im ersten Schritt ist es essentiell, die Prozesse zu identifizieren, die das größtmögliche Verbesserungspotenzial bieten und bei diesen mit einer DevOps-Transformation zu beginnen. Um diese Prozesse zu identifizieren, sollten Sie folgende Fragen beantworten können:
- Wie lange dauert es bei uns, bis ein neu entwickeltes Feature bei der Kundschaft ankommt?
- In welchen Bereichen muss ein Team auf das Arbeitsergebnis einer anderen Abteilung warten?
- Welche manuellen Arbeitsprozesse sind zeitintensiv?
- Welche manuellen Arbeitsprozesse sind besonders fehleranfällig?
Sollten Sie noch Schwierigkeiten haben, diese Prozesse ausfindig zu machen, laden Sie sich unser kostenloses eBook zum Thema DevOps herunter. In diesem erfahren Sie nicht nur, wie man ineffiziente Prozesse identifiziert, sondern auch viele weitere nützliche Informationen, rund um das Thema der DevOps Transformation.
Nachdem Sie geeignete Ansatzpunkte identifiziert haben, hängt das weitere Vorgehen vom identifizierten Problem ab:
- Gibt es Probleme im Bereich der Qualitätssicherung, ist es sinnvoll, sich im ersten Schritt mit Testautomatisierung zu beschäftigen, um Fehler zu minimieren und die Zeit einzusparen.
- Gibt es Probleme im Bereich der Softwareauslieferung und der Bereitstellung, sollten Sie sich im ersten Schritt mit Continuous Delivery und einer geeigneten DevOps-Toolchain beschäftigen.
- Sind Ihre Mitarbeiter/Kollegen nicht bereit, neue Arbeitsmethoden anzunehmen? Hier empfiehlt sich ein gemeinsamer Workshop, um herauszuarbeiten, welche Vorteile DevOps in der täglichen Arbeit bietet und warum es eingesetzt werden soll.
Was sind die Vorteile von DevOps?
Selbstverständlich sollten Sie DevOps nicht nur einführen, weil es gerade angesagt ist. Wichtig ist, dass alle beteiligten Personen genau verstehen, welche Verbesserungen erzielt werden sollen.
Bessere Zusammenarbeit
Durch den aktiven Abbau von Abteilungsgrenzen und das Zusammenstellen cross-funktionaler Teams fördern Sie eine stärkere Bindung zwischen allen Mitarbeitenden. Diese führt zu einem häufigeren Austausch und zur Entwicklung eines Teams, das gemeinsam am großen Ganzen arbeitet. Das Wissen liegt nicht mehr bei isoliert arbeitenden Fachleuten, sondern wird auf mehrere Personen im Team verteilt. So bleiben Arbeitsprozesse nicht mehr ewig stehen, weil eine Person gerade nicht verfügbar ist. Das Warten auf einzelne „Wissenssilos“ entfällt und Arbeitsprozesse können flüssiger laufen.
Gesteigerte Flexibilität
Eines der wichtigsten Merkmale von DevOps, ist die Unterteilung des Gesamtprodukts in kleinere Teilprodukte. Eine solche Unterteilung kann z.B. durch den Einsatz von Microservices erfolgen. Diese können wesentlich schneller bearbeitet, getauscht, konfiguriert und veröffentlicht werden. Das Unternehmen kann durch den Einsatz dieser Microservices wesentlich agiler auf Veränderungen, Kundenwünsche und Feedback reagieren.
Einfache Skalierbarkeit
Im Kern einer DevOps Transformation steht die Automatisierung – damit behalten Sie auch bei schnell wachsenden Anwendungen und Plattformen die Kontrolle. Durch die Automatisierung von Testing und Deployment können Sie früh die größten Zeitfresser eliminieren, da der Aufwand nicht länger exponentiell mit der Größe Ihrer Applikationen steigt. Wenn der Funktionsumfang wächst, gibt es zunehmend mehr Abhängigkeiten und Interaktionen der Software, die manuell überprüft werden müssen. Dadurch steigt der Zeitbedarf beim Testing immer steiler an. Wenn Sie diesen Vorgang automatisieren, haben Sie wesentlich mehr Zeit für die Verbesserung Ihres Produkts und sparen damit nicht nur Nerven sondern auch Geld!
Darüber hinaus gilt: Je früher ein Bug entdeckt wird, desto günstiger ist dessen Behebung, da die Verzweigungen und Abhängigkeiten mit anderen Features noch geringer ausgeprägt sind.
Hohe Verlässlichkeit
Die Minimierung der manuellen Arbeitsprozesse durch Maximierung von Automatisierung reduziert die Fehlerquote. Dadurch sinkt die Ausfallwahrscheinlichkeit Ihrer produktiven Anwendungen, was wiederum die Zufriedenheit Ihrer Kundschaft erhöht. Durch eine effektive DevOps Toolchain haben Sie zudem immer eine lauffähige Kopie Ihrer Software, da die Versionsstände gesichert sind und wiederhergestellt werden können. Des Weiteren werden Sie automatisch über fehlgeschlagene Tests oder eingepflegte Änderungen benachrichtigt und können dann sofort eingreifen.
Erhöhte Geschwindigkeit
Der Grundgedanke von DevOps ist es, dass Sie in jedem Stadium der Softwareentwicklung Zeit sparen können, um diese sinnvoll für wertschöpfende Dinge einzusetzen. Unabhängig davon, auf welchen Teil wir dabei schauen – von Entwicklung, über Qualitätssicherung, bis zum Ausrollen der Änderungen – mit DevOps schaffen Sie es schneller als ohne! Besonders zeitfressend sind manuelle Prozesse, da sie oft sehr fehleranfällig sind. Beispiele dafür sind Übergaben zwischen getrennten Abteilungen oder die Bereitstellung von neuen Features per Hand. All diese Dinge können durch den Einsatz von DevOps messbar verbessert werden.
Mehr Feedback
Im „traditionellen Projektmanagement“ ist es häufig der Fall, dass Feedback der Kundschaft in der Supportabteilung, bzw. im ServiceDesk landet und diesen dann auch nicht mehr verlässt. Dadurch bekommen die Entwicklungsteams keinen Input, an welchen Stellen noch Verbesserungsbedarf herrscht.
Im Gegensatz dazu, ist das Einholen und Verteilen von Feedback eines der wichtigsten Ziele von DevOps – schließlich tut man alles dafür, dass neue Features schnell zur Kundschaft kommen und man auf diese eine Rückmeldung erhält. Die Meinung der Kundschaft fließt dann zurück ins Team und formt das weitere Vorgehen im Projekt. Durch diese Nähe werden wesentlich bessere Produkte entwickelt, da sie genau den Wünschen entsprechen. Dadurch wird deren Zufriedenheit und Bindung nachhaltig gesteigert. Zusätzlich können (finanzielle) Ressourcen eingespart werden, weil alle Anpassungen an Produkten den Anforderungen des Markts entsprechen. So werden überflüssige und auf Annahmen basierende Anpassungen vermieden.
Was für DevOps nicht nötig ist
Wie Sie sehen können, bietet DevOps Ihnen und Ihrem Unternehmen vielseitige Vorteile, um Softwareentwicklung und Kundennähe nachhaltig zu verbessern. Damit es nicht zu Missverständnissen bei der DevOps-Einführung kommt, möchten wir noch auf einige Dinge eingehen, die nicht für Ihre DevOps-Transformation von Bedeutung sind:
Es gibt keine Notwendigkeit, die gesamte Organisation Ihres Unternehmens zu ändern
Wenn Sie DevOps-Methoden einsetzen möchten, ist es nicht erforderlich, extra dafür neues Personal einzustellen oder Abteilungen zu schaffen. Sie sollten Ihre Ressourcen dafür aufwenden, das bereits vorhandene Personal zu schulen, um abteilungsübergreifend zu funktionieren.
Alle Teams, die aktiv am Prozess der Softwareentwicklung und Bereitstellung mitwirken, sollten in der Lage sein, die notwendigen Werkzeuge und Tools effektiv einzusetzen. Dazu gehört z.B. die Konfiguration von Tools für die Verwaltung und Überwachung Ihrer Infrastruktur, womit klassische Entwicklungsteams wahrscheinlich (bisher) weniger Berührungspunkte hatten. Darüber hinaus sollten Schulungen stattfinden, um Continuous Integraton und Continuous Development verstehen und einsetzen zu können. Dies führt uns auch direkt zum nächsten Punkt:
Tools alleine reichen nicht aus
Es gibt unzählige Tools und Toolchains, die DevOps unterstützen und ermöglichen sollen. Diese sind aber immer nur als Unterstützung zu sehen, damit Sie effektiv DevOps betreiben können. Im ersten Schritt muss verstanden werden, warum gerade diese Tools einsetzt werden und was mit ihnen erreicht werden soll.
Wichtige ist, dass allen Mitarbeitenden die Methodik klar ist:
- Warum brauchen wir Continuous Integration / Continuous Development?
- Warum wollen wir etwas ändern?
- Warum sollen wir überhaupt etwas anders machen als bisher?
- Was ist das große Ziel, das wir mit DevOps erreichen wollen?
Erst wenn alle Mitarbeitenden diese Fragen beantworten können, sollten Sie sich Gedanken über die Tools machen, die Sie für die Umsetzung Ihrer DevOps-Strategie benutzen wollen.
Automatisierung ist nicht DevOps
Automatisierung spielt eine wichtige Rolle bei der Umsetzung von DevOps-Prozessen – allerdings nicht als Hauptkriterium. Im Zentrum von effektiverm DevOps stehen die Vernetzung der Menschen im UnternehmenMitarbeiter und eine bessere Verknüpfung mit der Kundschaftden Kunden, welche die Software am Ende einsetzten. Um diesen Kunden eine bessere Erfahrung mit dem Produkt zu liefern und die gewünschten Änderungen schneller bereitzustellen, wird Automatisierung als Mittel eingesetzt. Durch die Automatisierung der Geschäftsprozesse gewinnt der Entwicklungsprozess an Geschwindigkeit und menschliche Fehlerquellen können abgebaut werden. Automatisierung alleine ist allerdings nicht ausreichend – nur weil meine Software weniger Fehler enthält, bedeutet das noch lange nicht, dass meine Abteilungen funktionsübergreifend arbeiten oder das Kundenfeedback effektiver eingesetzt wird.
Fazit
Am Anfang einer DevOps-Reise, sollte der Fokus besonders auf die Themen Unternehmenskultur, Cross-Functional-Teams und das Mindset der MitarbeitendenMitarbeiter gelegt werden. Alle Beteiligten sollten genau verstehen, was mit DevOps erreicht werden soll und welche individuellen Schritte für das angestrebte Ziel notwendig sind.
Darüber hinaus ist es wichtig, nicht alles auf einmal umsetzen zu wollen, sondern ineffiziente Prozesse ausfindig zu machen, an denen im ersten Schritt gearbeitet werden soll. Erfolge sollten besonders transparent kommuniziert werden, um die Akzeptanz für den Veränderungsprozess weiter zu erhöhen.
Während wir in diesem Teil unserer DevOps-Reihe besonders die kulturellen Aspekte der Transformation beleuchtet haben, werden wir uns im zweiten Teil auf die einzelnen Phasen eines DevOps gesteuerten Projekts konzentrieren. Dabei zeigen wir Ihnen, wie Sie diese Phase durch den Einsatz einer geeigneten Toolchain unterstützen können.