<i>THE</i> <i>G-BLOG</i>
<i>THE</i> <i>G-BLOG</i>

THE G-BLOG

Was ist DevOps?



Quelle: mindsquare.de

Prozessverbesserung mit DevOps


DevOps ist ein Kunstwort, das sich aus den Begriffen ‚development‘ (Dev) und ‚operations‘ (Ops) zusammensetzt. Somit vereint DevOps zwei organisatorisch voneinander getrennte IT-Bereiche: Die Softwareentwicklung (development) und den IT-Betrieb (operations).

Das Ziel von DevOps ist es, diese organisatorischen Trennungen zu respektieren und zu wahren, aber gleichzeitig durch Anpassungen der Prozesse die Entwicklung der Software effizienter und zuverlässiger zu gestalten. Zudem wird in diesem Ansatz der Fachbereich direkt integriert, wodurch im Zusammenhang mit agilen Methoden schnellere Abnahmen und Auslieferungen ermöglicht werden können. DevOps ist demnach ein Prozessverbesserungs-Ansatz, der den gesamten Prozess die Softwareentwicklung betreffend optimieren soll und somit dem gesamten Geschäft schnelle und effiziente Services anbietet.

Wieso DevOps?


Die DevOps-Bewegung ist aus der Marktanforderung heraus entstanden, die Produktqualität zu erhöhen und Projekte liefergetreu fertigzustellen. Die Kundenerwartungen werden immer anspruchsvoller und Unternehmen stehen zusehends unter Zugzwang. Während die Entwicklung jedoch auf Agilität setzt und eine ständige Optimierung der bestehenden Systeme anstrebt, beruht der Betrieb auf Stabilität. Der Betrieb verfolgt das Ziel, möglichst stabile Software, Infrastrukturen und Systemlandschaften zu betreuen. Die Teams blieben somit isoliert und befassten sich nur mit ihren eigenen Zuständigkeitsbereichen und – natürlich – den eigenen Zielen und Werten.

So galt es, die besten Seiten der Softwareentwicklung und des IT-Betriebs zu vereinen: Die Kombination aus beiden Bereichen soll einen Prozessverbesserungsansatz ermöglichen, indem alle Beteiligten eine effektivere und effizientere Zusammenarbeit anstreben. In einem DevOps-Projekt arbeiten die Bereiche zusammen daran, schnellstmöglich eine stabile und hochwertige Software agil umzusetzen. Angefangen bei der Konzeptionierung über die Entwicklung bis hin zum Go-live beim Anwender. DevOps setzt dabei stark auf Automatisierung, um die Liefergeschwindigkeit und Produktqualität zu erhöhen.

Der innovative Ansatz wird von integrierten IT-Teams umgesetzt, die die Verantwortung sowohl für die Entwicklung, als auch für den Betrieb von Applikationen übernehmen. Das Team unterstützt somit den gesamten Software Lifecycle. Ganz nach dem Credo: „You build it, you ship it, you run it.“

DevOps und Agilität


Agile Methoden subsummieren verschiedene Vorgehensmodelle in der Softwareentwicklung. Primär fokussieren die Modelle zwei Themen: Die Zusammenarbeit im Fachbereich IT sowie die IT-interne Projektarbeit der Softwareentwicklung. Sprich: Das Aufnehmen von Anforderungen und das Tracken der Umsetzung ebendieser.

IT-Teams liefern in kleinen Inkrementen Softwareanpassungen – und dies in enger Abstimmung mit den Anwendern. Der Auftraggeber hat hierdurch bessere Steuerungsmöglichkeiten in die IT hinein und der Auftragnehmer liefert vermehrt entsprechend der Anforderungen. Ergebnisse werden nicht erst nach Monaten, sondern in der Regel innerhalb von einigen Tagen bis Wochen sichtbar. SCRUM ist ein gängiges Beispiel für agile Vorgehensweisen in der Praxis. Üblicherweise beschränken sich agile Modelle wie SCRUM auf die reine Softwareentwicklung. DevOps denkt die agile Methode weiter und bezieht diese auch auf den Betrieb der Software. Somit wird hier der gesamte Unternehmens-Stack aufgegriffen: Governance, Prozesse, Anwendungen und die Infrastruktur.

Die agile Methode fokussiert sich dabei auf das Spannungsfeld „Anforderungen vs. Machbarkeit“. Die Anforderungen an das Produkt werden zuvor definiert und in kleinen Sprints in Funktionalität umgesetzt, wodurch die Machbarkeit der Anforderung getestet wird. Während der Build-Phase setzt DevOps ein. Die Darstellung macht deutlich, dass DevOps auf den agilen Part nicht angewiesen ist, aber durchaus von ihm profitieren kann. Der Mehrwert für das Unternehmen entsteht dadurch, dass die Integration des Fachbereichs in das IT-Projekt die Liefertreue sowie die Liefergeschwindigkeit erhöhen kann.

