Was ist DevOps?

DevOps kombiniert Entwicklung (Dev) und Betrieb (Ops), um Menschen, Prozesse und Technologie in der Anwendungsplanung, Entwicklung, Bereitstellung und im Betrieb zu vereinen. DevOps ermöglicht die Koordination und Zusammenarbeit zwischen zuvor isolierten Rollen wie Entwicklung, IT-Betrieb, Qualitätstechnik und Sicherheit.

Teams übernehmen die DevOps-Kultur, -Praktiken und -Tools, um das Vertrauen in die von ihnen erstellten Anwendungen zu stärken, besser auf Kundenbedürfnisse zu reagieren und Geschäftsziele schneller zu erreichen. DevOps hilft Teams dabei, den Kunden kontinuierlich einen Mehrwert zu bieten, indem sie bessere und zuverlässigere Produkte produzieren.

DevOps und der Anwendungslebenszyklus

DevOps beeinflusst den Anwendungslebenszyklus durch seine Phasen Planung, Entwicklung, Bereitstellung und Betrieb. Jede Phase hängt von den anderen Phasen ab, und die Phasen sind nicht rollenspezifisch. Eine DevOps-Kultur bezieht in gewissem Maße alle Rollen in jeder Phase ein.

Das folgende Diagramm veranschaulicht die Phasen des DevOps-Anwendungslebensstils:

Conceptual diagram that illustrates the DevOps application lifecycle.

DevOps-Ziele und -Vorteile

Wenn ein Team die DevOps-Kultur, -Praktiken und -Tools übernimmt, kann es erstaunliche Dinge erreichen:

Beschleunigen der Markteinführungszeit

Durch höhere Effizienz, verbesserte Teamzusammenarbeit, Automatisierungstools und kontinuierliche Bereitstellung können Teams die Zeit von der Produkteinführung bis zur Markteinführung schnell verkürzen.

An Markt und Wettbewerb anpassen

Eine DevOps-Kultur erfordert, dass Teams den Kunden in den Mittelpunkt stellen. Durch die Kombination von Agilität, Teamzusammenarbeit und Konzentration auf das Kundenerlebnis können Teams ihren Kunden kontinuierlich Mehrwert bieten und ihre Wettbewerbsfähigkeit auf dem Markt steigern.

Stabilität und Zuverlässigkeit von Systemen aufrechterhalten

Durch die Einführung kontinuierlicher Verbesserungspraktiken sind Teams in der Lage, die Stabilität und Zuverlässigkeit der von ihnen bereitgestellten Produkte und Dienste zu erhöhen. Diese Methoden tragen dazu bei, Fehler und Risiken zu reduzieren.

Mittlere Reparaturzeit (Mean Time To Recover) verbessern

Die mittlere Reparaturzeit gibt an, wie lange die Wiederherstellung nach einem Fehler oder einer Sicherheitsverletzung dauert. Um Softwarefehler, Sicherheitsverletzungen und Pläne zur kontinuierlichen Verbesserung zu verwalten, sollten Teams diese Kennzahl messen und daran arbeiten, sie zu verbessern.

Eine DevOps-Kultur einführen

Um DevOps vollständig zu implementieren, müssen Sie eine DevOps-Kultur einführen. Für die Einführung einer DevOps-Kultur sind weitreichende Änderungen an der Arbeitsweise und Zusammenarbeit der Mitarbeiter nötig. Wenn Organisationen die DevOps-Kultur jedoch etablieren können, kann eine Umgebung für enorm leistungsfähige Entwicklungsteams geschaffen werden. Während die Einführung von DevOps-Praktiken Prozesse mithilfe von Technologie automatisiert und optimiert, werden Sie ohne eine Umstellung auf eine DevOps-Kultur innerhalb der Organisation und bei ihren Mitarbeiter nicht alle Vorteile von DevOps nutzen können.

In der folgenden Abbildung werden wichtige Aspekte der Live-Site-Kultur von Microsoft erfasst.

Diagram of Microsoft's live site culture.

