DevOps - ist es eine Philosophie, eine Kultur, eine Methodik, eine Praktik, eine Reihe von Tools, eine Teamrolle oder gar alle sechs?

Ein DevOps-Ansatz lässt sich im Kontext dieser sechs Bereiche gut definieren und einordnen. Genau darauf gehen wir hier ein und klären die häufigsten Fragen und Missverständnisse.

AgileUPDATED ON Mai 18, 2023

John Adam K&C head of marketing

Author

Cover image for blog post explaining DevOps

Development Operations, allgemein als DevOps bezeichnet, ist heute einer der einflussreichsten Trends in der Softwareentwicklung. Der Begriff selbst spiegelt wider, worum es geht: die Verschmelzung von Entwicklungs- und Betriebsprozessen, -praktiken und -verantwortlichkeiten zu einem einzigen DevOps-Softwareentwicklungsansatz.

In einer traditionellen Organisation entwirft, programmiert und testet das Softwareentwicklungsteam eine Softwareanwendung (die Qualitätssicherung wird manchmal als drittes separates Team betrachtet) und übergibt sie dann an das Betriebsteam, das für den Betrieb für die Benutzer verantwortlich ist. Bei DevOps werden das Entwicklungsteam und das Betriebsteam zu einem einzigen DevOps-Team mit gemeinsamen Leistungskennzahlen zusammengeführt.

Agile und DevOps-Entwickler, Teamverstärkung und Berater

Nach Ihren individuellen Bedürfnissen!

Welche Beziehung besteht zwischen DevOps und Agile?

DevOps-Teams werden fast immer auch als „agile Teams“ bezeichnet, wobei die genaue Art der Beziehung zwischen DevOps und agile Softwareentwicklung nicht immer klar ist. Der einfachste Weg, die Beziehung zwischen DevOps und Agile zu verstehen, besteht darin, DevOps als eine Erweiterung der agilen Prinzipien zu betrachten.

Ein DevOps-Ansatz wendet ähnliche Prinzipien an wie das Agile Manifesto, erweitert sie aber auf ein einziges Team, das die Rollen, Verantwortlichkeiten und Leistungskennzahlen von Entwicklung und Betrieb vereinheitlicht.

DevOps löst ein mit der agilen Entwicklung verbundenes Engpassproblem. Wenn agile Frameworks wie Scrum oder „Extreme Programming“ (XP) das Entwicklungstempo neuer Iterationen beschleunigen, haben die einzelnen Betriebsteams oft Schwierigkeiten, die Software rechtzeitig zu testen und bereitzustellen, wodurch der Mehrwert der schnelleren Entwicklung verloren geht. Die Ausweitung eines agilen Ansatzes auf den gesamten Lebenszyklus der Softwareentwicklung (SDLC) bis hin zur Bereitstellung behebt diesen Mangel.

Wie definiert man DevOps am besten?

Trotz seiner Popularität ist das Konzept von DevOps selbst für viele in der IT-Branche oder mit ihr verbundene Personen oft nicht klar. Das kann dazu führen, dass DevOps als ein Schlagwort ohne wirkliche Substanz missverstanden wird.

Die Tatsache, dass das Wesen von DevOps auf so viele verschiedene Arten beschrieben wird, indem es als synonym für Philosophie, Kultur, Methodik, Praktiken, Tools und Teamrollen verwendet wird, trägt zweifelsohne dazu bei. Es ist jedoch kein Widerspruch zu sagen, dass DevOps all diese Dinge gleichzeitig sein kann. Um die Vorteile von DevOps voll ausschöpfen zu können, ist dies sogar notwendig:

  • Eine Philosophie
  • Eine Kultur
  • Eine Methodik
  • Praktiken
  • Die Verwendung von Tools mit Schwerpunkt auf der Automatisierung und;
  • beinhalten oft unterschiedliche Teamrollen

Um die in der Überschrift dieses Abschnitts gestellte Frage „Wie definiert man DevOps am besten?“ zu beantworten, müssen wir zunächst erklären, warum DevOps auf so unterschiedliche Weise beschrieben werden kann. Außerdem ist es sinnvoll, zu untersuchen, was DevOps nicht ist.

DevOps als Philosophie

Auf der abstraktesten Ebene kann DevOps als eine Philosophie beschrieben werden – was häufig auch geschieht: „eine Theorie oder Einstellung, die als Leitprinzip für das Verhalten dient„.

