Der Begriff DevOps umfasst die Bereiche Development, also Entwicklung, und Operations, also die Umsetzung, in der Softwareentwicklung. Er beinhaltet Denkweisen, Praktiken und Technologien, die Teams bei der Erstellung von Services und Softwareanwendungen helfen sollen. Damit lässt sich beispielsweise die Weiterentwicklung von Programmen umsetzen.
Wie funktioniert DevOps?
Der zentrale Punkt von DevOps umfasst das Team, welches von der Erstellung eines Prototypen bis zum Livegang der fertigen Anwendung und weit darüber hinaus zusammenarbeitet. Dazu werden verschiedene Teamrollen definiert, die einen reibungslosen und schnellen Ablauf gewährleisten sollen.
Diese Vorgehensweise unterscheidet sich zu bisherigen Praktiken darin, dass nun das Entwicklungsteam und das Operationsteam eng miteinander zusammenarbeiten. Davor wurden Anwendungen von Entwicklern erstellt und sobald sie live gingen an das Operationsteam abgegeben, welches die Erreichbarkeit und Performance des Services sicherstellen sollte. Dadurch gehen jedoch wertvolle Informationen zwischen den beiden Teams verloren, beispielsweise Verbesserungsvorschläge vom Operationsteam.
Je nach Anwendung können auch zusätzlich zu diesen Abteilungen Experten der Security oder Qualitätssicherung ins engere Projektteam hinzugezogen werden. Vor allem dann, wenn Aspekte aus diesen Bereichen eine besondere Bedeutung für das Projekt haben.
Das Team verwendet Praktiken, die ursprünglich aus der Prozessautomatisierung bekannt sind und sich auch auf die Softwareentwicklung anwenden lassen. Im Mittelpunkt steht dabei eine endlose Schleife an Abläufen, die schrittweise durchlaufen werden.
Was ist der DevOps Lebenszyklus?
Der Lebenszyklus von DevOps beschreibt den zentralen Ablauf innerhalb der Softwareentwicklung. Die einzelnen Stufen werden in einem Projekt einmal durchlaufen und können auch nach Fertigstellung weiterhin genutzt werden, um die Anwendung durchgehend zu verbessern.
Je nach Quelle können sich die Benamungen der Stufen unterscheiden, jedoch wird immer derselbe Prozess beschrieben:
- Planung: Bevor mit der Softwareentwicklung gestartet werden kann, muss die neue Anwendung geplant werden. Darunter fallen Aufgaben wie das Definieren von Anforderungen, die Zusammensetzung des Projektteams oder der Zeitplan bis zum Livegang. In dieser Phase wird vor allem auf Konzepte der agilen Softwareentwicklung zurückgegriffen, wie Kanban-Boards oder Scrum.
- Entwicklung: In dieser Phase werden die Einzelteile der Anwendung programmiert, getestet und geprüft. Die Funktionalitätsprüfung findet in verschiedenen Stufen statt, die sich immer mehr der produktiven Umgebung annähern. In diesen können neue Funktionalitäten intensiv getestet werden ohne, dass die produktive Umgebung beeinflusst wird.
- Deployment: Beim Deployment wird die fertige Anwendung in einem produktiven Umfeld den Endanwendern zur Verfügung gestellt. Dazu zählt auch die Integration einer leistungsfähigen Infrastruktur, die die zu erwartenden Lasten handhaben kann.
- Betrieb: Kurz nachdem die Anwendung in ein produktives System überführt wurde, beginnt die Betriebsphase in der nachhaltig die einwandfreie Funktionalität des Programms sichergestellt wird. Dazu zählen beispielsweise die Überprüfung von Logs bei der Fehlerbehebung oder gegebenenfalls die Anpassung der Infrastruktur falls die Leistungsfähigkeit des Systems erhöht werden muss.
- Monitoring: In dieser Phase wird beobachtet, wie die Endanwender mit der Software interagieren und ob sie die Anforderungen aus der Planungsphase erfüllt oder nicht.
- Feedback: Die Ergebnisse der Monitoringphase werden nun evaluiert und entschieden, ob eine Verbesserung der Anwendung notwendigt ist. Dann startet der Lebenszyklus von neuem mit der Planungsphase.
Welche Vorteile bietet die Nutzung von DevOps?
Die Umstellung auf den DevOps Lebenszyklus kann in den meisten Fällen zu folgenden Vorteilen führen:
- Geschwindigkeit: Durch die Prozessoptimierungen können neue Entwicklungen viel schneller einen hohen Reifegrad erreichen und gleichzeitig auch das Feedback der Kunden und eines wandelnden Marktumfeldes mit aufgenommen werden. Diese Geschwindigkeit bezieht sich auch explizit auf das Deployment. Ein schnelles Deployment hilft dabei in kurzer Zeit auf Bugs reagieren zu können und so die Kundenzufriedenheit hoch zu halten.
- Team-Moral: Durch die aktive Zusammenarbeit von verschiedenen Teams wird die Moral untereinander deutlich verbessert. Zugleich kann es auch motivierend wirken, wenn das Operationsteam einen wichtigen Einfluss auf die Anpassung und Weiterentwicklung der Anwendung hat. In einer Organisation ohne DevOps kann sonst leicht Unmut aufkommen, wenn das Gefühl aufkommt, dass die Softwareentwicklung Anwendungen programmiert, die nicht einfach zu managen sind.
- Hohe Qualität: Durch die intensiven Prüfzyklen in den verschiedenen Umgebungen, werden Neuentwicklungen unter realitätsnahen Umständen getestet und deren Funktionalität sichergestellt. Dadurch gelangen nur hochwertige Neuerungen in das produktive System und führen lediglich in seltenen Fällen zu Fehlern. Das erhöht die allgemeine Qualität des Systems.
Welche Tools können für DevOps genutzt werden?
Am Markt haben sich bereits einige Werkzeuge etabliert, die Unternehmen darin unterstützen sollen, DevOps in der Softwareentwicklung umzusetzen. Die anschließende Reihenfolge hat dabei keinerlei Bedeutung für die Qualität der Tools und ist lediglich alphabetisch.
Asana
Bei Asana handelt es sich um ein Organisationstool, mit dem Teams ihre Arbeit in Projekten einfach und schnell organisieren können. Es ist dabei nicht konkret auf die Arbeit im DevOps Bereich beschränkt, sondern kann auch für Projekte außerhalb der Softwareentwicklung genutzt werden. Asana wird als Software-as-a-Service (Saas) angeboten und ist dadurch über den Webbrowser aufrufbar.
Atlassian
Atlassian ist an sich kein Programm, sondern ein Anbieter, der viele Tools bereitstellt, die sich für nahezu alle Phasen des DevOps Lebenszyklus verwenden lassen. Dazu zählen beispielsweise die Programme Jira für das Projektmanagement, Bit Bucket zur Verwaltung des Programmiercodes oder Bamboo zum Testen des Codes in den verschiedenen Entwicklungsumgebungen.
Git
Das Portal GitHub ist vielen im Bereich Machine Learning bereits als Plattform zum Teilen von Programmiercode bekannt. Es kann jedoch auch innerhalb von Unternehmen genutzt werden, um die Zusammenarbeit im Team zu ermöglichen und verschiedene Stände von Code zu teilen und zu organisieren. Dafür können dann beispielsweise Funktionen, wie eine Zugriffskontrolle eingerichtet werden, um sicherzustellen, dass nur ausgewählte Personen den Code verändern können.
Selenium
Mithilfe von Selenium lassen sich automatisierte Testprogramme umsetzen, die einen gewissen Nutzungsablauf abarbeiten und damit einen menschlichen Nutzer imitieren können. Das Tool ist Open-Source und kann beispielsweise für Lasttests genutzt werden. Dabei wird die gleichzeitige Nutzung von vielen Anwendern simuliert und getestet, wie sich das Programm verhält, um mögliche Bottlenecks zu erkennen.
Was ist MLOps?
MLOps oder Machine Learning Operations ist ein aufstrebender Bereich, der die Grundsätze von DevOps mit maschinellem Lernen kombiniert, um den Lebenszyklus des maschinellen Lernens zu verwalten und zu rationalisieren. Es zielt darauf ab, die Prozesse zu automatisieren, die mit der Erstellung, Bereitstellung und Verwaltung von Machine Learning-Modellen in der Produktion verbunden sind.
Da Modelle für maschinelles Lernen immer komplexer werden und auf immer mehr kritische Anwendungsfälle angewendet werden, wird die Notwendigkeit einer effektiven Verwaltung und Überwachung dieser Modelle in der Produktion immer wichtiger. Hier kommt MLOps ins Spiel, denn es hilft, den Lebenszyklus des maschinellen Lernens zu rationalisieren und sicherzustellen, dass die Modelle in der Produktion effektiv eingesetzt und verwaltet werden.
Das Konzept umfasst eine Reihe von Schlüsselprozessen, darunter:
- Datenmanagement: MLOps umfasst die Verwaltung großer Datenmengen und stellt sicher, dass die Daten sauber, genau und repräsentativ für die realen Szenarien sind, auf die das Modell in der Produktion trifft.
- Modellschulung: Nachdem die Daten gesammelt und aufbereitet wurden, wird das Modell mit verschiedenen Techniken trainiert, z. B. mit überwachtem, unüberwachtem oder verstärktem Lernen.
- Modellbereitstellung: Nachdem das Modell trainiert wurde, beinhaltet MLOps den Einsatz des Modells in einer Produktionsumgebung, wo es für Vorhersagen oder andere Aufgaben verwendet werden kann.
- Modell-Überwachung: Sobald sich das Modell in der Produktionsumgebung befindet, umfasst MLOps die Überwachung des Modells, um sicherzustellen, dass es die erwartete Leistung erbringt, und um etwaige Probleme zu erkennen, die auftreten könnten.
- Umschulung des Modells: Bei MLOps wird das Modell in regelmäßigen Abständen neu trainiert, um sicherzustellen, dass es bei Änderungen in den Daten oder in der Umgebung genau und aktuell bleibt.
Was sind die Unterschiede zwischen MLOps und DevOps?
DevOps und MLOps sind verwandt, haben aber unterschiedliche Praktiken im Bereich der Softwareentwicklung und des Betriebs. Hier sind die Unterschiede zwischen DevOps und MLOps:
DevOps ist eine Reihe von Praktiken, die die Zusammenarbeit und Kommunikation zwischen Entwicklungs- und Betriebsteams betonen, mit dem Ziel, die Geschwindigkeit und Qualität der Softwarebereitstellung zu verbessern. Im Gegensatz dazu ist MLOps eine Reihe von Praktiken, die sich speziell auf die Bereitstellung und Verwaltung von Modellen für maschinelles Lernen konzentrieren.
DevOps befasst sich mit dem gesamten Lebenszyklus der Softwareentwicklung, von der Planung und Codierung bis hin zu Tests, Bereitstellung und Überwachung. MLOps hingegen konzentriert sich auf die letzten Phasen des Lebenszyklus, insbesondere auf die Bereitstellung und Verwaltung von Modellen für maschinelles Lernen in Produktionsumgebungen.
DevOps zielt darauf ab, die Geschwindigkeit, Zuverlässigkeit und Qualität der Softwarebereitstellung zu verbessern, indem manuelle Prozesse automatisiert, das Fehlerrisiko verringert und schnellere Feedbackschleifen ermöglicht werden. MLOps hingegen konzentriert sich darauf, sicherzustellen, dass Modelle für maschinelles Lernen in einer skalierbaren und zuverlässigen Art und Weise bereitgestellt werden und dass sie im Laufe der Zeit weiterhin effektiv arbeiten.
Während DevOps den Schwerpunkt auf den Einsatz von Tools und Technologien wie Continuous Integration/Continuous Delivery (CI/CD)-Pipelines, Containerisierung und Konfigurationsmanagement legt, sind für MLOps zusätzliche Tools und Technologien erforderlich, die speziell für das maschinelle Lernen geeignet sind, z. B. Modellversionierung, Modellüberwachung und Verfolgung des Datenverlaufs.
Zusammenfassend lässt sich sagen, dass DevOps und MLOps zwar einige Gemeinsamkeiten aufweisen, was den Fokus auf Automatisierung, Zusammenarbeit und kontinuierliche Verbesserung angeht, dass es sich jedoch um unterschiedliche Verfahren mit unterschiedlichen Zielen, Tools und Anforderungen handelt.
Das solltest Du mitnehmen
- Der Begriff DevOps umfasst die Bereiche Development, also Entwicklung, und Operations, also die Umsetzung, in der Softwareentwicklung.
- Bei der Neuentwicklung von Anwendungen wird dazu ein Projektteam aus Mitarbeitern von Entwicklung und Betrieb zusammengestellt.
- Das Hauptkonzept von DevOps ist der sogenannte Lebenszyklus, der je nach Literatur aus den Phasen Planung, Entwicklung, Deployment, Betrieb, Monitoring und Feedback besteht.
- Mithilfe von DevOps lassen sich neue Projekte deutlich schneller umsetzen und es kann schneller auf Bugs und Veränderungen im Markt reagiert werden.
Was ist Quantencomputing?
Tauchen Sie ein in das Quantencomputing. Entdecken Sie die Zukunft des Rechnens und sein transformatives Potenzial.
Was ist die Anomalieerkennung?
Entdecken Sie effektive Techniken zur Anomalieerkennung. Erkennen Sie Ausreißer und ungewöhnliche Muster, um bessere Einblicke zu erhalten.
Was ist das T5-Model?
Entdecken Sie die Leistungsfähigkeit des T5-Modells für NLP-Aufgaben - lernen Sie die Implementierung in Python und Architektur kennen.
Was ist MLOps?
Entdecken Sie MLOps und erfahren Sie, wie es den Einsatz von maschinellem Lernen revolutioniert. Erkunden Sie die wichtigsten Konzepte.
Was ist ein Jupyter Notebook?
Lernen Sie, wie Sie Ihre Produktivität mit Jupyter Notebooks steigern können! Entdecken Sie Tipps und Best Practices für Data Science.
Andere Beiträge zum Thema DevOps
Dies sind interessante Beiträge zum Thema DevOps, die teilweise auch als Referenzen genutzt wurden: