Docker – das Tool für DevOps in der Praxis (Teil 1): Einführung in DevOps

docker-iconDie „DevOps“-Bewegung stößt auf immer größeres Interesse[1] und verbreitet sich zunehmend in der Entwicklung und dem Betrieb von IT-Systemen. Die Software Docker ist dafür ein wichtiges Werkzeug, welches seit etwa 1,5 Jahren einen großen Hype in vielen Publikationen und auf Konferenzen ausgelöst hat. Auch ich beschäftige mich seit Mitte 2014 mit Docker und konnte damit in mehreren Projekten Erfahrung sammeln. Diese Artikelserie soll den Zusammenhang zwischen DevOps und Docker aufzeigen, Docker bewerten und von praktischen Erfahrungen bei doubleSlash  berichten. Dieser Artikel wird näher auf den Begriff „DevOps“ eingehen.

Was ist DevOps?

DevOps setzt sich aus „Development“ und „Operation“ zusammen. Mit dem Begriff  wird häufig ein Maßnahmenpaket zur Problemreduzierung beim Übergang einer Software von der Entwicklung in den Betrieb beschrieben. Die Definition des Begriffs DevOps ist jedoch noch nicht gänzlich abgeschlossen, weshalb beispielsweise Delphix in ihrer Studie[2] eine Schärfung des Begriffs versucht zu erreichen. In der klassischen Vorgehensweise wird Software von einem Entwicklerteam implementiert und nach einem Release dem IT-Betrieb für das Deployment auf dem Produktionssystem übergeben. Bei auftretenden Fehlern kann hier leicht die zeitnahe Problemlösung aus dem Fokus geraten und stattdessen die Diskussion über die Verantwortlichkeit einen großen Raum einnehmen. Wie Frank Müller formuliert, tritt hier das Dilemma auf, dass die Entwickler für Veränderung und der Betrieb für die Stabilität bezahlt werden[3]. Mit DevOps dagegen soll der beste Kompromiss dieser beiden Ziele gefunden und die gemeinsame Verantwortung für die laufende Software gestärkt werden. Bei einer konsequenten Umsetzung bedeutet das, dass  Abteilungsgrenzen zwischen Entwicklung und Betrieb aufgehoben werden müssen.

Abbildung 1 - DevOps Zyklus (https://www.doubleslash.de/leistungen/softwareentwicklung-von-a-z/)
Abbildung 1 – DevOps Zyklus (https://www.doubleslash.de/leistungen/softwareentwicklung-von-a-z/)

 

Ziele von DevOps

Ziele von DevOps sind unter anderem:

  • Kurze Lieferzyklen
  • schnelle Änderbarkeit der Funktionalität
  • höhere Qualität in den Auslieferungen

Studien wie die von Puppet Labs[4] sollen zeigen, dass sich sogar die Produktivität durch die Einführung von DevOps erhöht.

Es gibt jedoch auch kritische Stimmen zu DevOps, wie der Blogger und Software-Architekt Steven Lott[5], der die Vorgehensweisen von DevOps eher als Symptombekämpfung für die immer weiter zunehmende Komplexität der Software-Architekturen sieht. Stattdessen sollte aus seiner Sicht versucht werden, diese Komplexität zu reduzieren und den Entwicklern wieder mehr Zeit zum Entwickeln statt zum Deployment zu geben. Die Erfahrung aus unserem Projektalltag bei doubleSlash zeigen aber,  dass dies eine Wunschvorstellung bleiben wird. Die IT-Landschaften unserer Kunden inklusive Legacy-Systeme werden immer heterogener und komplexer. Um dies noch in den Griff zu bekommen, müssen tatsächlich wie bei DevOps propagiert die Softwareentwickler und der Betrieb eng zusammenarbeiten oder verschmelzen und Werkzeuge zur Automatisierung eingeführt werden.

Der nächste Artikel dieser Serie wird näher auf die Software Docker eingehen und den Zusammenhang mit DevOps herstellen. Wer direkt in den dritten Teil unserer Serie springen möchte, wagt damit einen Blick in die Zukunft von Docker.


[1] Google Trends
[2]  DevOps ist, was DevOps tut – Neue Studie zum State of DevOps 2015 (New Research Reveals Data Issues Represent the Biggest Challenge to DevOps Initiatives)
[3] Das DevOps-Dilemma: “Entwickler werden für Veränderung, Operator für Stabilität bezahlt
[4] https://puppetlabs.com/2015-devops-report (Studie enthüllt: DevOps ist Garant für hohe Produktivität)
[5] It appears that DevOps may be more symptom than solution (DevOps: Symptom oder Lösung des Problems?)

 

doubleSlash-Teaser-Blog_Programmierung

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*