Die DevOps-Methodik: Prinzipien für den Erfolg | StackPulse

Die DevOps-Methodik vereint zwei Bereiche – Softwareentwicklung und IT-Betrieb. Das Hauptziel der DevOps-Methodik ist eine schnelle Produktfreigabe, die durch Automatisierung, Kommunikation und einen kontinuierlichen Arbeitsablauf erreicht wird.

Die wichtigsten Kernprinzipien von DevOps sind Cross-Training, Zusammenarbeit, kontinuierliche Verbesserung, Verantwortlichkeit, Transparenz und Automatisierung. DevOps-Teams wenden diese Prinzipien bei der Erstellung eines DevOps-Prozesses an, der in der Regel sieben Phasen umfasst – Planen, Codieren, Erstellen, Testen, Bereitstellen, Bereitstellen und Überwachen.

In diesem Artikel erfahren Sie:

  • Was ist die DevOps-Methodik?
  • 6 DevOps-Kernprinzipien
  • Was ist ein DevOps-Prozess?
  • DevOps vs. Agile: ein Vergleich

Was ist die DevOps-Methodik?

Die DevOps-Methodik ist eine Reihe von Praktiken, die die Zusammenarbeit von Entwicklungs- und Betriebsteams während des gesamten Softwareentwicklungslebenszyklus (SDLC) erfordern. Sie beinhaltet agile Praktiken und konzentriert sich darauf, Teamsilos aufzubrechen, manuelle Aufgaben zu automatisieren und die Produktivität durch kontinuierliches Feedback zu steigern.

Beim Einsatz von DevOps-Teams implementieren Unternehmen oft mehrere Praktiken und Tools gleichzeitig. Dazu gehören:

  • Kontinuierliche Integration / kontinuierliche Bereitstellung (CI/CD) – eine Reihe von Prozessen, die die Automatisierung nutzen, um die Effizienz, Qualität und Geschwindigkeit im Lebenszyklus der Softwareentwicklung zu verbessern. CI beinhaltet häufige, kleine Änderungen an Codebasen, die getestet und so schnell wie möglich integriert werden. CD beinhaltet die häufige Freigabe von neuem Code für die Produktion, ohne dass manuelle Aktualisierungen oder Patches erforderlich sind.
  • Cloud-basierte Pipelines – Pipelines sind die Toolchains, die zur Durchführung von Workflows wie CI/CD verwendet werden. Häufig bestehen diese Toolchains aus Diensten und Ressourcen, die in der Cloud gehostet werden, was eine Cloud-native Entwicklung und eine bessere Unterstützung verteilter Teams ermöglicht.
  • Microservices – eine Architektur, die bei Cloud-nativen Anwendungen verwendet wird, um eine höhere Skalierbarkeit, Verfügbarkeit und Flexibilität zu ermöglichen. Microservices ermöglichen es Teams, Anwendungen und Pipelines zu erstellen, die lose gekoppelt und leicht zu ändern oder zu aktualisieren sind.
  • Infrastructure as Code (IaaC) – eine Methode, die es Teams ermöglicht, Infrastruktur durch Software und kodierte Definitionsdateien bereitzustellen, zu konfigurieren und zu verwalten. Diese Methode ermöglicht die Automatisierung vieler Infrastrukturaufgaben und unterstützt umfangreiche Bereitstellungen, ohne dass wesentlich mehr Teamressourcen erforderlich sind.

Die DevOps-Kernprinzipien

Bei der Erstellung und Anwendung einer DevOps-Methodik sollten Sie mehrere Kernprinzipien berücksichtigen.

Cross-Training

In DevOps werden Anstrengungen unternommen, um Teammitglieder in allen Prozessen des SDLC zu schulen. Das bedeutet nicht, dass alle Teammitglieder gleich gut ausgebildet sein müssen, aber alle sollten mit den verwendeten Prozessen, Werkzeugen und Fähigkeiten vertraut sein.

Wenn sich das Wissen der Teammitglieder auf diese Weise überschneidet, ist es für die Teammitglieder einfacher zu kommunizieren. Dies fördert neuartige Lösungen, da die Mitglieder weniger durch die Erwartungen, wie etwas gemacht werden sollte, „gefangen“ sind. Cross-Training kann auch Engpässe aufgrund der Abhängigkeit von anderen verhindern und so die Produktivität steigern.

Zusammenarbeit

Zusammenarbeit und die dafür erforderliche Kommunikation sind Schlüsselelemente von DevOps. Diese Methodik setzt voraus, dass die Teammitglieder reibungslos zusammenarbeiten und auf Feedback reagieren, wenn etwas nicht wie erwartet funktioniert. Wenn Teammitglieder nicht in der Lage sind, zusammenzuarbeiten, wird die Arbeit isoliert und die Produktivität wird durch die Fertigstellung von Phasen eingeschränkt.

Kontinuierliche Verbesserung

