Fünf Tipps für den Erfolg von DevOps

Wie DevOps den Unterschied machen kann

Mark Warren

© Shutterstock/Cartoonresource

Der positive Einfluss, den DevOps auf die Unternehmens-IT hat, wird immer offensichtlicher. Wenn es darum geht, DevOps gemeinsam mit Techniken für Continuous Delivery einzuführen, sind Vertrauen und Transparenz die Schlüssel zum Erfolg.

DevOps – die Entwicklungsmethode, deren Kernelemente Kommunikation, Kollaboration, Integration, Automatisierung und Kooperation zwischen Software-Entwicklern und IT-Operatoren sind – war 2015 ein immer wiederkehrendes Thema in der IT-Welt. Dabei ist DevOps nicht unbedingt neu, aber es entwickelt sich langsam zu einem anerkannten und oft angewandten Konzept. Wenn Gartners Prognose korrekt ist, werden bis 2016 etwa ein Viertel der 2.000 weltweit größten Unternehmen und Organisationen mit DevOps arbeiten.

Die immer größere Verbreitung und das Erkennen der potenziellen Vorteile von DevOps hat die innovative Weiterentwicklung verschiedenster Technologien vorangetrieben. Besonders Jenkins, Chef, Puppet und softwaredefinierte Infrastrukturen erfreuen sich größter Beliebtheit. Gleichzeitig, aber vielleicht nicht gänzlich davon unabhängig, wurden neue Anwendungsbereitstellungsmodelle immer populärer. Hervorzuheben sind dabei Microservices und Container, wie sie bei Docker zum Einsatz kommen. All diese Elemente helfen, eine Verbindung zwischen Entwicklern und Operations-Teams herzustellen.

DevOpsCon Istio Cheat Sheet

Free: BRAND NEW DevOps Istio Cheat Sheet

Ever felt like service mesh chaos is taking over? Then our brand new Istio cheat sheet is the right one for you! DevOpsCon speaker Michael Hofmann has summarized Istio’s most important commands and functions. Download FOR FREE now & sort out your microservices architecture!

DevOps, soviel ist sicher, hat gehörigen Einfluss darauf, wie Unternehmen ihren Entwicklungsprozess optimieren können. Einen maximalen Effekt hat DevOps allerdings dann, wenn es als Teil eines größer angelegten Continuous-Delivery-Ansatzes im Unternehmen integriert wird. Wenn man der Evans Data Research von 2014 glauben kann, wurde Continuous Delivery (CD) bereits damals bei zwei Dritteln der befragten Unternehmen und Organisationen auf die ein oder andere Weise angewendet, auch wenn sie es nicht unter dem Namen CD taten. Der Trend der Umfrage ging dahin, dass sogar jene Unternehmen, die Continuous Delivery noch nicht übernommen hatten, dies in der nahen Zukunft zumindest teilweise tun wollten.

DevOps und CD passen sehr gut zusammen. Bei Continuous Delivery geht es vor allem darum, eine kollaborative, kohäsive und zeitgemäße Umgebung zu schaffen, um Softwareprojekte vom Anfang bis zum Zeitpunkt der Auslieferung zu führen. Dabei soll es jederzeit möglich sein, die Software zur Produktion freizugeben. Der Schlüssel für die erfolgreiche Nutzung von Continuous Delivery sind schnelle Feedback-Schleifen, die von automatisierten Build- und Test-Systemen sowie den Kunden zurück in die Planungs-Pipeline reichen.

Verschiedene Techniken sind für erfolgreiches CD nützlich: sicherstellen, dass Produkte (zumindest theoretisch) jederzeit veröffentlicht werden können; möglichst kleine Veröffentlichungszyklen, um eine neue Priorisierung zu ermöglichen; Pläne an das Feedback anpassen; Veröffentlichungen in kleinen, handhabbaren Teilen. Die größten Probleme klassischer „Wasserfall-Projekte“ traten immerhin dann auf, wenn Veröffentlichungen nur alle zwölf oder 24 Monate stattfanden. Diese deutlich längeren Release-Zyklen bedeuteten häufig, dass die neuen Versionen extrem viele Veränderungen beinhalteten. Es war somit fast unmöglich zu sagen, welche Teile funktionierten und welche nicht. Die Chancen auf Erfolg waren gering.

Ein extremes Beispiel von CD sind große Webanbieter wie Amazon oder Facebook, die mehrmals pro Stunde (oder sogar pro Minute) Updates in die Produktion geben. Dies mag nicht unbedingt ein für viele Unternehmen gewolltes (oder durchführbares) Muster sein, aber für etliche Firmen sind sogar wöchentliche oder gar monatliche Updates eine Herausforderung. Wenn Release-Zyklen nach Möglichkeit sehr kurz gehalten werden sollen, wird klar, weshalb DevOps einen großen Teil zum Erfolg von CD beitragen kann. Das Ziel von DevOps ist es, diese „Bremsschwellen“, die schon immer den Veränderungsfluss zwischen Entwickler und Endverbraucher gestört und damit eine erfolgreiche Einbindung von CD gehemmt haben, abzuschaffen.

Erfolgreicher Einsatz von DevOps und Continuous Delivery

So weit, so gut – jedenfalls theoretisch: Diese Erkenntnisse nun in ein erfolgreiches Deployment zu verwandeln, ist nicht ganz so leicht. Es ist in jedem Fall ein guter Start, eine angemessene Toolchain aufzubauen. Auch wichtig ist es, einen wohlverstandenen Prozess zu entwickeln. Der vielleicht wichtigste Faktor ist vielleicht jedoch, sich die richtige Kultur anzueignen. Es gibt zwar keine allgemeingültige Lösung dafür, die kulturell bedingten Probleme zwischen Entwicklern und IT-Operatoren zu beseitigen. Allerdings sind Vertrauen und Transparenz die wichtigsten Schlüssel zum Erfolg. Es ist wichtig, dass Entwickler die Bedürfnisse der Operations-Teams kennen; Operations-Teams wiederum sollten verstehen was die Entwickler tun und ihnen dabei helfen, einfach zu verwaltende und bereitzustellende Applikationen zu entwickeln.

Das bedeutet nicht, dass die Wahl der richtigen Werkzeuge nicht wichtig ist: Bereits vorhandene können die erfolgreiche Übernahme von DevOps und CD erschweren oder gar verhindern, weshalb sich eine Neubewertung der bestehender Tools und Prozesse anbieten. Unabhängig davon, welche Methoden zum Einsatz kommen, haben sich über die Jahre einige Best Practices herauskristallisiert. Hier sind meine Top Fünf:

1. Über den Code hinaus denken

Alle Assets müssen als Teil des Projektes angesehen und entsprechend kontrolliert werden. Das umfasst auch Artwork, Design, Dokumentation, Konfigurationsskripte, Binaries und so weiter. Vergisst man diese Bereiche besteht das Risiko, dass man unvollständige oder inkonsistente Programme veröffentlicht, die im Endeffekt zur Unzufriedenheit des Nutzers führen.

2. Automatisieren

Prozessautomatisierung hilft dabei, das Fehlerrisiko zu senken und verringert die Abhängigkeit von Einzelpersonen. Natürlich kann nicht jeder Aspekt eines Projektes automatisiert werden, doch je mehr Automatisierung möglich ist, desto größer werden Berechenbarkeit und Wiederholbarkeit. Dies wiederum sorgt für einen schnelleren und produktiveren Entwicklungsprozess.

3. Intelligent testen

Es ist wichtig, automatisierte Tests als Teil der Continuous-Integration-Pipeline einzuplanen. Eine gute Planung ist notwendig, damit eine adäquate Testabdeckung möglich ist, ohne gleichzeitig schnelle Releases unmöglich zu machen. Die Auswahl der richtigen Werkzeuge und der entsprechenden Harware sind zwar wichtige Faktoren, gleiches gilt allerdings auch für das exakte Abwägen, wie viele Testläufe für das Projekt „richtig“ sind. Leider gibt es dafür keine simple Lösung, vielmehr muss die Frage im Kontext des jeweiligen Projekts erörtert werden. Das Feedback der Tests muss jedenfalls möglichst schnell an die Entwickler zurückgesendet werden. Man sollte auch nie vergessen, sich zu überlegen, wie man Sicherheitstests in den allgemeinen Testplan integrieren und die Sicherheitsanforderungen von Anfang an in die Projektplanung einfügen kann.

4. Alles versionieren

Im Herzen einer guten Verbindung von DevOps und CD liegt eine einfaches, hochtransparentes Repository aller Assets und Artefakte. Das bedeutet nicht nur, dass die Beteiligten sehen was jetzt gerade passiert (und wer was tut), sondern auch eine Historie, in der sämtliche Schritte und Verantwortlichkeiten von der Entwicklung bis zur Lieferung hinterlegt sind. Außerdem sollte die Möglichkeit bestehen, den Rollback auf eine frühere Version durchführen zu können.

Eine hohe Trackingqualität bedeutet, dass sämtliche Änderungen und gegenseitige Abhängigkeiten als ein Gesamtpaket veröffentlicht werden. Dies erleichtert das Debugging signifikant. Wenn es darum geht, ein Versionskontrollsystem dafür auszuwählen, sollte man darauf achten, dass es mit allen nötigen Artefakttypen umgehen und bei einem Wachstum der Produkte oder der verteilten Entwicklungsumgebung entsprechend sakliert werden kann. Es sollte zudem schnell genug sein, schnelle und regelmäßige CI-Builds anzufertigen und sie zu prüfen.

Auch die Sicherheit sollte man nicht aus den Augen verlieren: Immerhin können der Quellcode bzw. die anderen Assets das wertvollste geistige Eigentum des Unternehmens darstellen.
Viele der verfügbaren Versionskontrollsysteme verfügen nicht über diese Fähigkeiten und sind daher, zumindest im Zusammenhang von DevOps und CD, nicht geeignet.

5. Tools und Kultur müssen vereinbar sein

Tools, wie z. B. für die Versionskontrolle, spielen zwar eine immens wichtige Rolle. Aber entscheidend ist eine entsprechende kulturelle Haltung. Neben der Unterstützung durch das Management verfügen erfolgreiche Anwender von CD und DevOps auch über interne „Champions“, die ihren Mitarbeitern helfen und sie schulen.

DevOps und Continuous Delivery bergen beide großes Potential für die Verbesserung oder gar Transformation von Produktions- und Release-Zyklen. Um sicherzustellen, dass dieses Versprechen vom ersten Tag an in vorzeigbaren Verbesserungen mündet, muss ein entsprechendes Fundament aus Tools, Prozessen und Unternehmenskultur gegossen werden.

Aufmacherbild: What if we don’t change at all … von Shutterstock / Urheberrecht: Cartoonresource

Geschrieben von
Mark Warren

Mark Warren is Product Marketing Director for Perforce Software. The version management and code collaboration portfolio from Perforce Software is used by thousands of customers, including Salesforce.com, NVIDIA, Samsung, and EA Games. Mark has over two decades’ experience in the software industry with roles as a provider and consumer of advanced development tools.

Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: