DevOps
Vorlage:Hinweisbaustein DevOps ist eine Sammlung unterschiedlicher technischer Methoden und eine Kultur zur Zusammenarbeit zwischen Softwareentwicklung und IT-Betrieb. DevOps soll durch gemeinsame Prozesse und Software-Werkzeuge eine effektivere und effizientere Zusammenarbeit der Bereiche Softwareentwicklung (Dev), Systemadministration (Ops), aber auch Qualitätssicherung und der Nutzerschaft ermöglichen.<ref name="Hasselbring-2015">Wilhelm Hasselbring: DevOps. (PDF; 2.614 kB) Softwarearchitektur an der Schnittstelle zwischen Entwicklung und Betrieb. In: GI-Fachtagung Architekturen 2015, Hamburg. 10. Juli 2015, abgerufen am 24. Februar 2016.</ref> Mit DevOps sollen die Softwarequalität, die Geschwindigkeit der Entwicklung und der Auslieferung, sowie das Miteinander der beteiligten Teams verbessert werden.
Softwareentwicklung wird stark durch eine Kombination speziell aufeinander abgestimmter Werkzeuge, Infrastruktur und organisatorischer Prozesse beeinflusst. Je besser die beteiligten Teams, Werkzeuge und die Infrastruktur aufeinander abgestimmt sind, desto schneller sollen Organisationen ihre Software in einer besseren Qualität ausliefern können. Die Entwicklung möchte dem Kunden möglichst schnell Updates oder neue Funktionalitäten zur Verfügung stellen. Der IT-Betrieb muss die Betriebsstabilität sicherstellen und potenzielle technische Defekte durch Änderungen verhindern. DevOps soll diese beiden Ziele vereinen helfen.
Der belgische Systemadministrator Patrick Debois erkannte, dass eine verbesserte Art und Weise der Zusammenarbeit zwischen Dev und Ops zu einer schnelleren und fehlerärmeren Softwareauslieferung führen kann. Während der Velocity Conference im Juni 2009 in San José entstand dabei der Begriff DevOps.<ref>https://conferences.oreilly.com/velocity/velocity2009/public/schedule/detail/7641</ref> Im Oktober 2009 organisierte Patrick Debois dann die erste DevOpsDays-Konferenz in Gent.<ref name="DevOpsDays2009Ghent">DevOpsDays 2009 Ghent. In: devopsdays.org. 2009, abgerufen am 17. Februar 2016 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref name="Debois-2011">Patrick Debois: DevOps. A software revolution in the making? In: Cutter IT Journal 24, No. 8. 2011, abgerufen am 11. August 2015 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Begriff[Bearbeiten]
DevOps ist ein Kofferwort aus den Begriffen Development (englisch für Entwicklung) und IT Operations (engl. für IT-Betrieb).<ref name="Halstenberg-2020">J. Halstenberg, B. Pfitzinger, Th. Jestädt: DevOps – Ein Überblick; Springer-Vieweg (Heidelberg) 2020</ref>
Von DevOps existieren unterschiedliche Interpretationen und Definitionen. Der Begriff ist nicht geschützt, es gibt mehrere unterschiedliche Zertifizierungspfade.
Der Begriff DevOps – als Zusammenarbeits-Modell von traditionell verschiedenen interdependenten Arbeitsbereichen – wurde auch auf explizit andere Gebiete außerhalb von Entwicklung und Betrieb übertragen. So gibt es die Begriffe BizDevOps (Business plus DevOps),<ref name="BizDevOps-2015">Brian Fitzgerald, Klaas-Jan Stol: Continuous Software Engineering – A Roadmap and Agenda. In: Journal of Systems and Software, 4. Juli 2015 doi:10.1016/j.jss.2015.06.063</ref> aber auch DevSecOps (das Security einschließt) oder DataOps (das Datenanalyse benennt).<ref name="Halstenberg-2020" /> Gemeint ist jeweils, dass diese Gebiete unter Verwendung gemeinsamer Methoden und Werkzeuge eng zusammenarbeiten.
Kultur[Bearbeiten]
Das Kernstück der DevOps-Organisationskultur ist die Aufhebung der Trennung zwischen Entwicklung und Betrieb zugunsten einer Kooperation durch:<ref>aws.amazon.com – Die DevOps-Kultur</ref><ref>azure.microsoft.com – DevOps-Kultur</ref>
- Gegenseitige Sichtbarkeit von Prozessen und Plänen sowie eine gemeinsame Abstimmung von Änderungen, Prioritäten und Zuständigkeiten.
- Gemeinsame Verantwortlichkeit des gesamten Teams für Kundenorientierung während des gesamten Software-Lebenszyklus.
- Kürzere Releasezyklen, um Planungen und das Risikomanagement zu vereinfachen.
- Häufige und offene Kommunikation.
Methoden[Bearbeiten]
DevOps-Methoden umfassen mehrere, bereits unabhängig existierende Techniken.
- Continuous-Integration- und Continuous-Delivery-Werkzeuge ermöglichen den erforderlichen hohen Grad an Automatisierung der „Deployment Pipeline“. Mehrere Werkzeuge in Kombination werden im Rahmen des Softwareentwicklungsprozesses zusammenhängend genutzt.<ref name="aws_Methoden">aws.amazon.com – DevOps-Methoden</ref><ref name="azure_practices">azure.microsoft.com – DevOps-Methoden</ref>
- Microservices, die komplexe Anwendungssoftware in entkoppelte Prozesse aufteilen und untereinander mit Programmierschnittstellen kommunizieren.<ref name="aws_Methoden" />
- „Infrastructure as Code“, Software-Configuration-Management und Versionsverwaltung erlauben es, die Konfiguration und die Systemumgebung transparent, replizierbar und wiederherstellbar zu verwalten.<ref name="azure_practices" />
- Ein kontinuierliches Service-Monitoring ermöglicht das proaktive Erkennen und Auffinden von Softwarefehlern oder Lastspitzen.
- Die agile Softwareentwicklung ändert die Art und Weise des Programmierens im Team; in Kombination mit DevOps stellt sie – ausgehend von der Art, Software in Betrieb zu nehmen und zu betreiben – einen Wandel in der Unternehmenskultur dar.<ref name="azure_practices" />
- Automatisierte Softwaretests<ref name="Peschlow-2012">Patrick Peschlow: Die DevOps-Bewegung. Was ist das eigentlich und was bedeutet es für uns? In: Javamagazin 1.2012. codecentric AG, Januar 2012, abgerufen am 29. Juni 2020.</ref>: Statische und dynamische Code-Analysen sowie Unit-, Integrations-, System- und Performance-Tests.
- Bereichsübergreifende Key-Performance-Indicators (KPIs) und gemeinsame Anreiz-Metriken.<ref name="Peschlow-2012" />
Werkzeuge[Bearbeiten]
Diese DevOps-Werkzeuge unterstützen oder ermöglichen einzelne oder mehrere dieser Methoden:
- Jenkins (Continuous Integration)
- Ansible (Configuration Management)
- Puppet (Infrastructure as Code)
- Vagrant (Virtualisierungsplattform)
- GitHub sowie GitLab bieten neben einer Versionsverwaltung auch Continuous-Integration- und Continuous-Delivery-Werkzeuge sowie automatisierte Softwaretests.
- Team Foundation Server (TFS) bzw. Azure DevOps von Microsoft bietet neben Versionsverwaltung auch Continuous-Integration- und Continuous-Delivery-Werkzeuge
Auch die Containervirtualisierung Docker oder die Container-Orchestrierung Kubernetes werden teilweise zu den DevOps-Werkzeugen gezählt.
DevSecOps[Bearbeiten]
Während sich DevOps um die Bereitstellung der Infrastruktur für Dienste und die Auslieferung dieser Dienste kümmert, ist DevSecOps für die Sicherheit dieser Infrastruktur und die IT-Compliance zuständig.
Aufgabengebiete von DevSecOps:
- Zoning und Containment (z. B. Definition von Sicherheitsgruppen)
- IT-Anlagenwirtschaft und Geräteattestierung
- Logging, Monitoring, Auditing und OpsDB-Verwaltung
- Authentifizierungs- und Autorisierungsmechanismen
- Verschlüsselung und Verwaltung von digitalen Zertifikaten
- Network Access Control oder Software Defined Perimeter
GitOps[Bearbeiten]
Bei GitOps wird der Sollzustand der Infrastruktur, aber auch der Anwendungen, in einem Git-Repository als „Single Source of Truth“ deklarativ verwaltet. Dieses Infrastruktur-Repository wird durch einen Softwareagenten nach dem Pull-Prinzip überwacht und Änderungen gegebenenfalls automatisch ausgerollt.<ref>weave.works – Guide To GitOps</ref><ref>heise.de – Einführung: Was ist GitOps und welche Werkzeuge lohnen sich?</ref> Änderungen an der Infrastruktur können im Infrastruktur-Repository mit Pull Requests vorgeschlagen, getestet, gereviewt und auch ausgeliefert werden. GitOps kann auch mit anderen Systemen zur Versionskontrolle genutzt werden.
DevOps-Konferenzen[Bearbeiten]
International und national haben sich einige DevOps-Konferenzen herausgebildet. Darunter:
- DevDays Europa
- DevOps-Tage
- DevOpsCon
Siehe auch[Bearbeiten]
Literatur[Bearbeiten]
- Jürgen Halstenberg, Bernd Pfitzinger, Thomas Jestädt: DevOps. Ein Überblick. Springer Vieweg, Wiesbaden 2020, ISBN 978-3-658-31404-0.
- Sujeevan Vijayakumaran: DevOps. Wie IT-Projekte mit einem modernen Toolset und der richtigen Kultur gelingen. Rheinwerk Computing, Bonn 2024, ISBN 978-3-8362-9099-9.
Weblinks[Bearbeiten]
- Felix Massem: Operations heute und morgen. heise developer, 28. April 2015, abgerufen am 7. März 2019.
- Thomas Fischer: DevOps als modernes IT-Outsourcing. (PDF) Agile Softwareentwicklung bis zum Ende gedacht. In: noris.de. 14. August 2017, abgerufen am 14. August 2017.
- Bhupendra Chauhan: Involvement of DevOps Essential. Moving Fast With Confidence. In: New Relic Blog: Ecosmob. 17. August 2022, abgerufen am 29. August 2022.
Einzelnachweise[Bearbeiten]
<references />