DevOps verwendet einen iterativen Prozess mit kleinen Änderungen, die so lange verfeinert werden, bis eine Änderung die Prüfschwellen überschreitet. Sobald eine Änderung akzeptiert wird, wird die nächste in Angriff genommen. Diese kontinuierliche Verbesserung wird auf alle Aspekte von DevOps angewendet, einschließlich Produktentwicklung, Pipeline-Leistung und Prozesseffizienz.

Rechenschaftspflicht

Ein DevOps-Modell erfordert die Rechenschaftspflicht für alle Aufgaben – ob es sich nun um Entwicklungsaufgaben oder um betriebliche Aufgaben handelt – und beide sollten gleichermaßen von allen Mitgliedern der Organisation wahrgenommen werden. Dies beseitigt das traditionelle Denken von „das Problem eines anderen“ und trägt dazu bei, dass die Teams sorgfältig vorgehen, unabhängig davon, ob es sich um die Entwicklung oder den Betrieb handelt. Es trägt auch zum Aufbau und zur Festigung der Beziehungen innerhalb eines Teams bei, da alle Mitglieder gleiche Anstrengungen und Verantwortung erwarten.

Transparenz

Transparenz von Prozessen, Konfigurationen, Werkzeugen und Erwartungen sind bei DevOps sehr wichtig. Ohne Transparenz können Teams nicht effektiv zusammenarbeiten und es bleibt ein Gefühl von „wir gegen sie“. Dies verhindert die Kommunikation und macht es schwierig, andere zur Verantwortung zu ziehen. Mit Transparenz können alle Teammitglieder dazu beitragen, auftretende Probleme zu identifizieren und Verbesserungen im Kontext des Gesamtbildes vorzuschlagen.

Automatisierung

DevOps-Automatisierung hilft Teams, ihre Arbeit zu rationalisieren und zu standardisieren. Sie trägt auch zur Schaffung von Transparenz bei, da sie erfordert, dass Verfahren definiert und dokumentiert werden. Durch die Automatisierung mühsamer oder zeitaufwändiger Aufgaben können sich DevOps-Teams auf die Arbeit auf höherer Ebene konzentrieren. Dieser Fokus kann die Qualität verbessern und Innovationen fördern.

Der DevOps-Prozess

Während einzelne Verfahren innerhalb des DevOps-Prozesses variieren können, folgt der Gesamtprozess einer Reihe von ziemlich einheitlichen Schritten. Diese Schritte finden in einem Zyklus statt und können sich je nach Rückkopplungsschleifen ändern oder zu vorherigen Schritten zurückkehren. Ein DevOps-Lebenszyklus umfasst in der Regel die folgenden Schritte:

  • Planen: Zu Beginn eines Projekts, eines Sprints/einer Iteration oder eines Tages wird die Arbeit geplant und nach Prioritäten geordnet. Dadurch wird sichergestellt, dass alle Teammitglieder die aktuellen Ziele verstehen und definiert, welche Arbeit erwartet wird.
  • Code-Entwickler erstellen und übermitteln Codeänderungen oder -ergänzungen, die den für die aktuelle Iteration definierten Aufgaben entsprechen. Diese basieren auf einer Master-Code-Basis, auf die alle Entwickler Zugriff haben. Dieser Schritt umfasst auch die Überprüfung des Codes und eventuell erforderliche Klarstellungen oder Anpassungen. Wenn der eingereichte Code die Tests nicht besteht, wird er zur Modifizierung an diesen Schritt zurückgegeben.
  • Build – der eingereichte Code wird kompiliert, in Einheiten getestet und verpackt. Dies ist im Allgemeinen der erste automatisierte Schritt in der CI/CD-Pipeline. Wenn ein Build fehlschlägt, wird eine Rückmeldung an den Entwickler gesendet, und die eingereichte Änderung wird abgelehnt. Wenn der Build erfolgreich ist, wird er für weitere Tests weitergeleitet.
  • Erfolgreiche Builds werden einer Reihe von Tests unterzogen, um Funktionalität, Qualität und oft auch Sicherheit zu gewährleisten. Idealerweise werden die schnellsten oder kritischsten Tests zuerst durchgeführt. Wenn ein Test fehlschlägt, kann die ursprüngliche Code-Änderung so schnell wie möglich mit einer Rückmeldung versehen werden, und der Aufwand wird nicht verschwendet. Wenn alle Tests erfolgreich sind, wird der Build an die Auslieferung übergeben, und die Änderungen werden in den Master-Codezweig eingefügt. So wird sichergestellt, dass alle Entwickler weiterhin von derselben Basis aus arbeiten.
  • Auslieferung – der letzte bestandene Build wird beibehalten und für die Bereitstellung bereitgehalten.
  • Deploy – ein Build kann für zusätzliche Tests, z. B. für die Benutzerakzeptanz, in einer Testumgebung bereitgestellt werden. Oder er kann für die Freigabe in Staging- oder Produktionsumgebungen bereitgestellt werden.
  • Überwachen: Nach der Freigabe werden die Versionen überwacht, um Probleme zu erkennen, die übersehen wurden, und um Nutzungsdaten zu sammeln, die für zukünftige Verbesserungen genutzt werden können. Mehr über DevOps Monitoring erfahren Sie in unserem Artikel: DevOps Monitoring: The Abridged Guide.

