DevOps nennt sich ein Ansatz zur Prozessverbesserung in der Softwareentwicklung und Systemadministration. Die Bezeichnung setzt sich aus den Begriffen Development (Entwicklung) und IT-Operations (IT-Betrieb) zusammen. Beim DevOps-Modell geht es darum, diese ehemals isoliert arbeitenden Unternehmensbereiche zusammenzuführen.
Was ist 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.
In einer DevOps-Struktur herrscht eine Zusammenarbeit der beiden Bereiche mit dem Ziel, gleichermaßen die Produktivität bei der Entwicklung wie auch die Zuverlässigkeit der operationalen Abläufe zu optimieren.
Gemeinsame Anreize, koordinierte Prozesse und Software-Werkzeuge sollen dabei eine bessere Zusammenarbeit der Abteilungen und der Qualitätssicherung ermöglichen. Auch auf Veränderungen in Entwicklungsprozessen soll dadurch schneller reagiert werden können.
Grundlage des DevOps-Konzepts ist also eine Kultur der Zusammenarbeit zwischen Teams, die bislang eher getrennt gearbeitet haben. Ein DevOps Engineer ist dementsprechend eine Mischung aus einem Software Developer (Entwickler) und einem System Engineer (Administrator).
Ziel und Auslegung
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.
Herausforderungen
Die erhöhte Häufigkeit von Bereitstellungen bringt neue betriebliche Herausforderungen mit sich. DevOps-Praktiken wie Continuous Integration und Continuous Delivery sollen unter diesen Bedingungen zuverlässige Bereitstellungen ermöglichen. Dabei zieht jede Codeänderung eine Reihe automatisierter Tests nach sich. Builds, die diese Tests bestehen, werden über ebenfalls automatisierte Deployments bereitgestellt.
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.
- https://aws.amazon.com/de/xray/
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.
- https://aws.amazon.com/de/codedeploy/
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.
- https://softwaresupport.softwaregrp.com/doc/KM765748?fileName=hp_man_QC10_UserGd_DE_pdf.pdf
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.
- https://de.wikipedia.org/wiki/Rational_Software
Vorteile von DevOps
- intelligentes und transparentes Arbeiten
- schnellere, häufigere Releases
- kürzere Problemlösungszeiten
- besseren Management bei Unvorhersehbarem führt.
- Transparenz verkürzt den Feedback-Kreislauf bei Problemen. Dadurch können sie 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.
Was versteht man unter Cross-Platform DevOps?
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.
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.
DevOps Prinzipien
Die folgenden sechs Prinzipien sollst Du bei der 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
Was macht ein DevOps Engineers
Da die Tätigkeiten eine Mischung erschiedener Aufgabenbereiche darstellen, sind die Aufgaben eines DevOps Engineers sehr vielseitig. Dazu gehören das Entwerfen und Erstellen von Scripten und Entwicklungstools für agile Softwareentwicklung, das Ausführen von Administrationstätigkeiten, das Monitoring, die Konzipierung und Durchführung von Softwaretests ebenso wie das Finden und Optimieren von Lösungen für operative Prozesse.
Ein zentrales DevOps-Verfahren ist die Etablierung häufiger, kleiner Updates. Gemäß agiler Vorgehensmethoden können Unternehmen ihre Kunden dadurch enger am Entwicklungsprozess teilhaben und das Produkt gezielter reifen lassen. Häufige, kleine Updates bergen ein geringeres Risiko von spät erkannten Irrwegen. Fehler sind von Update zu Update leichter ausfindig zu machen und können in kleineren Einheiten behandelt werden.
DevOps-Engineers können zudem Monitor- und Protokollierungsmethoden die Performance der Anwendungen und der Infrastruktur verfolgen und schnell auf Probleme reagieren.
Welche Skills braucht ein DevOps Engineer?
Unverzichtbar ist für DevOps Engineers eine Leidenschaft für Programmierung und zum Scripting. Typische Programmiersprachen, mit denen DevOps Engineers zu tun haben, sind Python, Java, Ruby und PHP. Für die administrative Seite kommen Kenntnisse in verschiedenen Serversystemen für Windows, Mac oder Linux hinzu, insbesondere Sicherheitskonzepte sind wichtig. Umgang mit Open Source-Technologien und -Tools ist ein zentraler Bestandteil der Arbeit.
Weitere wichtige Kompetenzen sind neben technischen und fachlichen Kenntnissen eigenständiges Arbeiten und die Soft-Skills. Dazu zählt Team- und Kommunikationsfähigkeit im Sinne der DevOps-Kultur der Zusammenführung bisher unterschiedlicher Abteilungen. Die Arbeit von DevOps Engineers sollte immer auf das gesamte Team abgestimmt sein. Eine lebenslange Lernbereitschaft ist wie in den meisten IT-Sektoren unerlässlich, da dieser Bereich fortwährend im Wandel ist.
Wie wird man DevOps Engineer (Ausbildung/Studium)?
Diverse Studien- und Ausbildungsgänge liefern die Grundlagen für den Beruf des DevOps: Als Studium bieten sich Informatik, Wirtschaftsinformatik, Informationstechnik oder Fachinformatik an. Als Ausbildung kommen Fachinformatik oder verwandte qualifizierte Abschlüsse in Betracht, wie der des IT-Systemadministrators. Wichtig ist, gleichwohl Softwareentwicklungs- wie administrative Kenntnisse zu erwerben. Duale Studiengänge liefern hierfür eine breitere Basis.
Es gibt heute einige Zertifizierungsmöglichkeiten für den Beruf des DevOps Engineers, z.B. AWS Certified DevOps Engineer oder LPI Certified Open Technology DevOps Engineer.
Wo kann ich als DevOps Engineer arbeiten? Mit welchem Gehalt kann ich rechnen?
Die Position des DevOps hält zunehmend Einzug in zahlreiche Branchen mit hohem IT-Bezug. Immer mehr Unternehmen setzen für ihre IT-Abteilungen auf die DevOps-Kultur, um bisher aufgeteilte Rollen zusammenzuführen. Gefragt sind häufig Young Professionals, d.h. junge Berufseinsteiger mit Bachelor- oder Masterabschluss, die schon ein bis zwei Jahre praktische Erfahrung in Entwicklungs- und administrativen Bereichen gesammelt haben.
Das durchschnittliche jährliche Einstiegsgehalt eines DevOps Engineers liegt bei etwa 49.000 bis 54.000 EUR. Das Berufsbild eines DevOps Engineers unterscheidet sich von Unternehmen zu Unternehmen, entsprechend können die Gehälter stark unterschiedlich sein. Wie üblich gibt es auch Schwankungen in Abhängigkeit von übertragenen Verantwortungen und Kompetenzen.
Fazit
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.