Wie funktioniert DevOps?
DevOps ist eine Methodik, die die Arbeit während des gesamten Lebenszyklus der Softwareentwicklung verbessern soll.
Man kann sich einen DevOps-Prozess als Endlosschleife vorstellen, die aus diesen Schritten besteht:
- Planen,
- Codieren,
- Erstellen,
- Testen,
- Freigeben,
- Bereitstellen,
- Betreiben,
- Überwachen
- durch Feedback – Planen,
wodurch die Schleife zurückgesetzt wird.
Bei der traditionellen Wasserfall-Entwicklung wurde ein Alles-oder-Nichts-Ansatz verwendet, bei dem die Anforderungen im Voraus gesammelt wurden und dann der Code geschrieben, getestet und als Ereignisse veröffentlicht wurde. Alle Ergebnisse, Performanceprobleme oder Zuverlässigkeitsprobleme wurden erst im Nachhinein behandelt. Ganz anders bei agiler Entwicklung – hier werden laufend Funktionsbausteine in kleinen Inkrementen ergänzt und weiter entwickelt mit dem Vorteil höherer Flexibilität wegen rascherer Reaktion auf Veränderungen.
DevOps gibt Unternehmen viel mehr Flexibilität bei der Entwicklung und Veröffentlichung von Software, die im Laufe der Zeit systematisch reift.
Um Wartezeiten zu vermeiden, verwenden IT-Teams CI/CD-Pipelines und andere Automatisierungen, um Code von einem Entwicklungs- und Bereitstellungsschritt in einen anderen zu verschieben und können sich auf Richtlinien und Tools verlassen, die sicherstellen, dass Releases den Standards entsprechen.
Probleme, die sie im Live-Betrieb entdecken, führen zu Codeverbesserungen durch kontinuierliche Feedbackkanäle.
Je mehr Entwickler und DevOps- Spezialisten zusammenarbeiten und Fähigkeiten austauschen, desto mehr können sie eine DevOps-Kultur fördern.
DevOps-Werkzeuge
Im Allgemeinen verlassen sich DevOps-Praktiker auf eine CI/CD-Pipeline, Container und Cloud-Hosting. Bei den Tools kann es sich um Open-Source-, proprietäre oder unterstützte Distributionen von Open-Source-Technologie handeln.
Es muss sichergestellt sein, dass Ihre DevOps-Toolchain den Arbeitsfluss von der Anwendungsentwicklung über das Testen bis hin zur Bereitstellung unterstützt.
(Die angeführten Listen der Tools stellen keinen Anspruch auf Vollständigkeit und die fett markierten Tools waren am häufigsten in der Toolchain zu finden!):
- Code-Repositories: Versionskontrollierte Quellcode-Repositories ermöglichen es mehreren Entwicklern, an Code zu arbeiten. Entwickler checken Code aus und ein und können bei Bedarf zu einer früheren Codeversion zurückkehren.
In einer CI/CD-Pipeline löst eine Codeänderung, für die ein Commit im Versionskontroll-Repository ausgeführt wird, automatisch die nächsten Schritte aus, z. B. eine statische Codeanalyse oder Build- und Komponententests. Beispiele der Tools:- Git und
- Github sowie
- Bitbucket,
- Mercurial und andere
- Artefakt-Repositories: Der Quellcode wird zu Testzwecken in ein Artefakt kompiliert. Die Artefakteverwaltung ist aus den gleichen Gründen eine bewährte Methode wie die Quellcodeverwaltung unter Versionskontrolle. Beispiele für Artefakt-Repositories sind:
- JFrog Artifactory und
- Nexus Repository
- Azure Artifacts
- Amazon Elastic Container Registry
- Cloudsmith
- Dist
- ProGet
- Yarn.
- CI/CD-Pipeline-Engines: CI/CD ermöglicht DevOps-Teams Anwendungen durch Automatisierung während des Entwicklungslebenszyklus häufig zu validieren und für den Endbenutzer bereitzustellen. Die gängigsten Tools für CI, CD oder beides sind:
- Jenkins
- GitLab
- Travis CI
- Atlassian Bamboo
- Concourse und
- CircleCI.
- Container: Container sind isolierte Laufzeiten auf einem freigegebenen Betriebssystem und bieten eine Abstraktion, die es ermöglicht, dass Code auf verschiedenen zugrunde liegenden Infrastrukturen von der Entwicklung über das Testen und Staging bis hin zur Produktion gleich ausgeführt werden kann. Docker und Apache Mesos gehören zu den bekanntesten Containerisierungssoftwares, Microsoft bietet eine eigene spezifische Windows-Container-Optionen an.
Container-Orchestratoren – wie Kubernetes und die kommerziellen Kubernetes-Distributionen Red Hat OpenShift und Amazon Elastic Kubernetes Service – implementieren, skalieren und warten Container automatisch.
- Konfigurationsverwaltung: Konfigurationsmanagementsysteme ermöglichen es Software, Middleware und Infrastruktur auf der Grundlage eines Skripts oder einer Vorlage bereitzustellen und zu konfigurieren. Das DevOps-Team kann Bereitstellungs-umgebungen für Softwarecode-Releases einrichten und Richtlinien auf Servern, Containern und VMs über ein Konfigurationsmanagement-Tool durchsetzen. Änderungen an der Bereitstellungsumgebung können versionskontrolliert und getestet werden, sodass DevOps-Teams Infrastructure-as-Code (IaC) verwalten können. Zu den Tools für das Konfigurationsmanagement gehören:
- Ansible,
- Terraform,
- SaltStack,
- Puppet und
- Chef.
- Überwachung: Überwachungstools ermöglichen DevOps-Experten, die Leistung und Sicherheit von Code-Releases auf Systemen, Netzwerken und Infrastrukturen zu überwachen. Sie können die Überwachung mit Analysetools kombinieren und verwenden diese Tools zusammen. Die Auswahl ist breit gefächert, umfasst
- Dynatrace
- New Relic One
- Prometheus
- Datadog und
- Splunk.
ResultONE kann in vielen Fällen als DevOps – Berater fungieren und bei DevOps-Projekten unterstützen oder Fachwissen ergänzen, das möglicherweise irgendwo im DevOps-Prozess fehlt.