DevOps vs. Agile: Was ist der Unterschied und wie hängen sie zusammen?

Wenn von der DevOps-Methodik die Rede ist, wird sie oft mit Agile in Verbindung gebracht. Das macht Sinn, wenn man bedenkt, dass viele DevOps-Teams agile Praktiken anwenden. Außerdem sind beide Methoden auf die Verbesserung von Geschwindigkeit, Effizienz und Qualität ausgerichtet. Trotzdem unterscheiden sich die Methoden, und die eine setzt die andere nicht unbedingt voraus.

Kommunikation

Bei agilen Methoden liegt der Schwerpunkt auf der Kommunikation zwischen den Teams und der Einbeziehung der Kunden in den gesamten Projektprozess. Ebenso kommt das meiste Feedback in agilen Prozessen von den Kunden.

In DevOps konzentriert sich die Kommunikation auf die Entwickler und den Betrieb. Kundenfeedback spielt in den Planungs- und Auslieferungsschritten eine Rolle, ist aber bei Zwischenschritten in der Regel nicht vorhanden. Stattdessen verlassen sich die Teams auf das Feedback von Tools und anderen Teammitgliedern, um die Arbeit zu steuern.

Teamstruktur

Sowohl Agile als auch DevOps legen Wert auf die gemeinsame Nutzung von Fähigkeiten und Cross-Training. Bei DevOps werden diese Fähigkeiten jedoch eher auf Kommunikation und Zusammenarbeit als auf Verantwortung angewandt. In DevOps-Teams sind die Entwickler für die Codeerstellung zuständig, während die Test- und Betriebsteams (DevOps-Teams genannt) für das Pipeline-Management, die Umgebungskonfiguration und die Bereitstellung verantwortlich sind.

Im Gegensatz dazu verschwimmen bei agilen Teams oft die Grenzen zwischen den Zuständigkeiten. In einem agilen Team wird jeder dazu ermutigt, die anfallenden Aufgaben zu übernehmen, und die Rollen sind weniger getrennt. Daher eignet sich Agile besser für kleinere Teams, während DevOps besser geeignet ist, die für größere Teams erforderliche Struktur zu schaffen.

Zeitplanung

Agile Methodiken folgen einem Sprint oder einer zeitlich begrenzten Iteration. Mehrere Sprints werden durchgeführt, bis ein Projekt abgeschlossen ist, wobei in jedem Sprint bestimmte Aufgaben und Ziele definiert werden. Sprints und die erwartete Arbeit werden oft an den Output des Teams angepasst.

In DevOps-Implementierungen ist das Ziel, immer ein lieferbares Produkt zu haben. Die Teams können jedoch Sprints oder Iterationen verwenden, um die Arbeit zu definieren, die für eine bestimmte Version erwartet wird. Außerdem sind DevOps-Teams oft an genauere Fristen und Benchmarks gebunden und haben weniger Flexibilität bei der Definition, wann ein Produkt fertig ist.

Automatisierung für die DevOps-Methodik: Kontinuierlicher Betrieb, Überwachung und Feedback mit StackPulse

Da unsere Unternehmen immer digitaler werden, wird die Zuverlässigkeit der Software-Services, die sie unterstützen, zu einem geschäftskritischen Thema. Jedes Softwaresystem, egal wie ausgereift es ist, wird Produktionswarnungen haben. Dabei handelt es sich entweder um lokale Probleme, die sich kaum oder gar nicht auf die Endnutzer auswirken, oder um kritische Probleme, die sich auf die Verfügbarkeit des Dienstes für die Nutzer auswirken.

In beiden Fällen sollten die Probleme von den jeweiligen Verantwortlichen untersucht, analysiert und bei Bedarf behoben werden. Ohne angemessene Automatisierung führt die große Anzahl von Vorfällen und Alarmen in den meisten Unternehmen zu:

  • Negativen Produktivitätsauswirkungen auf R&D- und DevOps-Teams
  • „Alert-Müdigkeit“ für Eigentümer und unterstützende Teams
  • Längere Ausfallzeiten für Produktionsdienste.

StackPulse ist eine Automatisierungsplattform für die Betriebs-, Überwachungs- und Feedbackphasen des DevOps-Zyklus. Sie ermöglicht es DevOps- und Engineering-Teams, kodifizierte Playbooks für diese Prozesse zu definieren. Dadurch kann Ihr Unternehmen Prozesse auf wiederholbare und messbare Weise automatisieren und sie so oft wie nötig auslösen, ohne dass zusätzliche manuelle Arbeit anfällt.

Sichern Sie sich einen frühen Zugang zu StackPulse und gehören Sie zu den Ersten, die unsere DevOps/SRE-Automatisierungsplattform ausprobieren können.

Leave a Reply