DevOps fokussiert also das Spannungsfeld „Agilität vs. Stabilität“ und strebt eine Balance beider Parameter in der Build- sowie in der Run-Phase an. Die Arbeitsebenen Governance, Prozesse, Anwendungen und Infrastruktur werden durch-gehend mittels beider Methoden bedient.

Produktorientierung


Um die mit DevOps verfolgten Ziele erreichen zu können, müssen allerdings viel mehr Aspekte betrachtet werden, da DevOps den gesamten Produktlebenszyklus betrachtet. Im Fokus steht eine starke Produktorientierung. Alle an der Entwicklung, Weiterentwicklung und an der Nutzung eines Produkts beteiligten Personen werden im Rahmen von DevOps betrachtet. So werden nicht nur Entwicklungsteams unter die Lupe genommen.

Stattdessen betrachten wir bei der Umsetzung einer DevOps-Einführung oder eines DevOps-Projekts viele Bereiche. Neben den Entwicklern werden auch Mitarbeiter von IT Operations, aus dem Fachbereich, aus den Testabteilungen und bei Bedarf noch weitere Kollegen hinzugezogen.

Das Zusammenarbeitsmodell all dieser Bereiche wird analysiert. In jedem Bereich kann eine Optimierung umgesetzt werden, die dazu beiträgt, den mit DevOps verfolgten Zielen näher zu kommen.

Die 4 Komponenten in DevOps


DevOps ist als eine Unternehmenskultur zu verstehen, die einen ganzheitlichen Ansatz verfolgt. Um die Ziele effizientere Zusammenarbeit und bessere Qualität erreichen zu können, sind die vier Komponenten Teams, Tools, Methoden sowie Transparenz und Stabilität Aspekte von DevOps:

Teams


Wenn Unternehmen neue Methoden einführen, richtet sich diese Umstellung in erster Linie an die Menschen, die diese Methoden in der Praxis auch anwenden müssen. DevOps bedeutet eine organisatorische Transformation, die von den Anwendern akzeptiert und gelebt werden muss. Auf diesem Weg müssen die Mitarbeiter begleitet werden, was Unternehmen vor grosse Herausforderungen stellt: Die unterschiedlichen Teams sind fest in ihren individuellen Strukturen und Prozessen verankert, haben ihre Gewohnheiten und ihre ganz eigene Kommunikationskultur. DevOps vereint nun diese individuellen Kulturen und erfordert mehr Agilität, Transparenz und schnellere Reaktionszeiten. Die Mitarbeiter bilden dabei den Kern.

Der Anspruch von DevOps ist also, dass alle Projektbeteiligten sich gegenseitig unterstützen und mit ihren Fähigkeiten und ihrem Wissen das komplette Team bereichern. Das Wissen soll demnach nicht in den einzelnen Bereichen „gehortet“ werden – Kopfmonopole werden gemieden.

Neben den Hauptakteuren Softwareentwicklung und IT-Betrieb können auch Mitarbeiter aus Fachbereichen, aus der Test-Abteilung und dem Support das DevOps-Team mit ihrem Fachwissen unterstützen. Durch diese integrierten Teams ergeben sich die Vorteile, dass die notwendige Expertise direkt im Team vorhanden ist und nicht erst umständlich erfragt werden muss – aus der räumlichen Nähe resultieren schnellere Kommunikationswege. Zudem können benötigte Freigaben direkt aus dem Team herausgegeben werden.

Tools


DevOps selbst ist kein Werkzeug, jedoch bilden unterschiedliche Software-Tools wichtige Bausteine zur Automatisierung und Implementierung der Produkte. Die Infrastruktur der Kunden bietet häufig schon Grundvoraussetzungen, um den Ansatz problemlos durchführen zu können. Der Einsatz der DevOps Tools variiert dabei von Kunde zu Kunde umso stärker: Datenschutzanforderungen sorgen dafür, dass ein Teil der Infrastruktur direkt beim Kunden gehostet werden muss, wieder andere Applikationen/Komponenten können in die Cloud ausgelagert werden, was den hybriden Ansatz beschreibt: Die Vermischung von Cloud und On-Premise. Die verstärkte Integration von Anforderungs- und Projektmanagement-, Entwicklungs- und Build-Deployment- sowie Test-Tools ermöglicht eine deutliche Verkürzung der Time-to-Market. Die gesamte Entwicklung bis hin zum produktiven Einsatz des Produktes profitiert von dieser Tool-Chain.

Neben den Bereichen Entwicklung und Betrieb können Maschinen auch im Projekt-management unterstützen. Das Kanban-Board beispielsweise, eine Projektmanagement-Methode zur transparenten Darstellung des Projektverlaufs, kann digitalisiert und in einer Software-Lösung implementiert werden.

Open-Source-Lösungen wie Jenkins oder Docker für die Build-Phase oder das Container-Management können sich nahtlos in das DevOps-Projekt einfügen und bilden eine zusammenhängende Tool-Chain.

Methoden


