DevOps 101

DevOps Survival Guide – das muss man zum Thema DevOps wissen [Gastbeitrag]
Kommentare

DevOps findet in immer mehr Unternehmen Verbreitung – kaum ein Entwickler wird sich dem Wandel in den kommenden Jahren entziehen können. Eine Auseinandersetzung mit dem Thema ist deshalb Pflicht.

DevOps, DevOps, DevOps – kaum ein Begriff wird aktuell so überstrapaziert. Aber wer glaubt, dass es sich um einen vorübergehenden Trend handelt, der irrt. DevOps bringt Änderungen ins Unternehmen, die sich nicht nur kurzfristig, sondern mittel- und langfristig auf die Arbeitskultur auswirken.

Weltweit arbeiten bereits 22 Prozent aller IT-Experten in DevOps-Teams, so eine Studie von Puppet. In Großunternehmen ist das Konzept sogar noch beliebter: Von den 2000 weltgrößten Unternehmen haben Gartner zufolge bereits 25 Prozent den Umstieg gewagt.

22 Prozent der IT-Experten arbeiten bereits in DevOps-Teams

22 Prozent der IT-Experten arbeiten bereits in DevOps-Teams

Warum DevOps?

Wer die Erfolgsgeschichte von DevOps verstehen will, der sollte zunächst etwas Konfliktforschung betreiben. Entwickler und Mitarbeiter des IT-Betriebs waren im Unternehmen lange Kontrahenten, die im Arbeitsalltag wenig miteinander zu tun hatten. Sie saßen in unterschiedlichen Büros, aßen in der Mittagspause an getrennten Tischen und hatten keinen Einblick in die Terminkalender der jeweils anderen.

Dennoch zogen und ziehen sie letztlich an einem Strang: Die Entwickler schreiben die Software und der IT-Betrieb sorgt dafür, dass sie den Endnutzer erreicht. In vielen Unternehmen kommt noch eine dritte Gruppe hinzu – die IT-Sicherheit.

Zu Konflikten kommt es immer dort, wo die unterschiedlichen Zielsetzungen der Abteilungen aufeinanderprallen. Aufgabe der Entwickler ist es, unter Zeitdruck neue Features und Funktionen zu erschaffen. Je schneller die Früchte ihrer Arbeit den Endnutzer erreichen, desto besser sind die Marktchancen ihres Arbeitgebers.

Entwickler streben also nach möglichst häufigen Releases; unnötige Verzögerungen sind ihnen zuwider. Der IT-Betrieb soll hingegen sicherstellen, dass Anwendungen durchgängig verfügbar sind und verlässlich laufen. Aus seiner Sicht gilt deshalb: Je weniger Releases, desto besser. Wo sich Releases doch nicht vermeiden lassen, sollen diese wenigstens gründlich und gewissenhaft vorbereitet sein.

Auch die Mitarbeiter der IT-Sicherheit treten zuweilen auf die Bremse: Sie überblicken den gesamten Software Development Life Cycle (SDLC) und versuchen sicherzustellen, dass Anwendungen und Daten gegen die Attacken von Cyberkriminellen geschützt sind.

Konfliktpotenzial

Die drei Gruppen versuchen, ihre jeweiligen Aufgaben bestmöglich zu erfüllen und innerhalb des Unternehmens gut dazustehen. Dabei kommt es aufgrund der gegenläufigen Prioritätensetzungen nicht selten zu Konflikten. Letztlich sitzen aber alle im gleichen Boot. Um nicht unterzugehen oder auf Grund zu laufen, müssen die einzelnen Abteilungen an einem Strang ziehen – stärker noch als früher.

Wie lässt sich das bewerkstelligen? Zum einen ist ein kulturelles Umdenken erforderlich. Wenn aus „Devs“ und „Ops“ ein DevOps-Team werden soll, müssen Entwickler und IT-Betrieb näher zusammenrücken.