Die folgenden Methoden sind wichtige Komponenten einer DevOps-Kultur:

  • Zusammenarbeit, Sichtbarkeit und Ausrichtung: Ein Kennzeichen einer gesunden DevOps-Kultur ist die Zusammenarbeit zwischen Teams. Die Zusammenarbeit beginnt mit Sichtbarkeit. Entwicklungs-, IT- und andere Teams sollten ihre DevOps-Prozesse, -Prioritäten und -Anliegen miteinander teilen. Durch die gemeinsame Planung ihrer Arbeit sind sie besser in der Lage, sich auf Ziele und Erfolgsmaßstäbe in Bezug auf das Unternehmen auszurichten.
  • Veränderungen beim Umfang und bei der Verantwortlichkeit: Wenn sich Teams zusammenschließen, übernehmen sie Verantwortung und werden in andere Phasen des Lebenszyklus eingebunden – nicht nur in diejenigen, die für ihre Rollen von zentraler Bedeutung sind. Entwickler sind beispielsweise nicht nur für die Innovation und die Qualität in der Entwicklungsphase verantwortlich, sondern auch für die Leistung und Stabilität, die ihre Änderungen in der Betriebsphase bewirken. Gleichzeitig müssen IT-Mitarbeiter für Governance, Sicherheit und Compliance in der Planungs- und Entwicklungsphase sorgen.
  • Kürzere Release-Zyklen: DevOps-Teams bleiben agil, indem sie Software in kurzen Zyklen veröffentlichen. Durch kürzere Releasezyklen werden auch die Planung und das Risikomanagement vereinfacht, da es sich um einen inkrementellen Prozess handelt, der die Auswirkungen auf die Systemstabilität reduziert. Zudem können Organisationen auf die wandelnden Anforderungen der Kunden und auf Wettbewerbsdruck reagieren.
  • Continuous Learning: Leistungsstarke DevOps-Teams konzentrieren sich auf Wachstum. Sie scheitern schnell und integrieren Erkenntnisse in ihre Prozesse. Sie sind bestrebt, sich kontinuierlich zu verbessern, die Kundenzufriedenheit zu steigern und Innovationen und Marktanpassungsfähigkeiten zu beschleunigen.

DevOps-Methoden implementieren

Sie implementieren DevOps anhand der DevOps-Methoden (die in den folgenden Abschnitten beschrieben werden) während des gesamten Anwendungslebenszyklus. Einige dieser Methoden sind für das Beschleunigen, Automatisieren und Optimieren einer bestimmten Phase vorgesehen. Andere umfassen mehrere Phasen, damit Teams nahtlose Prozesse erstellen und so die Produktivität steigern können.

Continuous Integration und Continuous Delivery (CI/CD)

Continuous Integration (CI) ist die Praxis, die von Entwicklungsteams verwendet wird, um Code zu automatisieren, zusammenzuführen und zu testen. CI hilft, Fehler frühzeitig im Entwicklungszyklus zu erfassen, wodurch ihre Behebung weniger kostet. Automatisierte Tests werden als Teil des CI-Prozesses ausgeführt, um die Qualität zu gewährleisten. CI-Systeme generieren Artefakte und fügen sie zu Releaseprozessen zusammen, um häufige Bereitstellungen zu ermöglichen.

Continuous Delivery (CD) ist ein Prozess, mit dem Code kompiliert, getestet und in einer oder mehreren Test- und Produktionsumgebungen bereitgestellt wird. Das Bereitstellen und Testen in mehreren Umgebungen erhöht die Qualität. CD-Systeme generieren bereitstellbare Artefakte (einschließlich Infrastruktur und Apps). Automatisierte Releaseprozesses nutzen diese Artefakte, um neue Versionen und Fixes für bestehende Systeme zu veröffentlichen. Systeme, die Warnungen überwachen und senden, werden kontinuierlich ausgeführt, um einen Überblick über den gesamten CD-Prozess zu bieten.

Quellcodeverwaltung

Unter Versionskontrolle versteht man das Verwalten von Code in Versionen. Dabei werden Revisionen und der Änderungsverlauf nachverfolgt, damit der Code einfacher überprüft und wiederhergestellt werden kann. Diese Methode wird in der Regel mit einem Versionskontrollsystem wie Git implementiert, in dem mehrere Entwickler zusammen Code schreiben können. Diese Systeme bieten einen geradlinigen Prozess für das Mergen von Codeänderungen in einer Datei, für die Konfliktbehandlung und für das Rollback von Änderungen in frühere Zustände.

Der Einsatz eines Versionskontrollsystems stellt eine grundlegende DevOps-Methode dar, da Entwicklungsteams bei der Zusammenarbeit unterstützt werden, Programmieraufgaben unter Teammitgliedern aufteilen und den gesamten Code speichern können, damit dieser mühelos wiederhergestellt werden kann. Die Versionskontrolle ist auch für andere Methoden wie Continuous Integration und Infrastructure-as-Code notwendig.