Der Ausgangspunkt eines erfolgreichen DevOps-Ansatzes für die Softwareentwicklung ist, dass das Team (viele würden sogar behaupten, dass dies auf organisatorischer Ebene geschehen sollte, insbesondere in einem Technologieunternehmen) das Konzept akzeptiert, warum die Vereinheitlichung von Entwicklung (einschließlich Testen) und Betrieb zu besseren Ergebnissen für alle Interessengruppen führen wird.

DevOps als Kultur

Während DevOps als Philosophie auf einer konzeptionellen Ebene eingeführt wird, bedeutet DevOps als Kultur, dass sich das Konzept im Ansatz durch Prozesse und Praktiken manifestiert.

Eine DevOps-Teamkultur bedeutet, dass Dinge gewohnheitsmäßig getan werden, bis zu dem Punkt, an dem sie tief verwurzelt sind, was die Verwirklichung der DevOps-Philosophie der Vereinheitlichung von Entwicklung, Testen und Betrieb als eine kontinuierliche Feedbackschleife unterstützt.

Eine DevOps-Kultur bedeutet, dass die Herangehensweise, Entscheidungen und Praktiken von Softwareentwicklungsteams und anderen Mitgliedern der Organisation, mit denen sie direkt zusammenarbeiten oder deren Entscheidungen sich auf sie auswirken, standardmäßig von dieser Philosophie geprägt sind.

Zur Einführung einer DevOps-Kultur gehört die Bildung von multidisziplinären Teams, die für den gesamten Lebenszyklus eines Produkts verantwortlich sind. Außerdem müssen Transparenz, Kommunikation und Zusammenarbeit zwischen Rollen mit Titeln gefördert werden, die traditionell als zu den Entwicklungs- oder Betriebsteams gehörig betrachtet wurden.

Zu den Säulen einer DevOps-Kultur gehören:

  • Zusammenarbeit, Sichtbarkeit, Konsens – verschiedene Teamrollen müssen die Zusammenarbeit planen, um individuelle und Teamzuständigkeiten, Ziele und Metriken auf eine Weise abzustimmen, die die DevOps-Philosophie unterstützt.
  • Teamübergreifende Verantwortlichkeiten und Rechenschaftspflicht – Verantwortlichkeiten und Rechenschaftspflicht auf Rollen- und Teamebene werden neu definiert, um gemeinsame Leistungskennzahlen zu schaffen, die eine Brücke zwischen Entwicklung und Betrieb schlagen.
  • Kürzere Release-Zyklen – sind kürzere Release-Zyklen Teil der DevOps-Kultur oder das Ergebnis der DevOps-Kultur? Es ist ein bisschen wie mit dem Huhn und dem Ei, aber bei K&C betrachten wir sie als so grundlegend, dass wir sie als Teil der Kultur betrachten.

Gene Kim, einer der Autoren des 2013 erschienenen DevOps-Buches The Phoenix Project sowie von The DevOps Handbook (2016), formulierte drei Leitprinzipien, die einer DevOps-Kultur zugrunde liegen sollten:

  • Systemdenken: betont die Leistung des gesamten Systems, im Gegensatz zur Leistung einer bestimmten Arbeitsgruppe oder Abteilung, wobei der Schwerpunkt auf allen Geschäftswertströmen liegt, die durch die IT ermöglicht werden. Im Zusammenhang mit dem Lebenszyklus der Softwareentwicklung beginnt das Systemdenken mit der Ermittlung der Anforderungen (z. B. durch das Unternehmen), führt über die Planung und Entwicklung, bevor eine Anwendung in die Produktion überführt wird, wo der Wert dann dem Kunden als eine Art Dienstleistung geliefert wird.
  • Verstärkung von Feedback-Schleifen: Als Initiative zur Prozessverbesserung besteht das Ziel von DevOps darin, Feedback-Schleifen zu verkürzen und zu verstärken, damit kontinuierlich Korrekturen und Verbesserungen vorgenommen werden können. Das Ergebnis der verstärkten Feedbackschleifen sollte ein besseres Verständnis und eine bessere Reaktion auf alle Kundenbedürfnisse sein, um dann das Wissen dort einzubetten, wo es benötigt wird.
  • Kontinuierliches Experimentieren und Lernen: Eine DevOps-Kultur beinhaltet einen klaren Fokus auf die Suche nach neuen und besseren Arbeitsmethoden. Eine DevOps-Transformation sollte, laut Kim, „eine Kultur schaffen, die kontinuierliches Experimentieren, Risikobereitschaft und das Lernen aus Fehlern fördert, sowie ein Verständnis dafür, dass Wiederholung und Übung wesentlich sind, um eine Aufgabe zu meistern.“