Neben einem regelmäßigen Austausch und gegenseitiger Weiterbildung geht es dabei auch um die Verpflichtung auf gemeinsame Werte, Pflichten und Ziele. Es darf nicht mehr vorkommen, dass sich die Gruppen bei Fehlern und Problemen gegenseitig die Schuld zuschieben. Alle Beteiligten müssen verstehen, dass sie nur als Team die Sicherheit ihrer Anwendungen gewährleisten, die Erwartungen an ihre Abteilungen erfüllen und auf zunehmend umkämpften Märkten bestehen können.

Zum anderen geht es um die Aneignung der notwendigen Technologie. Dabei steht nicht eine einzelne Lösung im Mittelpunkt, sondern eine ganze Reihe an Werkzeugen, die als sogenannte DevOps-Toolchain bezeichnet wird. Dazu zählen etwa Werkzeuge für Code-Entwicklung, Code-Merging und Versionskontrolle, für Continuous Integration und Continuous Testing, für Change-Management und Release-Automatisierung, für Konfiguration und Management der Infrastruktur sowie zu guter Letzt für die Überwachung der Application Performance und der End-User-Experience.

Was bedeutet DevOps für Entwickler?

Für Entwickler bedeutet DevOps zunächst, dass sie sich zunehmend mit Aufgaben auseinandersetzen müssen, die ihnen früher der IT-Betrieb abgenommen hat, darunter etwa das Aufsetzen virtueller oder physikalischer Maschinen, die Absicherung von Systemen oder die Planung und Durchführung von Deployments. Die neuen Formen der Kooperation machen es fortan unmöglich, den eigenen Code über den Zaun zu werfen und davon auszugehen, dass der IT-Betrieb sich um den Rest kümmert.

Auf den Arbeitsalltag hat die engere Zusammenarbeit mit dem IT-Betrieb ganz konkrete Auswirkungen: Die unmittelbare Verantwortung für Funktionsfähigkeit und Verfügbarkeit der Software in der Produktivumgebung tragen nun alle gemeinsam. Das bedeutet, dass Entwickler schnelles Troubleshooting von Fehlern unterstützen. In Logging, Monitoring und Alerting werden sie vom IT-Betrieb miteinbezogen. In diesem Kontext verfolgen Entwickler auch verstärkt das Ziel, ihre Software robuster zu machen – etwa durch die Verwendung von Feature-Flags, die ermöglichen, dass neue Funktionen im Problemfall unkompliziert wieder abgeschaltet werden können.

Es geht also auch um ein Umdenken, was die Qualitätsmaßstäbe für Code betrifft. Entsprechende Werkzeuge aus der DevOps-Toolchain helfen den Entwicklern, Schwachstellen und Fehler noch während der Entwicklungsphase zu identifizieren und zu beseitigen. Das sorgt erstens für stabilere und sicherere Releases. Es senkt aber auch die Entwicklungskosten. Fehler, die unbemerkt durch den SDLC wandern, sorgen für eine sogenannte Kosteneskalation: Je später sie gefunden werden, desto teurer ihre Beseitigung. Einer Studie des IBM Systems Science Institutes zufolge kostet die Reparatur eines Software-Defekts in der Maintenance-Phase hundert Mal so viel wie in der Design-Phase.

Blick unter die Haube

Die technische Grundlage für DevOps sind Continuous Integration (CI) und Continuous Delivery (CD). Sie beschleunigen die Bereitstellung sicheren Codes, indem sie Routineaufgaben wie Testing, Konfiguration und Deployment automatisieren. Entwickler und Mitarbeiter des IT-Betriebs können den Fokus so auf andere Aufgaben legen, außerdem sinkt das Risiko menschlicher Fehler. Ungründlichkeit, Unachtsamkeit oder Missverständnisse scheiden als Faktoren weitgehend aus.

Continous Integration (CI) und Continous Deployment (CD)

Continous Integration (CI) und Continous Deployment (CD) sind die technische Grundlage für DevOps.

Vermittelt durch einen Build-Server wie Jenkins (früher Hudson) oder Visual Studio Team Services automatisiert Continuous Integration alle Prozesse vom Commit (oder Check-in) bis zur Testbereitschaft. Der Build-Server baut aus den veränderten Dateien eine neue Software-Version und unterzieht sie automatischen Unit-Tests. So entsteht ein testbereiter Release-Kandidat.
Unit-Tests prüfen Code-Änderungen unmittelbar auf Korrektheit und liefern so wertvolles Feedback. Entwickler können dadurch effizienter arbeiten und sich stets sicher sein, dass ihre Änderungen am Code an anderen Stellen des Systems nicht für Probleme sorgen.

Die im Rahmen von Continuous Integration erstellten Release-Kandidaten können mithilfe von Continuous Delivery automatisiert auf Entwicklungs-, Test-, Integrations- und Produktivumgebungen eingespielt werden. Der hohe Grad an Automatisierung ermöglicht dabei schnelle, zuverlässige und häufige Deployments, weshalb sich neue Funktionen und Fehlerkorrekturen mit geringem Risiko und mit wenig manuellem Aufwand an den Kunden ausliefern lassen. Der IT-Betrieb gewinnt auf diese Weise an Geschwindigkeit und kann mit der agilen Software-Entwicklung mithalten.

DevOps sicher machen

Gerade in Sachen Sicherheit greift die oben bereits zitierte Regel: Je früher eine Sicherheitslücke beseitigt wird, desto geringer der finanzielle Aufwand. In der Frühphase der Anwendungsentwicklung helfen White-Box-Tests, Schwachstellen im Code zu identifizieren. Sie überprüfen den Quelltext automatisiert auf Versäumnisse und Fehler.
Black-Box-Tests können ebenfalls schon vor dem Deployment in die Produktivumgebung durchgeführt werden. Voraussetzung hierfür ist eine virtuelle Appliance für das lokale Scannen. Entsprechende Tools imitieren das Vorgehen von Angreifern, indem sie etwa Schadcode in Webformulare einspeisen.

Auf diese Weise erkennen sie neben Schwachstellen wie Cross-Site-Scripting (XSS) und SQL-Injections auch Laufzeitprobleme, die bei der Offline-Untersuchung des Codes mit White-Box-Methoden zumeist nicht zu erkennen sind. Dazu gehören etwa Authentifizierungsfehler, Probleme mit fehlerhaften Serverkonfigurationen und Schwachstellen, die erst nach der Anmeldung als bekannter Benutzer sichtbar werden.

Ein weiterer möglicher Bestandteil der Sicherheitsstrategie im Rahmen von DevOps ist Runtime Application Self-Protection (RASP). Es wird direkt in die Runtime-Umgebung der Software integriert, nimmt unmittelbaren Einblick in die Anwendungslogik und kann Angriffe somit wesentlich zuverlässiger erkennen und abwehren, als etwa traditionelle Firewalls dies könnten.
So erstreckt sich die IT-Sicherheit schließlich über den gesamten Entwicklungszyklus der Software, was ihre Schlagkraft erhöht. Die Automatisierung führt außerdem dazu, dass strenge Sicherheitsrichtlinien nicht länger ein Hemmschuh für schnelle Releases sind.

DevOps – bald Industriestandard?

DevOps erfindet das Rad nicht neu. Es greift Ansätze auf, die lange bekannt sind – Agile Operations und Continuous Delivery etwa. Die große Innovationsleistung besteht letztlich darin, diese Methoden neu kombiniert und um eine zwischenmenschliche Komponente ergänzt zu haben.

Entstanden ist ein Erfolgsmodell, das die Anwendungsentwicklung und den IT-Betrieb zumindest dem Versprechen nach zuverlässiger, effizienter und sicherer macht. Wenn es immer mehr Unternehmen gelingt, sich durch DevOps einen solchen Wettbewerbsvorteil zu verschaffen, dann wird auch die Konkurrenz bald nachziehen müssen. Und das hätte wiederum zur Folge, dass sich der Arbeitsalltag vieler Entwickler durch DevOps dauerhaft ändert. Es lohnt sich deshalb, am Thema dranzubleiben.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -