Was ist eigentlich DevOps?
DevOps ist eine Kombination aus „Development“ und „Operations“, steht allerdings für eine ganze Reihe von Ideen und Praktiken, die über diese beiden Begriffe, egal ob einzeln oder zusammen, weit hinausgehen. So umfasst der Ansatz unter anderem auch Sicherheit, Zusammenarbeit, Datenanalyse und viele andere Aspekte. Was aber bedeutet es genau?
DevOps umfasst Ansätze dazu, wie eine Idee (z. B. neue Software-Features, Verbesserungsanfragen oder Bug Fixes) von der Entwicklung bis zum Einsatz in der Produktivumgebung beschleunigt werden kann, um dort zur Wertschöpfung beizutragen. Diese Ansätze erfordern eine regelmäßige Kommunikation zwischen Entwicklungs- und Operations-Teams sowie eine gute Zusammenarbeit. Ebenfalls notwendig ist eine skalierbare Umgebung mit flexibler Provisionierung. Mit DevOps sind Ressourcen dort verfügbar, wo sie am dringendsten benötigt werden, und zwar per Self-Service und Automatisierung. Hier arbeiten Entwicklungsteams, die üblicherweise in einer Standardentwicklungsumgebung (SDE) programmieren, eng mit dem IT-Operations-Team zusammen, um Software-Builds, Tests und die Veröffentlichung neuer Versionen zu beschleunigen – ohne dass dies auf Kosten der Zuverlässigkeit geht.
Das bedeutet natürlich auch häufigere Code-Änderungen und eine dynamischere Nutzung der Infrastruktur. Traditionelle Verwaltungsstrategien werden diesen Anforderungen daher nicht gerecht. Deshalb müssen Sie, um wettbewerbsfähig zu bleiben, einige Dinge ändern.
Was haben Container mit DevOps zu tun?
Mithilfe von Containern können Sie Anwendungen einfacher zwischen der Entwicklungs-, Test- und Produktivumgebung verschieben. Entwicklerinnen und Entwickler können ihre Apps mit allen benötigten Komponenten in Containern paketieren und isolieren, einschließlich Anwendungsdateien, Runtime-Umgebungen, plattformabhängigen Libraries und Konfigurationen.
DevOps beschleunigt den Prozess von der Entwicklung einer Idee bis zu ihrer Bereitstellung. Im Kern basiert DevOps auf der Automatisierung routinemäßiger Aufgaben sowie der Standardisierung von Umgebungen über den gesamten Lifecycle einer App. Container ermöglichen standardisierte Umgebungen, allerdings benötigen Sie eine Plattform, die integrierte Automatisierungen und beliebige Infrastrukturen unterstützt. Red Hat OpenShift ist die unternehmensgerechte Kubernetes-Plattform für DevOps-Initiativen.
DevOps-Unternehmenskultur
DevOps basiert auf einer Kultur der Zusammenarbeit, die sich auf Open Source-Prinzipien und transparente, agile Arbeitsmethoden stützt. In unserem fünftägigen Master-Kurs DevOps Culture and Practice Enablement (DO500) können Sie sich damit vertraut machen, wie DevOps und agile Werte miteinander verknüpft sind.
Die Kultur von Open Source-Softwareprojekten kann als Vorlage für die DevOps-Kultur dienen. Der freie Austausch von Informationen bildet bei Open Source Communities die Grundlage der Zusammenarbeit. Auf dieser Grundlage können Änderungen in der Unternehmenskultur unterstützt werden, z. B. mehr Transparenz bei Entscheidungen, freieres Ausprobieren, um Ängste abzubauen, oder Einführung eines Belohnungssystems, das Vertrauen und Zusammenarbeit fördert. Es gibt zahlreiche Unternehmen, die sich mit Consulting-Services zur digitalen Transformation beschäftigen, um solche Initiativen zu unterstützen.
Unter der richtigen Führung und mithilfe von Incentive-Programmen können Ihre Entwicklungs- und Operations-Teams eine offene Kultur fördern. Allerdings ist DevOps am effizientesten, wenn diese Kultur in der gesamten Organisation verwurzelt ist. Zwar umfasst der Begriff DevOps speziell die Bereiche Entwicklung und Operations, aber tatsächlich ist das Konzept auf das gesamte Unternehmen ausgerichtet.
Die Unternehmenskultur von Red Hat basiert auf Offenheit und Transparenz. Eine Grundhaltung, die uns seit über 25 Jahren gute Dienste leistet. Wenn es darum geht, Kunden bei der Umstellung auf einen offenen DevOps-Ansatz zu begleiten, können wir auf unsere eigenen Erfahrungen zurückgreifen.
Staffel 1, Episode 4: DevOps_Tear Down That Wall
In diesem Clip aus dem Command Line Heroes Podcast hören Sie, wie Saron Yitbarek, Scott Hanselman und Gordon Haff über DevOps-Unternehmenskultur, -Prozesse, -Plattformen und -Tools sprechen.
DevOps-Prozess
Die Entwicklung moderner Anwendungen erfordert andere Prozesse als die Ansätze in der Vergangenheit. Viele Teams nutzen für die Softwareentwicklung agile Ansätze. Für diese Teams spielt DevOps eine wichtige Rolle. Das erste der zwölf Prinzipien des Manifests für agile Software-Entwicklung besagt folgendes: „Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Lieferung wertvoller Software zufriedenzustellen“. Und das ist auch der Grund, warum CI/CD (Continuous Integration/Continuous Deployment) für DevOps-Teams so wichtig ist.
Aber nur mit der Veränderung Ihrer Entwicklungs- und Operations-Prozesse ist es nicht getan. Sie müssen systemisch denken, um die Bereitstellung von Software tatsächlich optimieren zu können. Dies bedeutet, dass DevOps zu Änderungen in den Geschäftsbereichen führen wird, die Entwicklungsarbeiten anfordern, sowie in den Gruppen, die die Endbenutzenden unterstützen. Der wichtigste Aspekt hierbei ist ein kontinuierlicher Feedback-Zyklus zwischen End User und Geschäftsbereich.
Ihre Prozessänderungen müssen mehr umfassen als das WIE Ihrer Arbeit. Auch das WAS der durchgeführten Arbeit muss verändert werden. Bei DevOps geht es nicht einfach nur um eine schnellere Entwicklung der gleichen alten monolithischen Software, sondern um die Entwicklung neuer Arten von Anwendungen, die besser auf das Prinzip der Continuous Delivery abgestimmt sind.
Das ist auch der Grund, warum DevOps-Teams ihre Software oft mithilfe einer Microservice-Architektur entwickeln und diese Services mit APIs verknüpfen. Die Teams können schneller liefern, wenn sie kleinere Funktionsbereiche entwickeln. Das heißt für Sie, dass Sie sich darauf fokussieren müssen, wie Sie all diese Services und APIs verwalten. Außerdem benötigen Sie eine Strategie wie z. B. die agile Integration, die alles miteinander vereint.
Diese Änderungen können einen hohen Aufwand verursachen, aber mit der richtigen Technologie können Sie sofort beginnen. Mithilfe von Automatisierung können Sie Ihre Prozesse beschleunigen und schließlich Ihre DevOps-Workloads zur Cloud migrieren. Durch die Automatisierung können Infrastrukturen den ständigen Code-Änderungen standhalten, die mit DevOps einhergehen. Gleichzeitig können Umgebungen problemlos und kontinuierlich skaliert werden. Und Ihre klügsten Köpfe können sich auf das Wichtigste konzentrieren, da Belastungen, die durch routinemäßige und sich wiederholende Aufgaben entstehen, entfallen.
Eine neuere Evolution des DevOps-Prozesses war die Einführung des Plattform-Engineerings. Durch die stärkere Fokussierung auf Empathie und Benutzererlebnis baut Platform Engineering als Strategie auf DevOps auf und bietet bessere Möglichkeiten, die Anwendungsbereitstellung zu automatisieren sowie die Zusammenarbeit und Kommunikation zu verbessern. Darüber hinaus können Fehler reduziert, die Sicherheit und Compliance verbessert, die Effizienz gesteigert und besonders die Stärken der Entwicklungsteams auf die Bereiche konzentriert werden, in denen sie am dringendsten benötigt werden.
Es wird allgemein behauptet, dass DevOps mit einem ITIL-Ansatz für ITSM (IT Service Management) kollidiert, aber bei dieser Zweideutigkeit wird vieles nicht berücksichtigt.
DevOps-Plattform und -Tools
Die Auswahl der richtigen Tools zur Unterstützung Ihrer Prozesse ist für einen erfolgreichen DevOps-Ansatz unerlässlich. Um mit den rasanten Entwicklungszyklen von heute mithalten zu können, benötigt Ihr Operations-Team hochflexible Plattformen und muss seine Infrastruktur genauso behandeln wie die Entwicklungsteams ihren Code. Manuelle Implementierungen sind langsam und fehleranfällig.
Die Provisionierung und Bereitstellung von Plattformen lässt sich durch automatisierte Prozesse erheblich vereinfachen. SRE (Site Reliability Engineering) übernimmt diese manuellen Operations-Aufgaben und verwaltet sie mithilfe von Software und Automatisierung. Ein SRE-Ansatz kann die Ziele eines DevOps-Teams weiter unterstützen.
Red HatOpenShift ist gut positioniert, um DevOps-Teams, Plattform-Entwicklungsteams und SREs die Features und Funktionen zur Verfügung zu stellen, die CI/CD, Sicherheitsrichtlinien, Zero-Trust-Sicherheitsarchitektur und organisatorische Compliance-Anforderungen ermöglichen. Zusammen mit Red Hat Developer Hub bietet OpenShift Tools für Engineering-Teams, mit denen sie eine interne Entwicklungsplattform (Internal Developer Platform, IDP) effektiv entwickeln und verwalten können . Weiterhin können sie die Projektvorlagen, Dokumentationen und Workflows erstellen, die sie für die Entwicklung von „Golden Paths“ benötigen.
DevOps und Kubernetes
Der DevOps-Ansatz geht Hand in Hand mit Linux®-Containern, mit denen Ihr Team die zugrunde liegende Technologie erhält, die Sie für eine cloudnative Entwicklung brauchen. Container unterstützen eine einheitliche Umgebung für die Entwicklung, Bereitstellung, Integration und Automatisierung.
Und Kubernetes ist die moderne Art, Operationen mit Linux-Containern zu automatisieren. Mit Kubernetes können Sie einfach und effizient Cluster verwalten, auf denen Linux-Container in Public, Private oder Hybrid Clouds ausgeführt werden.
Indem Sie zuverlässige Plattformen innerhalb und außerhalb der Container auswählen – wie etwa Red Hat® Enterprise Linux und Red Hat OpenShift® – können Sie bei Bedarf für eine zuverlässige Skalierung und Automatisierung sorgen. Mit den richtigen Plattformen können Sie von den kulturellen und prozesstechnischen Änderungen profitieren, die Sie bereits eingeführt haben.
Skalierbarkeit durch Continuous Deployment (CD) – mit DevOps
Ein großer Vorteil der Implementierung von DevOps ist die CI/CD-Pipeline (Continuous Integration/Continuous Deployment). Mit CI/CD können Sie Ihren Kunden häufig Apps liefern und die Softwarequalität ohne größeres manuelles Eingreifen validieren.
Insbesondere sorgt CI/CD im gesamten Lifecycle einer App für kontinuierliche Automatisierung und Überwachung. Von den Integrations- und Testphasen bis hin zur Lieferung und Bereitstellung können Probleme und Fehler so umgehend identifiziert und behoben werden. Diese zusammenhängenden Praktiken werden oft als „CI/CD-Pipeline“ bezeichnet, und sie werden durch eine agile Zusammenarbeit der DevOps-Teams unterstützt.
Wir verwenden [Red Hat Enterprise Linux] in erster Linie im Bereich der Automatisierung. Beispielsweise kann es mich beim Deployment von Anwendungen unterstützen. Wir beabsichtigen, Continuous Delivery und Continuous Deployment durchzuführen. Für diesen Ansatz verwenden wir dieses Produkt.
Ist Ihr Team bereit für Innovationen?
Um auf dem Markt von heute wettbewerbsfähig zu bleiben, braucht es mehr als nur Technologie. Bewerten Sie den kulturellen, prozess- und plattformtechnischen Zustand Ihrer Organisation, und erfahren Sie, wie Sie den Weg der Digitalisierung gehen können.
DevOps und Sicherheit
Wie bereits oben erwähnt, geht es bei DevOps nicht nur um die Entwicklungs- und Operations-Teams. Um voll vom DevOps-Ansatz profitieren zu können, müssen Organisationen auch darüber nachdenken, welche Rolle die Sicherheit im Lebenszyklus ihrer Apps spielt. Dies bedeutet, dass eine grundlegende Sicherheit bereits in der Planungsphase beachtet werden muss. Es bedeutet ebenfalls, dass einige Sicherheits-Features automatisiert werden müssen, damit der DevOps-Workflow nicht zu langsam wird. Mit den richtigen Tools zur Integration der Sicherheit lassen sich die Anforderungen der DevOps-Sicherheit erfüllen.
Aber eine wirklich effiziente DevOps-Sicherheit benötigt mehr als nur ein paar neue Tools. Sie basiert auf den veränderten kulturellen Anforderungen von DevOps, die Arbeiten der Sicherheitsteams lieber früher als später zu integrieren. DevOps sorgt für schnellere Prozesse, denn es schließt die Lücke zwischen Entwicklung und Operations. Allerdings kann dieser Vorteil durch eine mangelhafte Sicherheitsplanung rasch wieder zunichte gemacht werden.
Die Sicherheit lag früher in der ausschließlichen Verantwortung eines isolierten Teams und wurde erst am Ende des Entwicklungsprozesses berücksichtigt. Beim kollaborativen DevOps-Ansatz von heute aber wird Sicherheit zur gemeinsamen Verantwortung, die von Anfang an in den Ablauf integriert ist.