Agile Softwareentwicklung

Agile ist ein Softwareentwicklungsansatz, bei dem Teamzusammenarbeit, Kunden- und Benutzerfeedback sowie eine hohe Anpassungsfähigkeit für Änderungen über kurze Releasezyklen im Vordergrund stehen. Teams, die nach dem Prinzip der agilen Softwareentwicklung arbeiten, stellen Kunden fortlaufend Änderungen und Verbesserungen zur Verfügung, holen deren Feedback ein und nutzen es, um die Wünsche und Anforderungen der Kunden für ihre Anwendungen zu berücksichtigen. Die agile Softwareentwicklung unterscheidet sich grundlegend von älteren Modellen wie dem Wasserfallmodell, bei dem lange Releasezyklen zum Einsatz kommen, die durch sequenzielle Phasen definiert werden. Kanban- und Scrum-Methoden kommen bei der agilen Softwareentwicklung häufig zum Einsatz.

Infrastructure-as-Code

Infrastructure-as-Code definiert die Systemressourcen und Topologien deskriptiv. Dadurch können Teams diese Ressourcen so verwalten, wie sie es mit Code tun würden. Diese Definitionen können gespeichert und in Versionskontrollsystemen mit Versionen versehen werden. Dort können sie auch – wie Code – überprüft und rückgängig gemacht werden.

Durch das Anwenden von Infrastructure-as-Code können Teams Systemressourcen zuverlässig, wiederholbar und kontrolliert bereitstellen. Infrastructure-as-Code ermöglicht zudem die automatisierte Bereitstellung und reduziert das Risiko menschlicher Fehler. Davon können Sie insbesondere bei komplexen, umfangreichen Umgebungen profitieren. Diese wiederholbare, zuverlässige Lösung für die Umgebungsbereitstellung ermöglicht Teams das Nutzen von Entwicklungs- und Testumgebungen, die mit der Produktionsumgebung identisch sind. Das Duplizieren von Umgebungen in unterschiedliche Rechenzentren und Cloudplattformen wird also einfacher und effizienter.

Konfigurationsverwaltung

Die Konfigurationsverwaltung bezieht sich auf die Verwaltung des Zustands von Ressourcen in einem System, einschließlich Servern, virtuellen Computern und Datenbanken. Mithilfe von Tools für die Konfigurationsverwaltung können Teams Änderungen kontrolliert und systematisch ausrollen. Dadurch werden die Risiken reduziert, die durch das Anpassen der Systemkonfiguration entstehen können. Teams verwenden Tools für die Konfigurationsverwaltung, um den Zustand des Systems nachzuverfolgen und Konfigurationsabweichungen zu vermeiden, damit die Konfiguration der Systemressourcen nicht im Lauf der Zeit vom definierten Zustand abweicht.

Zusammen mit Infrastructure-as-Code ist es einfach, Systemdefinitionen und -konfigurationen als Vorlagen zu erstellen und zu automatisieren, was Teams dabei hilft, komplexe Umgebungen im großen Maßstab zu betreiben.

Kontinuierliche Überwachung

Kontinuierliche Überwachung bedeutet, einen vollständigen Echtzeit-Einblick in die Leistung und den Zustand des gesamten Anwendungsstapels zu haben. Diese Sichtbarkeit reicht von der zugrunde liegenden Infrastruktur, auf der die Anwendung ausgeführt wird, bis hin zu Softwarekomponenten auf höherer Ebene. Die Sichtbarkeit wird durch die Erfassung von Telemetrie- und Metadaten sowie die Einstellung von Warnungen für vordefinierte Bedingungen erreicht, die die Aufmerksamkeit eines Bedieners erfordern. Telemetrie umfasst Ereignisdaten und Protokolle aus unterschiedlichen Systembestandteilen, die an einem Ort gespeichert werden, an dem sie analysiert und abgefragt werden können.

Leistungsstarke DevOps-Teams sorgen dafür, dass Warnungen interaktiv und aussagekräftig gestaltet werden. Zudem erfassen sie umfangreiche Telemetriedaten, um Erkenntnisse aus großen Datenmengen zu gewinnen. Durch diese Erkenntnisse können Teams Probleme in Echtzeit beheben und testen, wie die Anwendung dadurch in zukünftigen Entwicklungszyklen verbessert wird.

Planung

In der Planungsphase entwerfen, definieren und beschreiben DevOps-Teams die Funktionen und Fähigkeiten der Anwendungen und Systeme, die sie erstellen möchten. Teams verfolgen den Aufgabenfortschritt auf niedriger und hoher Granularitätsebene, von einzelnen Produkten bis hin zu mehreren Produktportfolios. Teams verwenden die folgenden DevOps-Methoden, um Agilität und Sichtbarkeit zu planen:

Einen Überblick über die verschiedenen gewonnenen Erkenntnisse und Praktiken, die Microsoft zur Unterstützung der DevOps-Planung in den Softwareteams des Unternehmens übernommen hat, finden Sie unter So plant Microsoft mit DevOps.

Entwicklung

Die Entwicklungsphase umfasst alle Aspekte der Entwicklung von Softwarecode. In dieser Phase führen DevOps-Teams die folgenden Aufgaben aus:

  • Eine Entwicklungsumgebung auswählen
  • Schreiben, testen, überprüfen und integrieren Sie den Code.
  • Bauen Sie den Code in Artefakte ein, um ihn in verschiedenen Umgebungen bereitzustellen.
  • Verwenden Sie die Versionskontrolle, in der Regel Git, um gemeinsam an Code und parallel zu arbeiten.

Um schnell Innovationen einzuführen, ohne dabei Qualität, Stabilität und Produktivität zu beeinträchtigen, gehen DevOps-Teams wie folgt vor:

Eine Übersicht über die von Microsoft eingeführten Entwicklungsmethoden zur Unterstützung ihrer Umstellung auf DevOps finden Sie unter So entwickelt Microsoft mit DevOps.

Bereitstellen

Bei der Bereitstellung handelt es sich um den Prozess der konsistenten und zuverlässigen Bereitstellung von Anwendungen in Produktionsumgebungen, idealerweise über Continuous Delivery (CD).

In der Bereitstellungsphase erledigen DevOps-Teams Folgendes:

  • Einen Release-Management-Prozess mit klaren manuellen Genehmigungsphasen definieren
  • Automatisierte Gates einrichten, um Anwendungen zwischen Phasen bis zur endgültigen Freigabe an Kunden zu verschieben
  • Automatisieren Sie Bereitstellungsprozesse, damit sie skalierbar, wiederholbar, kontrolliert und gut getestet sind.

Die Bereitstellung umfasst auch die Bereitstellung und Konfiguration der grundlegenden Infrastruktur der Bereitstellungsumgebung. DevOps-Teams verwenden Technologien wie Infrastructure-as-Code (IaC), Container und Microservices, um vollständig geregelte Infrastrukturumgebungen bereitzustellen.

Sichere Bereitstellungsmethoden können Probleme identifizieren, bevor sie sich auf die Kundenerfahrung auswirken. Diese Praktiken helfen DevOps-Teams, ihre Projekte sowohl regelmäßig als auch einfach und souverän bereitzustellen.

Die wichtigsten DevOps-Prinzipien und -Prozesse, die Microsoft entwickelt hat, um effiziente Bereitstellungssysteme bereitzustellen, werden in So stellt Microsoft Software mit DevOps bereit beschrieben.

Vorgänge

Die Betriebsphase beinhaltet das Verwalten, Überwachen und die Problembehebung von Anwendungen in Produktionsumgebungen, einschließlich hybrider oder öffentlicher Clouds wie Azure. DevOps-Teams zielen auf Systemsicherheit, hohe Verfügbarkeit, starke Sicherheit und null Ausfallzeiten ab.

Automatisierte Bereitstellung und sichere Bereitstellungspraktiken helfen Teams, Probleme schnell zu erkennen und zu beheben, wenn sie auftreten. Zur Aufrechterhaltung dieser Wachsamkeit sind umfangreiche Telemetriedaten, interaktive Warnungen und eine vollständige Sichtbarkeit der Anwendungen und zugrunde liegenden Systeme erforderlich.

Die Methoden, die Microsoft für den Betrieb komplexer Onlineplattformen verwendet, werden unter So führt Microsoft zuverlässige Systeme mit DevOps aus beschrieben.

Nächste Schritte

Weitere Ressourcen

Schulungen und Zertifizierungen