DevOps als Methodik

Eine Methodik ist ein spezifischer Ansatz und eine bestimmte Reihenfolge, um ein bestimmtes Ziel zu erreichen. Softwareentwicklungsmethoden sind nicht anders, denn jedes neue Softwareprodukt durchläuft die gleichen 6 allgemeinen Phasen eines Entwicklungslebenszyklus:

  1. Planung
  2. Entwurf
  3. Entwicklung
  4. Tests
  5. Implementierung
  6. Instandhaltung

Phases of the software development life cycle infographic-1

DevOps-Lebenszyklen werden oft als etwas detaillierter dargestellt, indem zwei zusätzliche Phasen hinzugefügt werden:

  1. Plan
  2. Code
  3. Build
  4. Test
  5. Package
  6. Release
  7. Deploy
  8. Operate
  9. Monitor

DevOps life cycle phases infographic

Eine DevOps-Methodik durchläuft diese acht Phasen der Softwareentwicklung und des Betriebs in einer Endlosschleife.

DevOps als Prozesse und Praktiken

Wenn DevOps als Methode eine bestimmte Abfolge von Handlungen ist, die ungefähr durch die Endlosschleife der acht beschriebenen Lebenszyklusphasen dargestellt wird, dann sind DevOps-Prozesse und -Praktiken eine Reihe von Aktionen, die in einer bestimmten Reihenfolge ausgeführt werden und diese Phasen bilden.

DevOps-Prozesse und -Praktiken sind darauf ausgelegt, eine Phase zu beschleunigen, zu automatisieren und zu rationalisieren. Und einige können sich über mehrere Phasen erstrecken. Zu den DevOps-Prozessen und -Praktiken gehören:

  • Erstellen von Code-Repositories
  • Quellcode-Kontrolle
  • Code kompilieren
  • Code-Validierungstests
  • Erstellung von Softwarepaketen
  • Kontinuierliche Tests
  • Kontinuierliche Integration (CI)
  • Kontinuierliche Delivery
  • Kontinuierliche Deployment

Sie können auch die Prozesse und Praktiken eines bestimmten agilen Frameworks wie Scrum beinhalten, zu dem DevOps als Erweiterung fungiert, z. B:

  • Tägliche Stand-ups
  • Erstellung des Product Backlogs
  • Sprint-Planungsmeetings
  • Arbeit im Sprint
  • Die Störfaktorenliste
  • Sprint-Überprüfung und Sprint-Retrospektive

Oder Kanban, zum Beispiel:

  1. Visualisieren Sie den Arbeitsfluss
  2. WIP (Work in Progress) begrenzen
  3. Fluss managen
  4. Prozessrichtlinien explizit machen
  5. Feedback-Schleifen implementieren
  6. Kollaborativ verbessern, experimentell weiterentwickeln

Können wir Ihnen bei Ihrem nächsten Softwareentwicklungsprojekt helfen?

Flexible Modelle für Ihre Bedürfnisse!

DevOps Tools

DevOps wird in hohem Maße mit dem Ökosystem von Tools assoziiert, die nach dem kulturellen Mantra „wenn man es automatisieren kann, sollte man es automatisieren“ entwickelt wurden.

DevOps ist deshalb so automatisierungsfreundlich, weil es bedeutet:

  • Die Teams können sich stärker auf das Produkt konzentrieren
  • Ergebnisse sind wiederholbar und vorhersehbar
  • Die Teams können viel schneller und flexibler auf Probleme reagieren

Das ist auch der Grund, warum CI/CD-Pipelines ein so wesentlicher Bestandteil von DevOps sind. Es gibt jedoch fantastische Tools, die dabei helfen, jede Phase des DevOps-Lebenszyklus sowie viele seiner Prozesse und Praktiken zu automatisieren bzw. effizienter zu gestalten.

