Was versteht man unter DevOps ?

  • Karriere Tips

  • Karriere

Was versteht man unter DevOps ?

DevOps, ein Kunstwort aus "Development" (Entwicklung) und "Operations" (Betrieb), ist eine kulturverändernde Methodik, die darauf abzielt, die Prozesse zwischen Softwareentwicklung und IT-Teams zu rationalisieren. DevOps wurde 2007 entwickelt, um die traditionell getrennten Abteilungen zu entflechten und Ineffizienzen und Kommunikationsdefizite zwischen den beiden Gruppen zu beheben. DevOps vereint wichtige Praktiken wie Agile, kontinuierliche Bereitstellung und Automatisierung unter einem strategischen Entwicklungsplan.

Was ist DevOps?

Stellen Sie sich vor, Sie arbeiten in einem großen Technologieunternehmen. Ihr Unternehmen konkurriert mit anderen großen Tech-Start-ups um die nächste bahnbrechende Software. Je schneller Sie auf den Markt kommen, desto größer sind die Chancen Ihres Unternehmens, die Softwarebranche zu dominieren. Leider werden die Softwareprodukte Ihres Unternehmens nur alle paar Monate (und vielleicht sogar nur einmal im Jahr) aktualisiert. Ihre Qualitätssicherung (QA) ist langwierig und langwierig. Und wenn Ihr Produkt dann tatsächlich auf den Markt kommt, ist es voller Bugs und geht sofort kaputt. Sie haben das Software-Wettrüsten verloren.

Das war eine allzu bekannte Geschichte für viele Technologieunternehmen, bis DevOps aufkam und die Welt der Softwareentwicklung komplett auf den Kopf stellte. DevOps, eine Kombination aus den Begriffen "Entwicklung" und "Betrieb", ist eine kulturverändernde Softwareentwicklungsmethode, die die technische Abteilung, die den Code schreibt, und die Betriebs- und IT-Abteilung, die ihn implementiert, voneinander trennt. Um es klar zu sagen: DevOps ist nicht nur ein Tool oder ein Prozess. Vielmehr umfasst es eine Reihe von Ansätzen wie Agile und Site-Reliability-Engineering, die dazu beitragen, die Entwicklungskultur zu verändern und die Grenzen zwischen Technik- und IT-Teams zu verwischen.

VORTEILE VON DEVOPS

  • Schnellere Markteinführung
  • Verbesserte Kommunikation zwischen den Teams
  • Erhöhte Transparenz im gesamten Entwicklungsprozess
  • Einheitliche und gemeinsame Ziele für das Team
  • Fehler lassen sich leichter und schneller finden und beheben
  • Erhöhte Benutzerzufriedenheit
  • Ein flexibleres Team

Vor der DevOps-Bewegung waren Ingenieure und Betriebsteams vollständig voneinander getrennt. Die Ingenieure arbeiteten ausschließlich an der Entwicklung des Codes für die Software, während die Betriebsteams die Aufgabe hatten, die einzelnen Anwendungen am Laufen zu halten. Ihre Wege kreuzten sich nicht. Ihre Ziele konkurrierten mit den Zielen der anderen. Vor allem aber kreuzten sich ihre Kommunikationswege selten. Das Silo der beiden wichtigsten Teams eines Unternehmens führte zu unglaublich langen Bereitstellungszeiten, mangelhafter Qualitätssicherung und fehlender Kommunikation, was zu gescheiterten Produkteinführungen und Millionen von Dollar an verschwendeter Zeit und Geld führte. Kurz gesagt, die alte Softwareentwicklungsmethodik war ineffizient und mit Problemen behaftet.

DevOps kam in den späten 2000er Jahren auf, um den Lebenszyklus der Systementwicklung zu retten. Die gesamte Idee von DevOps basiert auf der Automatisierung der Prozesse zwischen Softwareentwicklungs- und IT-Betriebsteams, damit sie Produkte schneller und mit weniger Problemen erstellen, testen und freigeben können. DevOps ist kein magisches Tool, das die Probleme beheben kann, mit denen eine Softwareversion derzeit zu kämpfen hat. Vielmehr handelt es sich um einen kulturellen Wandel, der die Kommunikation und Zusammenarbeit zwischen sehr wichtigen Beteiligten fördert. Das Ziel von DevOps ist es, den Entwicklungszyklus effizienter zu gestalten, damit Unternehmen kontinuierliche Produktveröffentlichungen und -aktualisierungen ohne Qualitätseinbußen durchführen können. Kurz gesagt lässt sich DevOps mit Hilfe des Akronyms CALMS in fünf Prinzipien zusammenfassen.

DEVOPS-GRUNDSÄTZE

DevOps-Grundsätze: Das CALMS-Framework

Das CALMS-Framework wurde von DevOps-Pionier Jez Humble entwickelt, um zu bestimmen, wie erfolgreich ein Unternehmen bei der Einführung von DevOps sein kann. Um DevOps-Erfolg zu erzielen, müssen Unternehmen in der Lage sein, sich auf fünf spezifische Prinzipien einzustellen:

Kultur (Culture)

Unternehmen, die DevOps einführen, müssen in der Lage sein, eine Kultur der Zusammenarbeit zu kultivieren. Ingenieure und IT-Betriebsexperten arbeiten zusammen, anstatt miteinander zu konkurrieren, um bestimmte Kennzahlen zu erreichen oder bestimmte Ziele zu verwirklichen. Die Ziele beider Gruppen sind besser aufeinander abgestimmt, und beide Teams arbeiten bei den Qualitätssicherungstests Seite an Seite. Die Zusammenarbeit ermöglicht es den Teams, Fehler schnell zu identifizieren, sich auf Lösungen zu konzentrieren und schnelle Korrekturen zu implementieren - und das alles innerhalb weniger Tage (statt einiger Monate oder gar nicht).

Automatisierung (Automation)

Die Automatisierung ist ein wichtiger Bestandteil der DevOps-Methodik. Die Einführung von sich wiederholenden und wiederholbaren Prozessen trägt dazu bei, die Arbeit zu beschleunigen und zuverlässige Systeme zu schaffen. Continuous Delivery (CD) ist ein wichtiger Teil des Automatisierungsprozesses. CD bedeutet im Wesentlichen, dass die Entwicklungs- und Betriebsteams den Code kontinuierlich testen und schneller bereitstellen. Die Teams verlassen sich auf eine ganze Reihe von CD-Software, um den Prozess zu beschleunigen. Anstelle einer einzigen gigantischen Bereitstellung, die Monate dauert, setzt Continuous Delivery auf kleinere, aber effizientere Bereitstellungen. Dies verringert das Risiko und ermöglicht es den Entwicklungsteams, sich um alle Korrekturen zu kümmern, die erforderlich sind.

Schlank (Lean)

In Bezug auf DevOps bedeutet "schlank", dass die Hilfsteile der Softwareentwicklung entfernt werden, sodass nur die absolut notwendigen Prozesse übrig bleiben. Zu einer echten DevOps-Mentalität gehört es, ständig an den Prozessen herumzubasteln, um sie so effizient wie möglich zu gestalten. Die Teams müssen bei der Entwicklung eines Produkts eine "Agile-First"-Mentalität an den Tag legen, d. h. sie entwickeln zunächst ein einfaches Produkt und verbessern es kontinuierlich, um in einigen Monaten oder Jahren ein perfektes Produkt zu entwickeln. Da sich Pläne, Technologien und Teams häufig ändern, bedeutet ein schlanker Ansatz bei der Softwareentwicklung, dass die Teams ihre Prioritäten schnell ändern können, ohne das erhöhte Risiko oder die Verschwendung, die mit traditionellen Methoden einhergehen.

Messung (Measurement)

Ohne Metriken lassen sich Verbesserungen nur schwer messen. DevOps setzt eine Reihe von Tools und Technologien ein, mit denen die Leistung gemessen und realistische KPIs festgelegt werden können. Übliche Messungen in einer DevOps-Umgebung sind: Wie viele Tickets wurden pro Release bearbeitet? Wie viele Bugs wurden gefunden (und wie lange dauerte es, sie zu beheben)? Wie viele Benutzer waren insgesamt von den Fehlern betroffen? Wie ist die Reaktionszeit unserer Anwendung? Diese Fragen (und viele andere) helfen den Teams dabei, auf dem Laufenden zu bleiben, wie sie in ihrem Softwareentwicklungsprozess vorankommen.