Wie bereits erklärt, vereint DevOps die agilen Methoden der Entwicklung mit den stabilen Methoden des Betriebs. Somit setzt DevOps methodisch sowohl auf technologischer als auch auf prozessualer Ebene an und stellt dabei klassische ITIL-Prozesse auf die Probe. ITIL beschreibt eine strukturierte Prozesssammlung von Best Practices für Service Management in der IT. ITIL gehört mittlerweile zum Tagesgeschäft vieler IT-Organisationen, die die bewährten Standardverfahren anwenden, um wirtschaftlich und qualitätsbewusst arbeiten zu können. Nun sieht das innovative DevOps-Konzept ein „ausbrechen“ aus standardisierten Verfahren vor, was Unternehmen mit stabilen Prozessframeworks vor Herausforderungen stellt.

Auf technologischer Ebene bietet DevOps Entwicklungs-, Codeverwaltungs-, Test- und Deployment-Methoden an:

  • ƒContinuous Integration (CI)
  • Continuous Delivery
  • Continuous Deployment
  • ƒIntegration in vorhandene Prozesse

Transparenz und Stabilität


Neben der Messung der Projektqualität sind insbesondere auch technische Messungen elementar. Die Messung der Infrastruktur untergliedert sich in die Messung der Entwicklung durch automatisierte Tests und in die Messung des Betriebs.

Automatisierte Tests können Fehler in der Oberfläche messen – die Verfügbarkeit lässt sich in Last-Performance-Tests ermitteln. Messungen im Betrieb laufen über ein Monitoring der Verfügbarkeit von Applikationen, der Infrastruktur und dem Monitoring von Business Services. Hier wird getestet, ob die Funktionalitäten der Software ohne Einschränkungen zur Verfügung stehen. Anhand dieser Messungen kann das Team eine Roadmap für das nächste Projekt erstellen und die Erkenntnisse aus den Messungen direkt anwenden. Open-Source-Tools sind geeignete Lösungen zum Monitoring komplexer IT-Infrastrukturen, die sich nahtlos in das DevOps-Projekt eingliedern lassen.

Effiziente Messungen sorgen für eine skalierbare IT-Infrastruktur und transparente Projektfortschritte. DevOps setzt zum einen auf das klassische Projektmanagement-Reporting – agil oder stabil – und zum anderen auf Messungsansätze in der Infrastruktur. Das Projektmanagement-Reporting variiert dabei je nach gewählter PM-Methode, DevOps kann sich flexibel anpassen. Neben der Messung der Projektqualität sind insbesondere auch technische Messungen elementar. Die Messung der Infrastruktur untergliedert sich in die Messung der Entwicklung durch automatisierte Tests und in die Messung des Betriebs über ein automatisiertes Monitoring der Applikation und Business Services.

Vorteile von DevOps


Zusammenarbeit und Vertrauen, intelligenteres und transparenteres Arbeiten, schnellere Releases, kürzere Problemlösungszeiten und ein besseres Management unvorhersehbarer Aufgaben sind die elementaren Vorteile von DevOps. Teams, die die DevOps-Methode anwenden, können durch Automatisierung und standardisierte Tools ihre Produktivität steigern und problemloser zu häufigeren Releases gelangen. Durch eine vollständige Transparenz verkürzt sich der Feedbackkreislauf und Probleme sowie Aufgaben können schneller gelöst und erledigt werden. Mit etablierten Prozessen und einer klaren Priorisierung, die sich durch die agile Methode flexibel an den Projektverlauf anpassen lässt, können die Teams ungeplante Aufgaben besser managen und ihre geplanten Aufgaben nicht aus den Augen verlieren.

Weitere Vorteile sind:
  • ƒSchnellere Time-to-Market
  • eine hohe Liefertreue
  • ƒdie Erwartungen des Unternehmens können passgenau erfüllt werden
  • das Endprodukt erhält einen verbesserten Support

Nachteile von DevOps


Ein Nachteil ist sicherlich, dass standardisierte Herangehensweisen (ITIL) in vielen IT-Unternehmen fest verankert sind und DevOps zunächst ein Umdenken der Mitarbeiter erfordert. Alte Strukturen werden gebrochen und „müssen“ den DevOps-Methoden Platz machen. Die beiden Bereiche IT-Betrieb und Softwareentwicklung stehen mit der Einführung von DevOps vor der Herausforderung, sich auf die „fremden“ Prozesse einzulassen und diese anzunehmen. Mitarbeiter müssen die Bereitschaft zeigen, den Umgang mit einigen neuen DevOps-Tools zu erlernen.

Nichtsdestotrotz bleibt die Tatsache, dass DevOps aus dem Wunsch heraus entstanden ist, Softwareentwicklungen schneller liefern und somit auf dem Markt profitabel bleiben zu können. Das Zusammenfügen der Softwareentwicklung und des IT-Betriebs ist ein strategischer Ansatz, um Prozesse rund um die Softwareentwicklung zu beschleunigen.