Octopus Deploy hat eine ausgezeichnete Übersicht von Tools zusammengestellt, die von DevOps-Teams häufig verwendet werden. Einige, wie z. B. die in der Planungsphase, sind eher allgemein gehalten, während andere spezifischer auf den DevOps-Kontext zugeschnitten sind:

Planung

Tools für die Zusammenarbeit und die Projektverwaltung

  • Slack
  • Zoom
  • Trello
  • Teams
  • Confluence
  • com

Code-Repositories und Quellcodekontrolle

Die Quellcodekontrolle wird mit Git verwaltet und Code-Repositories sind gehostete Dienste für mit Git verwalteten Code.

  • Git
  • GitHub
  • GitLab
  • Bitbucket

Build und Test

DevOps-Teams nutzen CI-Plattformen oder Build-Server, um durch die Automatisierung von Codekompilierung, Validierungstests und Paketerstellung Zeit zu sparen. Zu den beliebtesten gehören:

  • Jenkins
  • GitHub Actions
  • TeamCity
  • Circle CI
  • Atlassian Bamboo
  • Azure DevOps

Pakete (Package)

Die Packaging-Tools werden verwendet, um Code in einsatzfähige Elemente umzuwandeln, die von Paket-Repositories gehostet und eingesetzt werden. Zu den beliebtesten gehören:

  • Docker Hub
  • JFrog
  • Codefresh
  • Red Hat Quay

Release und Deployment

Tools für das Release-Management und das Deployment helfen bei der Automatisierung von CI/CD-Pipelines, zu denen beliebte Optionen gehören:

  • Octopus
  • Atlassian Bamboo
  • AWS CodeDeploy
  • GitLab CI/CD
  • DeployHQ
  • ElectricFlow

Operations

Zu den beliebten DevOps-Tools, die für die Einrichtung, den Betrieb und die Wartung der Pipeline-Infrastruktur verwendet werden, gehören:

  • Chef
  • Puppet Enterprise
  • Saltstack
  • Octopus Runbooks

Monitoring (Überwachung)

DevOps-Tools, die bei der Überwachung eingesetzt werden, durchsuchen Code und zugehörige Systeme nach Daten, die bei Entscheidungen über Leistung und Kundennutzen helfen:

  • New Relic
  • Splunk
  • Dynatrace
  • Datadog

DevOps als Rolle oder Jobbezeichnung

Bei DevOps geht es weniger um die Einführung neuer Rollen und Jobbezeichnungen als vielmehr um eine Neuverteilung der Zuständigkeiten innerhalb eines Teams mit einem eher interdisziplinären Ansatz. Das gesamte Team ist gemeinsam für die Planung, Entwicklung, Prüfung und Freigabe von Anwendungen und Infrastruktur verantwortlich.

Der Titel „DevOps Engineer“ ist inzwischen so weit verbreitet, dass dieser laut mehreren Studien im Jahr 2021 als die weltweit am meisten nachgefragte Rolle in der Softwareentwicklung gilt.

Was ist die Aufgabe eines DevOps-Engineer?

Obwohl die Nachfrage nach DevOps Engineers extrem hoch ist, lässt sich der Begriff auf eine relativ große Auswahl an Rollen anwenden. Ein DevOps Engineer, der an einem Softwareentwicklungsprojekt arbeitet, kann ganz andere Aufgaben haben als ein anderer, der an einem anderen Projekt arbeitet. Es ist sogar durchaus möglich, dass ein einziges DevOps-Team mehrere DevOps Engineers mit unterschiedlichen Schwerpunkten und Verantwortlichkeiten umfasst.

DevOps-Engineers konzentrieren sich in der Regel auf den Aufbau und die Pflege von CI/CD-Pipelines und haben Erfahrung mit der Einrichtung und Verwendung gängiger DevOps-Tools zur

  • Versionskontrolle
  • Server für kontinuierliche Integration (CI)
  • Konfigurationsverwaltung
  • Automatisierung des Deployments
  • Container und Container-Orchestrierung (insbesondere Kubernetes)
  • Infrastruktur-Orchestrierung
  • Überwachung und Analytik
  • Testen und Cloud-Qualitätskontrolle
  • Infrastruktur als Code (IAC)

Weitere Einzelheiten über die Rolle des DevOps-Ingenieurs finden Sie in unserem Blog Profil eines DevOps-Engineer und DevOps-Engineer Gehalt, ein Internationaler Vergleich.