Gemeinsame Nutzung (Sharing)

Anstatt völlig getrennte Aufgaben zu haben, teilen sich Ingenieure und Betriebsteams jetzt die Verantwortung. Dieses Gefühl, ein Ziel (und die damit verbundenen Herausforderungen) gemeinsam zu verfolgen, überbrückt die Kluft zwischen den Teams und fördert eine Kultur der Zusammenarbeit. Der Sharing-Aspekt von DevOps geht davon aus, dass dieselben Personen, die die Anwendung entwickeln, auch dieselben sein sollten, die sie ausliefern und warten. Die gemeinsame Nutzung füllt die Lücken im Entwicklungsprozess und stellt sicher, dass alle Teams von Anfang bis Ende einen praktischen Ansatz verfolgen.

DevOps-Werkzeuge (Tools)

Der DevOps-Prozess lebt von der Integration verschiedener Technologien, um Prozesse zu automatisieren und die Qualität des Endprodukts zu verbessern. Im Folgenden finden Sie einige der beliebtesten Tools, die die meisten Unternehmen in ihrem DevOps-Technologiestapel einsetzen:

Git & GitHub

Git ist eines der beliebtesten Tools in der DevOps-Welt. Git ist ein Tool zur Quellcodeverwaltung (SCM), das volle Transparenz und Klarheit im Entwicklungsprozess ermöglicht. Git ist ein fantastisches Tool, um verschiedene Versionen von Quellcode zu erstellen, zu experimentieren und dann neue Funktionen einfach zusammenzuführen, wenn sie bereit für die Auslieferung sind. GitHub ist eine ergänzende Technologie, die sowohl als Datenspeicher als auch als Netzwerktool für Ingenieure dient. GitHub speichert den mit Git erstellten Open-Source-Code und macht ihn für ein breites Netzwerk von Ingenieuren zugänglich.

Docker

Docker hat sich zu einem der wichtigsten DevOps-Tools entwickelt, weil es die Containerisierung zu einem Kinderspiel macht. Was ist Containerisierung? Bei der Containerisierung enthält jeder "Container" alle Elemente, um ein Produkt von Anfang bis Ende zu erstellen. Bei der herkömmlichen Methode der Softwareentwicklung wurde der Code von einer bestimmten Computerumgebung auf eine virtuelle Maschine oder ein Betriebssystem übertragen. Dies führte zu einer Vielzahl von Fehlern und Problemen. Die Containerisierung beseitigt diese Probleme, indem sie den Code mit den verschiedenen Dateien, Bibliotheken und anderen Tools kombiniert, die für die Ausführung eines Produkts erforderlich sind. Container stehen unabhängig vom Host und werden zu sicheren Arbeitsumgebungen, die das Experimentieren fördern und das Risiko im Entwicklungsprozess verringern.

Jenkins

Jenkins ist ein Automatisierungswerkzeug für die Softwareentwicklung, das verschiedene Prozesse in der Entwicklungspipeline beschleunigt. Mit Jenkins können Teams ihre Continuous Integration/Continuous Delivery (CI/CD) vollständig anpassen. Die Flexibilität von Jenkins bietet eine Vielzahl von Optionen, die es den Entwicklungsteams ermöglichen, alles von der Erstellung des Produkts bis hin zum Smoke-Testing auf eine Art und Weise anzugehen, die sich für das Team angenehm und effizient gestaltet. Eine weitere wünschenswerte Eigenschaft von Jenkins ist die Tatsache, dass es mehr als 1.000 Plugins unterhält, die sich in fast jedes andere Mainstream-DevOps-Tool integrieren lassen.

Kubernetes

Kubernetes ist ein Containerisierungstool, ähnlich wie Docker, das bei der Containerisierung im großen Maßstab hilft. Kubernetes ist für umfangreiche DevOps-Systeme nützlich, da es die Verwaltung von Hunderten verschiedener Container gleichzeitig automatisiert. Anstatt Hunderte von Containern manuell auf demselben Rechner bereitzustellen, ermöglicht Kubernetes die Automatisierung der Bereitstellungszeitpunkte von Containern, um zu vermeiden, dass Systeme durch zu viele gleichzeitige Bereitstellungen überlastet werden.

Das könnte dich auch interessieren