“IT-Development” und “IT-Operations” kombiniert
Softwareentwicklung und der IT-Betrieb sind eigentlich grundverschiedene Bereiche. DevOps folgt dem Ansatz, diese Bereiche zusammenzurücken. Beabsichtigt wird eine beschleunigte Entwicklung mit einem qualitativ hochwertigen Produkt als Endergebnis.
Was versteht man unter DevOps?
Unter dem Begriff DevOps versteht man einen Prozessverbesserungsansatz. Er kommt vor allem in der Systemadministration und in der Softwareentwicklung zur Anwendung. DevOps setzt sich aus den Wörtern “Development” und “IT Operations” zusammen. Ziel dieses Ansatzes ist ganz klar eine effizientere und effektivere Zusammenarbeit in den Bereichen Development, IT Operations und Qualitätssicherung.
Das wird durch den Einsatz spezieller Anreize, Werkzeuge und Prozesse erreicht. Die Geschwindigkeit der Softwareentwicklung und die Kooperation zwischen den einzelnen Teams soll durch optimierte Zusammenarbeit verbessert werden. Es gibt aber mittlerweile verschiedene Interpretationen für den Begriff DevOps. Die allgemeine Philosophie sieht aber eine enge Verzahnung der Bereiche Softwareentwicklung und dem IT-Betrieb hinsichtlich Kultur, Praxis und ihrer Werkzeuge.
Auf etwaige Veränderungen im Entwicklungsprozess soll durch diese Praxis möglichst schnell reagiert werden können. Damit wird also der Ansatz einer agilen Softwareentwicklung unterstützt. Die Umsetzung von DevOps setzt einen Wandel in der Unternehmenskultur voraus, denn das Team muss bezüglich der Art wie es programmiert auch bereit und in der Lage sein, diese agile Softwareentwicklung umzusetzen.
Der Prozessverbesserungsansatz sollte von Entwicklern, Managern, Administratoren und Testern als bereichsübergreifende Zusammenarbeit aufgefasst werden. Denn auch der Kunde sollte unter diesen Voraussetzungen in den Entwicklungsprozess mit einbezogen werden.
Die Ansätze von DevOps
Bei der Softwareentwicklung folgt man normalerweise einem bestimmten Vorgehensmodell. Bei der agilen Softwareentwicklung bedient man sich dabei z.B. der Aspekte des RAD-Models. Das Ziel ist klar, der Entwicklungsprozess soll beschleunigt werden. Auf veränderte Anforderungen soll zudem durch eine schnellere Anpassung und mehr Flexibilität reagiert werden können. Um Fehler rasch zu finden und zu beheben wird die Entwicklung und Ausführung des Codes eng miteinander kombiniert.
Der Ansatz der agilen Softwareentwicklung kombiniert DevOps-Prozesse und Methoden mit zusätzlichen Prinzipien. Das kann beispielsweise das System Management aus dem Verantwortungsbereich des IT-Betriebs sein. Mit der Software soll als Ergebnis eines äußerst agilen Gesamtkonzepts Continuous Delivery möglich sein. Unter Continuous Delivery verstehen wir kontinuierliches Ausliefern von Softwareversionen. Diese zeichnen sich trotz kurzer Entwicklungszeit durch eine hohe Qualität aus.
Vergleich von DevOps Tools
DevOps Tools sind viele auf dem Markt. Was für Euch passt, müsst Ihr selbst entscheiden. Einige Beispiele:
AWS X-Ray
- Mit dem Tool testest und analysierst Du Deine Anwendungen und untersuchst sie auf Fehler.
- Du lernst dabei Deine Anwendungen detaillierter zu verstehen.
- Dadurch lassen sich Fehler leichter identifizieren.
AWS CodeDeploy
- IT-Service, welcher die Codebereitstellung vereinfacht und automatisiert.
- So sparst Du Zeit bei der Freigabe neuer Funktionen.
- Vermeidung von Ausfallzeiten bei der Codebereitstellung.
HP Quality Center
- Diese Test-Plattform unterstützt Dich beim Testen von Software.
- Das Tool ist für alle Phasen des Software-Lebenszyklus geeignet.
- Deine Test-Prozesse werden standardisiert und Bugs schnell behoben.
- Dadurch wird die Qualität verbessert und Kosten werden minimiert.
IBM Rational
- Gute Unterstützung bei der Softwareentwicklung.
- Hilft Dir dabei, Deine Entwicklungsverfahren zu optimieren und weiter zu entwickeln.
- Damit testest Du Deine Webseiten und Anwendungen und automatisierst relevante Test-Prozesse.
- Produkte können schneller veröffentlicht werden.
- Überwacht die Software während des gesamten Lebenszyklus.
Wie setzt man DevOps in der Praxis um?
Es braucht verschiedene Maßnahmen um DevOps mit Erfolg im Unternehmen umzusetzen. Empfohlen wird das Erstellen von Business Cases. Die Notwendigkeit des Prozessverbesserungsansatzes wird durch diese Business Cases belegt. Die Akzeptanz beim Management und beim Anwender wird darüber hinaus mit erfolgreichen Business Cases gesteigert. Es ist wichtig in allen am Entwicklungsprozess beteiligten Teams eine Kultur der Zusammenarbeit zu etablieren. Durch die Nutzung von Technologien zur Automatisierung wird dabei die Entwicklung der Software unterstützt. Der Erfolg von Dev-Team und Ops-Team sollte messbar sein. Dabei hilft die Verwendung einer gemeinsamen Metrik.
Vorteile von DevOps
Die Vorteile liegen auf der Hand. Elementar dabei sind Zusammenarbeit und Vertrauen. Gearbeitet wird intelligenter und transparenter, was zu schnelleren Releases, kürzeren Problemlösungszeiten und einem besseren Management bei Unvorhersehbarem führt. Zudem gelangt man durch standardisierte Tools zu häufigeren Releases. Die Transparenz verkürzt den Feedbackkreislauf bei Problemen. Dadurch können schneller gelöst und erledigt werden. Durch die agile Methode lassen sich etablierte Prozesse flexibel an den Projektverlauf anpassen. Ungeplante Aufgaben werden so von den Teams besser gemanagt, ohne die geplanten Aufgaben aus den Augen zu verlieren.
Agile Methoden durch DevOps
Jedes Unternehmen bemüht sich, hochqualifizierte IT-Fachkräfte für die Softwareentwicklung, den IT-Betrieb und das Qualitätsmanagement für sich zu gewinnen. Auch wenn die IT-Spezialisten – Entwickler, Tester, IT-Manager, System-/Netzwerk-/Datenbank-Administratoren – ihre Aufgaben professionell und verantwortungsvoll ausführen und die gestellten Anforderungen korrekt umsetzen, kommt es häufig zu zusätzlichem unproduktivem Änderungsaufwand, wenn Probleme erst in späteren Phasen des Produktlebenszyklus identifiziert werden. Zu solchen Problemen zählen z.B. betriebsspezifische Anforderungen oder Veränderungen der IT-Infrastruktur, die bei der Entwicklung des Softwareprodukts nicht berücksichtigt worden sind.
Der Zeit- und Kostenaufwand für nachträgliche Beseitigung von Qualitätsmängel sind zu hoch, weil Codeänderungen eines fertigen Softwareprodukts mehrere erneute Anläufe und wiederholte Prozesse für die Tests, Integration, Deployment und Qualitätssicherung erfordern. Auch beim IT-Betrieb sucht man nach neuen Methoden, um die Kosten reduzieren zu können und die IT-Infrastrukturlösungen für komplexe heterogene Umgebungen schnell bereitzustellen und effizient, plattformübergreifend und automatisiert zu managen. Solche Aufgaben kann man mit alten Tools und Methoden nur mit einem großen Aufwand bewältigen. Zur Verkürzung des Entwicklungszyklus und Verbesserung der Organisation und Zusammenarbeit der Teams sind agile abteilungs- und plattformübergreifende Ansätze unerlässlich. Methoden und Tools von Cross-Platform DevOps unterstützen eine flexible Organisation und bieten einen geeigneten plattformübergreifenden Ansatz.
Was versteht man unter Cross-Platform DevOps?
Klassische Organisationsstrukturen sind entweder prozess- oder projektorientiert und sind nicht flexibel genug, um sich schnell an veränderte Betriebs-, Kunden- und Marktanforderungen anzupassen. Der Begriff DevOps (Development & Operations) ist umfassend und bedeutet eine neue Unternehmenskultur für agile, effiziente und koordinierte Zusammenarbeit der Softwareentwicklung, des Qualitätsmanagements und des IT-Betriebs im Lebenszyklus der eingesetzten Systeme, Softwareprodukte und Lösungen.
Eine DevOps-Methode definiert neu und gestaltet flexibel die folgenden Bereiche und IT-Prozesse eines Unternehmens:
- Entwicklung, Bereitstellung und Management Software-basierter Lösungen
- Zuständigkeiten und Zusammenarbeit der Teams (Unternehmensbereiche, Abteilungen, Gruppen)
- Organisation, Methoden, Konzepte, Vorgehensmodelle und Praktiken der Softwareentwicklung, der Qualitätssicherung und des IT-Betriebs
Cross-Platform DevOps ist ein Konzept des Infrastructure Engineering, wenn die bewerteten DevOps-Methoden nicht nur für den Software-Lebenszyklus (Life Cycle) sondern auch zur Standardisierung, Harmonisierung und Vereinheitlichung von Deployments in heterogenen IT-Umgebungen eingesetzt werden. So kann die Infrastruktur plattformübergreifend, automatisiert, konsistent und schnell aufgebaut werden.
Das Konzept und die Praktiken von Cross-Platform DevOps bezeichnen eine nächste Generation der IT-Industrie. DevOps erneuert und verändert radikal die Art und Weise, wie die Teams zusammenarbeiten und ihre Dienstleistungen (Services) erbringen. DevOps definiert die Zusammenarbeit der IT-Fachkräfte neu und dient als eine treibende Kraft für ein effizientes Infrastructure Engineering und IT-Servicemanagement. Verschiedene Aspekte – Unternehmenskultur, Prozesse, Methoden, Tools, Organisation, Automatisierung, kontinuierliche Verbesserung von Produkten, Services und Technologien – werden mit Hilfe von plattformübergreifenden DevOps vereint und vereinheitlicht.
Spezielle Tools für Cross-Platform DevOps dienen für plattformübergreifende agile Entwicklung, Administration, Monitoring, Qualitätssicherung und Management. Neben den klassischen Aufgaben wie Code-Entwicklung, Testing, Integration, Monitoring und Optimierung liegt die wichtigste Aufgabe von DevOps in der Continuous Integration (CI) und Continuous Delivery (CD) zur Automatisierung der Deployment-Pipeline.
Nicht nur die Rollen und Zuständigkeiten werden mit DevOps neu definiert, erweitert und verändert. Auch die Prozesse und Werkzeuge werden entsprechend angepasst, damit die agilen gemeinsamen Methoden der Entwicklung und des Betriebs im Rahmen einer einheitlichen leistungsstarken IT-Organisation optimal funktionieren.
DevOps Prinzipien
Die folgenden sechs Prinzipien sollst Du bei Umsetzung von DevOps-Methoden beachten:
Prinzip 1: Kundenorientiertes Handeln
Die Produktqualität und Anforderungen sind im Lebenszyklus mit der Kundenzufriedenheit und den Kundenerfahrungen (Customer Experience, CX) gekoppelt. Dabei werden das Nutzungsverhalten analysiert und das Feedback kontinuierlich ausgewertet.
Prinzip 2: Zielorientiertes Handeln
Verzicht auf prozessorientierte Wasserfall- und V-Modelle, bei denen eine Organisationseinheit oder ein Teammitglied nur für eine bestimmte Rolle/Funktion/Prozessphase der Wertschöpfungskette verantwortlich ist, ohne das Gesamtbild und die möglichen Schwachstellen, Engpässe und Fehlerquellen zu überblicken. Verzicht auf ziellose Aktivitäten und überflüssige Kommunikationen.
Prinzip 3: End-to-End Verantwortung
Die Verantwortung der Entwickler endet nicht mit der Übergabe der Software in die Produktion. Von der Konzeption bis zum Deployment und Betrieb sind alle Teams für die Qualität verantwortlich. Über den gesamten Produktlebenszyklus hinweg handeln die Teams proaktiv und erbringen zusammen die Serviceleistungen zur Verbesserung der Produktqualität und Produkteigenschaften.
Prinzip 4: Funktionsübergreifende flexible Teams und plattformübergreifende (cross-platform) Infrastrukturlösungen
Agile DevOps-Methoden erfordern eine flexible Organisation, umfangreiche Fachkenntnisse sowie Wissens- und Erfahrungsaustausch. Spezialisierung nur auf einzelnen Aufgaben wie Anforderungsanalyse, Design, Entwicklung, Testen oder Programmierung reicht nicht aus. Teammitglieder müssen Ihre Kompetenzen zu Allround-Profilen erweitern und die agilen Aufgaben team-, funktions- und plattformübergreifend wahrnehmen.
Spezielle Cross-Platform DevOps-Tools unterstützen die Teammitglieder bei Entwicklung und Management von multiplattformfähigen Softwareprodukten und Services. Es werden mehrere Betriebssysteme (Windows, Linux, MacOS, iOS u.a.) und mehrere Datenbanken (Oracle, PostgreSQL, MySQL u.a.) unterstützt, so dass eine einmal entwickelte Lösung auch auf andere Plattformen, Systeme oder Datenbanken ohne großen Aufwand portierbar ist. Nach demselben Prinzip wird die Infrastruktur versioniert und wie ein Programmcode behandelt. Die Anforderung für eine flexible cross-platform Infrastruktur ähnelt sich der Anforderung für multiplattformfähige Anwendungen. Bei diesem DevOps-Ansatz spricht man von “Infrastructure as Code”.
Prinzip 5: Ständige Verbesserung
Das Unternehmen muss sich ständig an veränderte Kundenanforderungen, neue Marktsituation, Richtlinienänderungen und neue Technologien anpassen. Mit DevOps liegt der Fokus auf der kontinuierlichen Produkt- und Prozessverbesserung, Steigerung der Produktivität und Produktqualität und Vermeidung von Fehlern und Ausfällen. Dabei werden die Kosten gesenkt, die neuen Releases schneller und optimal implementiert und die angebotenen Softwareprodukte und -lösungen kontinuierlich verbessert. Sicheres Experimentieren ist eine wichtige agile DevOps-Aktivität, um Fehler kontrolliert und gefahrlos (ohne Schaden für den Wirkbetrieb) zu provozieren, zu analysieren und aus Fehlern zu lernen.
Prinzip 6: Umfassende Standardisierung und Automatisierung
Es sind neue automatisierte Tools erforderlich, die für DevOps zugeschnitten sind und eine effiziente agile Zusammenarbeit im Lebenszyklus ermöglichen. Die Automatisierung gilt nicht nur für den Softwareentwicklungsprozess (Entwickler) oder den IT-Betrieb (Administratoren), sondern auch für die gesamte Infrastrukturlandschaft mit einheitlichen Metriken für Code, Services, Monitoring und Qualitätssicherung.
Wie lassen sich DevOps und Cross-Platform vereinbaren?
Standardisierte IT-Umgebungen sind erforderlich, damit Softwarelösungen portabel sind und relativ plattformunabhängig funktionieren. Mit DevOps-Tools lassen sich Infrastrukturdienste wie ein Programmcode mit speziellen Programmiersprachen beschreiben (spezifizieren), konfigurieren und automatisiert bereitstellen. Analog zu Software Engineering ist diese zugrundeliegende Infrastrukturtechnologie der wesentliche Bestandteil des Infrastructure Engineering. Das Infrastructure Engineering vereinheitlicht und automatisiert die folgenden Infrastrukturaufgaben:
- Konfiguration, Bereitstellung und Versionierung der IT-Infrastruktur
- Monitoring und Performance-Management
- Definieren und Spezifizieren, Konfigurieren und Bereitstellen, Skalieren und Optimieren von IT-Services
Nicht nur effiziente portable Anwendungen sind wichtig, sondern auch automatisierte plattformübergreifende Infrastrukturlösungen. DevOps und Cross-Platform lassen sich dadurch vereinbaren, dass fortgeschrittene Infrastrukturtechnologien des Infrastructure Engineering und plattformübergreifende (cross-platform) DevOps-Tools zum Einsatz kommen. Mit standardisierten Infrastrukturmodellen und automatisierten Cross-Platform DevOps-Tools werden nicht nur die Anwendungen, sondern auch die Administratoren optimal unterstützt.
Eigenschaften und Besonderheiten von Cross-Platform DevOps
Bei Bereitstellung und Betreuung einer flexiblen plattformübergreifenden IT-Infrastruktur mit Cross-Platform DevOps sind die Konzepte “Platform-as-a-Service” (PaaS), “Infrastructure-as-a-Service” (IaaS) und “Infrastructure-as-Code” (IaC) von großer Bedeutung und spielen eine entscheidende Rolle. Cross-Platform DevOps unterstützt portable Anwendungen und ermöglicht, geänderte betriebliche Systemanforderungen an die Plattformen und Systeme in Form von flexiblen konfigurierbaren Infrastrukturlösungen mit neuen industriellen Methoden automatisiert, kosteneffizient und schnell umzusetzen.
Damit Flexibilität der verwendeten IT-Architektur gewährleistet wird, müssen die Anwendungen portabel sein, die Multiplattformfähigkeit nativ unterstützen (mobile code) und über die erforderlichen standardisierten Schnittstellen (API) verfügen. Die Plattformunabhängigkeit einer Anwendung bleibt jedoch relativ. Noch in der Design-Phase sollst Du die Plattformen als unterstützende Betriebssysteme (Windows, Linux, MacOS, iOS u.a.) und Datenbank-Typen (Oracle, PostgreSQL, MySQL u.a.) festlegen, auf deren Basis die künftige Anwendung funktionieren soll. Aus den beim Design festgelegten Plattformen entstehen entsprechende Systemanforderungen für die Entwicklung und den IT-Betrieb.
Cross-Platform DevOps erweitert die Prinzipien und Grundlagen der Agilität der DevOps-Methoden um weitere Bereiche, die als “agile IT-Infrastruktur” bezeichnet werden. Nach dem Cross-Plattform-Konzept werden die Plattform-Teams nicht mehr nach bestimmten Plattformen wie Linux oder Windows aufgebaut, sondern sind für Bereitstellung und Betreuung einer flexiblen IT-Infrastruktur verantwortlich.
Das Plattform-Team als ein Servicelieferant unterstützt die anderen Teams beim Aufbau ihrer Delivery- und Deployment-Pipelines und arbeitet mit den Teams eng zusammen. Sind Veränderungen oder Anpassungen der verwendeten Systemressourcen der IT-Infrastruktur für andere Teams notwendig, erfolgen solche Anfragen in Form von automatisierten Self-Services, z.B. über ein Intranet-Portal. Somit sind Implementierung von geänderten Plattform- und Infrastrukturanforderungen und Auswahl einer richtigen Plattform für die IT-Produkte kein Thema von Projektmeetings, sondern gehören schon zum automatisierten Workflow im Tagesgeschäft.
Fazit: DevOps vereinheitlichen das Infrastructure Engineering
Bei Bereitstellung und Betreuung einer modernen IT-Infrastruktur verschwinden die Grenzen zwischen einzelnen kommerziellen oder OpenSource-bisierten Produkten, Plattformen und Systemen. Agile Cross-Platform DevOps-Methoden ermöglichen es, die Entwicklung, den IT-Betrieb und die IT-Infrastruktur zusammenzubringen, zu automatisieren und zu vereinheitlichen. Das primäre Ziel ist es, die Prozesse, Organisation und Zusammenarbeit der Teams (Entwickler, Ingenieure, Tester, IT-Administratoren, Qualitätsmanagement) zu verbessern, agil und serviceorientiert zu gestalten und fachübergreifendes ganzheitliches Denken und Handeln zu fördern.
Für einen industriellen Ansatz des Infrastructure Engineering sind nicht nur fortgeschrittene plattformübergreifende DevOps-Tools wichtig, sondern auch eine flexible Organisation, eine neue Unternehmenskultur, eine neue zielorientierte Denkweise und persönliches Engagement jedes einzelnen Teammitglieds. Durch die Implementierung der DevOps-Kultur in Verbindung mit geeigneten Tools, Methoden und Technologien können Teams besser auf geänderte Anforderungen reagieren, die Qualität der bereitgestellten Lösungen kontinuierlich verbessern und die Geschäftsziele schneller und effizienter erreichen.