Was ist der Vorteil von DevOps?

Der Vorteil eines kombinierten DevOps-Teams liegt in der höheren Qualität und Zuverlässigkeit der Software, die schneller optimiert werden kann. Aus diesem Grund ist DevOps ein wichtiger Trend in der modernen Softwareentwicklung.

Der Cloud-Service-Anbieter Microsoft Azure führt die Vorteile von DevOps als Business-Case-Leistungen auf:

  • Kürzere Zeit bis zur Markteinführung
  • Anpassung an den Markt und den Wettbewerb
  • Erhaltung der Stabilität und Zuverlässigkeit von Systemen
  • Verbesserung der MTTR (Mean Time To Recover)

In diesem Blog befassen wir uns mit verschiedenen, aber miteinander kompatiblen Definitionen von DevOps und damit, wie DevOps in der Praxis umgesetzt wird, um die organisatorischen Vorteile zu erzielen, die diesen Trend so einflussreich machen.

Welches Problem wird durch DevOps gelöst?

DevOps bietet Vorteile für Softwareentwicklungsteams und auf organisatorischer Ebene, indem es dazu beiträgt, Schwachstellen zu beseitigen, die mit der funktionalen Trennung zwischen denjenigen, die den Code einer Softwareanwendung schreiben und testen, bzw. denjenigen, die ihn bereitstellen und verwalten, verbunden sind.

Die frühen Befürworter von DevOps wie Patrick Debois, Andrew Shafer und John Allspaw vertraten die Ansicht, dass diese Trennung inhärente Schwachstellen aufweise, die die Gesamtqualität der an die Benutzer gelieferten Software beeinträchtigten. Diese resultierten aus der Tatsache, dass getrennte Teams, die nach unterschiedlichen Leistungsindikatoren beurteilt wurden, für dasselbe Endziel verantwortlich waren: den Benutzern eine möglichst hochwertige Software zu bieten.

Wenn das Softwareentwicklungsteam nicht an der erfolgreichen Bereitstellung der von ihm erstellten Software beteiligt ist und keine Verantwortung dafür trägt, liegt es in der Natur des Menschen, dass es sich weniger für die Qualität und Effizienz dieser Bereitstellung interessiert. DevOps bricht die Grenzen zwischen Entwicklung und operativen Abläufen auf, um die Verantwortung und Anerkennung für qualitativ hochwertige Software, die im Sinne der Nutzererfahrung definiert ist, zu teilen.

DevOps KPIs

Jedes Unternehmen, das sich zu einer DevOps-Umstellung verpflichtet, benötigt KPIs (Key Performance Indicator), um die Auswirkungen auf die strategischen Ziele zu verfolgen und zu messen. Dazu gehören in den meisten Fällen:

  • Deployment-Häufigkeit: Die Deployments sollten nach der Einführung von DevOps kleiner und häufiger werden.
  • Häufigkeit der fehlgeschlagenen Deployments: Diese Kennzahl sollte rückläufig sein.
  • Freigegebene Funktionen pro Quartal: Die Zahl sollte steigen.
  • MTTD (Mean-Time-To-Discovery): Die durchschnittliche Zeit, die vergeht, bis ein Fehler in der Software bemerkt wird, sollte sinken.
  • MTTR (Mean-Time-To-Recovery): Die durchschnittliche Zeit, die benötigt wird, um Fehler zu beheben, wenn etwas schief gelaufen ist, sollte ebenfalls sinken.
  • MLT (Mean Lead Time): Die durchschnittliche Zeitspanne zwischen der Anforderung eines neuen Codes oder einer neuen Funktion und der Implementierung sollte sinken.
  • Uptime (Betriebszeit): Die Verfügbarkeit der Software, einschließlich geplanter Stillstände und Ausfälle, sollte steigen.
  • Defect Escape Rates: Die Anzahl der Bugs und Fehler, die beim Testen und in der Qualitätssicherung nicht erkannt werden und in die Produktion gelangen, sollte sinken.
  • Anwendungsleistung: Die Leistung der Software sollte sich nach der Freigabe neuer Iterationen deutlicher verbessern. Die Softwareleistung sollte durch eine eigene Reihe von KPIs gemessen werden..

Was ist die Verbindung zwischen DevOps und Cloud-Entwicklung?

DevOps wird vor allem mit Cloud und Cloud-nativer Entwicklung in Verbindung gebracht, ist aber keineswegs nur in diesem Kontext anwendbar. Im weitesten Sinne ist Cloud Computing definiert: „ermöglicht es, Infrastrukturen als Code oder Templates zu definieren und damit wiederholbare Prozesse zu schaffen, die ohne Cloud-Technologien nicht möglich sind.“

Diese „wiederholbaren Prozesse“ ermöglichen die Automatisierung, die, wie wir später noch näher erläutern werden, für die DevOps-Entwicklung von zentraler Bedeutung ist. Kurz gesagt, die Geschwindigkeit, Skalierbarkeit und Effizienz der Cloud helfen agilen und DevOps-Teams, die Geschwindigkeit und Qualität ihrer Arbeit zu erhöhen.

Die Cloud-native Entwicklung wird meist als „in der Cloud für die Cloud entwickelt“ beschrieben. Dies bezieht sich auf die Tatsache, dass die Entwicklungsumgebung von Cloud-nativen Anwendungen eine exakte Nachbildung der Produktionsumgebung ist bzw. sein sollte, in der die Software ausgeführt wird.

Die Spiegelung von Entwicklungs- und Produktionsinfrastruktur hat zwei wesentliche Vorteile:

  • – Sofware sollte in der Produktionsumgebung genauso laufen, wie sie in der Entwicklungsumgebung gelaufen ist. Das bedeutet, dass der Betrieb keine separate Bereitstellungsinfrastruktur benötigt, um die von der Entwicklung erstellte Software reibungslos und zuverlässig ausführen zu können. Auch muss die Software nicht an die Entwicklungsabteilung zurückgegeben werden, um sie zu aktualisieren und kompatibel zu machen.
  • – Die Abstimmung von Entwicklungs- und Bereitstellungsumgebungen ermöglicht kontinuierliche Iterations- und Bereitstellungspipelines (CI/CD), die die Softwareentwicklung schneller und flexibler machen und so die Agilität und letztlich die Qualität verbessern.

DevOps verfolgt bei jeder neuen Anwendung einen Cloud-first-Ansatz, der die Frage „Sollen wir die Cloud für diese Anwendung nutzen?“ durch die Frage „Gibt es einen Grund, die Cloud nicht für diese Anwendung zu nutzen?“ ersetzt.

Zu den üblichen Gründen, warum eine Anwendung nicht ausschließlich oder überhaupt nicht in einer Cloud-Umgebung entwickelt und ausgeführt werden sollte, gehören Sicherheits- und Regulierungsanforderungen sowie manchmal auch umfassendere Infrastrukturfaktoren auf Unternehmensebene.

Aber die Nichtnutzung der Cloud oder nur der Cloud schließt DevOps nicht aus. Die DevOps-Mentalität, bei der Entwicklung und Betrieb gemeinsam auf das gemeinsame Ziel hinarbeiten, den Nutzern ein möglichst hochwertiges Softwareerlebnis zu bieten, gilt auch für die Bereitstellung von Hybrid- und „Bare-Metal“-Servern. DevOps und Cloud sind zwar eng miteinander verbunden, schließen sich aber nicht gegenseitig aus.

DevOps-Ingenieure und -Teams können auch mit Site Reliability Engineers (SREs) zusammenarbeiten, wobei ein gut definierter und verwalteter Ansatz erhebliche Synergieeffekte bietet.

DevOps-Architektur

Der Begriff DevOps-Architektur bezieht sich auf die spezifische Infrastruktur, die zur Unterstützung der DevOps-Prozesse und -Praktiken in den verschiedenen Phasen des Lebenszyklus einer Anwendung geschaffen wurde. Ein Teil dieser Infrastruktur besteht wahrscheinlich aus einigen der im vorherigen Abschnitt erwähnten Tools, während andere bei ihrer Erstellung verwendet werden.

Cloud-Plattformen, Virtualisierung, Containerisierung, Microservices, CI/CD-Pipelines, Sicherheitspraktiken und Infrastruktur als Code kommen in einer DevOps-Architektur in der Regel zusammen.

Die Rolle von Containern in einer DevOps-Architektur

Container, die zumeist von Kubernetes orchestriert werden, bilden eine wichtige Säule der DevOps-Architektur. In Containern werden Quellcode, Konfigurationsdateien, Bibliotheken, Binärdateien und alle Abhängigkeiten in einem einzigen Paket zusammengefasst, um eine Anwendung schnell und zuverlässig auszuführen. Das Verpacken von Codemodulen in einem oder mehreren Containern ermöglicht den einfachen Transport zwischen Computerumgebungen, wie Entwicklungs-, Test- und Produktionsumgebung.

Container isolieren den Code von Unterschieden in der Betriebssystemverteilung, den Sicherheitsrichtlinien, den Netzwerktopologien und der zugrundeliegenden Infrastruktur, was für reibungslose CI/CD-Pipelines und viele der anderen Automatisierungen, die DevOps einführt, von entscheidender Bedeutung ist. Durch die Bereitstellung einer in sich geschlossenen virtuellen Infrastruktur (IaC) können Container den in ihnen verpackten Code in jeder Umgebung reibungslos ausführen.

Die Aufteilung einer Anwendung in kleinere containerisierte Module, die so genannten Microservices, ist ebenfalls Bestandteil einer DevOps-Architektur. Jeder Microservice läuft unabhängig und ist lose mit anderen Microservices gekoppelt, mit denen er über APIs kommuniziert. Diese Entkopplung von Merkmalen und Funktionalitäten hat zwei wesentliche Vorteile, die mit den Zielen von DevOps übereinstimmen:

  • Höhere Verfügbarkeit – wenn bei einem Microservice ein Problem auftritt und er ausfällt, hat dies wahrscheinlich keine Auswirkungen auf den Gesamtbetrieb der Anwendung, wie dies bei einem Codefehler in einer monolithischen Architektur der Fall wäre, da die lose Kopplung der Services die Abhängigkeiten minimiert.
  • Schnellere Iteration – durch die Aufteilung von Funktionen in Microservices ist es viel einfacher, der bereitgestellten Software neue Funktionen ohne Ausfallzeiten hinzuzufügen, wodurch die für DevOps zentralen CI/CD-Verfahren möglich werden.

Was ist DevSecOps?

Der DevOps-Ansatz wird zunehmend auf die Integration von Sicherheitsprozessen, -praktiken und -tools ausgeweitet, ein Trend, der sich in dem Maße verstärken dürfte, wie die Sicherheit als Priorität für alle Softwaresysteme und -anwendungen zunimmt. Die Integration der teamübergreifenden Verantwortlichkeit für die Sicherheit wird als DevSecOps bezeichnet.

Wenn das Ziel von DevOps die schnellere Bereitstellung von Software in besserer Qualität ist, dann ist das Ziel von DevSecOps die schnellere Bereitstellung von sicherer und besserer Software.

Das DevSecOps-Manifest von 2012 umreißt drei Kernprinzipien von DevSecOps:

  • Frühzeitige Einführung und Integration von Sicherheitsaspekten im Entwicklungsprozess.
  • Einführung des Sicherheitsgedankens als Kernaufgabe der Entwicklung und nicht als Angelegenheit eines separaten Teams.
  • Automatisieren Sie Sicherheitsprozesse, um den effizienten Fluss von DevOps aufrechtzuerhalten.

DevOps als Industriestandard in der Softwareentwicklung

Für jeden, der im Bereich IT und Softwareentwicklung tätig ist, ist es wichtig zu verstehen, wie DevOps in den verschiedenen Kontexten, die wir hier behandelt haben, definiert wird, welche Ziele es verfolgt und wie diese mit den hier vorgestellten Prozessen, Praktiken und Tools erreicht werden. Das gilt unabhängig davon, ob Ihre Funktion direkt mit den Lebenszyklen der Softwareentwicklung verbunden ist oder ob Sie eher als Stakeholder in einer technologieorientierten Organisation tätig sind.

Und warum? Weil DevOps zu einem Technologiestandard wird, ebenso wie die Nutzung von Cloud Computing und die Einführung agiler Entwicklungspraktiken. Tatsächlich wird DevOps als direkte Folge dieser beiden Trends zunehmend zur Norm. Alle drei Trends werden sich nicht nur in absehbarer Zeit weiter durchsetzen, sondern auch zunehmend zum Standard für moderne Softwarelösungen werden.

K&C - Wir schaffen innovative Tech-Lösungen seit über 20 Jahren.

Kontaktieren Sie uns, um Ihre individuellen Bedürfnisse oder Ihr nächstes Projekt zu diskutieren.