DevOps ist in modernen Softwareunternehmen vertreten. Der aktuelle Ansatz des Continuous Deployment ist sowohl progressiv als auch radikal. Daher soll in dieser Arbeit erläutert und diskutiert werden, welche Chancen und Herausforderungen Continuous Deployment aus Anwendersicht bietet.
In der Vergangenheit fiel es auffallend vielen Unternehmen schwer, prozessübergreifende Verbesserungen zu identifizieren und zu implementieren, da hier der Fokus zu sehr auf den Prozessen und alltäglichen Aufgaben eines separierten IT-Fachbereichs lag. Daher wurde nicht auf angrenzende Fachbereiche geachtet. Indessen machen es große, bekannte Unternehmen vor, wie durch Zusammenarbeit der IT-Fachbereiche der Wertbeitrag von IT-Diensten gesteigert und auf diesem Niveau stabilisiert werden kann, sodass die Wertschöpfung des Unternehmens weiter maximiert wird.
Inhaltsverzeichnis
1 Einleitung
1.1 Einführung in die Thematik
1.2 Problemstellung und Zielsetzung
1.3 Methodischer Aufbau der Arbeit
2 CI/CD Pipeline in der Theorie
2.1 CI/CD in der agilen Softwareentwicklung
2.2 CI Prozess
2.2.1 Versionsverwaltung und Branching Strategie
2.2.2 Selbstauslösende Builds
2.2.3 Testpyramide und Testarten
2.2.4 Continuous Inspection
2.2.5 Automatisiertes Packaging
2.3 Continuous Delivery- und Continuous Deployment Prozess
2.4 CD Prozess: Aufbau von OpenShift
3 Umstellung der CI/CD Pipeline in der Praxis
3.1 Systeme und Produkte
3.2 CI Pipeline mit Jenkins
3.2.1 Continuous Integration Server mit Jenkins
3.2.2 Code entwickeln mit Bitbucket, Branchingstrategie und Feature Toggles
3.2.3 Bauen und testen mit Buildah und SonarQube
3.2.4 Inspizieren mit Anchore
3.2.5 Bündeln mit Nexus
3.2.6 Reporten mit Allure
3.3 CD Pipeline mit OpenShift
3.3.1 Vorbereitung
3.3.2 Pipeline
3.3.3 Image Stream
3.3.4 Integrationstests mit SpecFlow
3.3.5 Image als getestet markieren
3.3.6 Reporte mit Allure
3.3.7 Säuberungsaktion
4 Schluss
4.1 Grenzen
4.2 Fazit
Zielsetzung & Themen
Die Arbeit untersucht die Chancen und Herausforderungen, die bei der Umstellung von Continuous Delivery auf Continuous Deployment in modernen Softwareunternehmen im Rahmen von DevOps-Prozessen entstehen. Ziel ist es, die praktischen Auswirkungen dieser Transformation zu erläutern und aufzuzeigen, wie automatisierte Pipelines die Time-to-Market optimieren können.
- Grundlagen von CI/CD Pipelines und agiler Softwareentwicklung
- Praktische Implementierung mittels Jenkins, OpenShift und Container-Technologien
- Einsatz von Behavior Driven Development (BDD) und Testautomatisierung
- Nutzung von Feature Toggles zur Steuerung von Releases
- Identifikation von organisatorischen Herausforderungen und Lösungsstrategien
Auszug aus dem Buch
3.3.4 Integrationstests mit SpecFlow
Scenario Tests (Szenariotests) kommen aus dem Konzept des Behavior Driven Development und sollen den Microservice aus Sicht des Anwenders testen. Dabei werden Anforderungen formuliert in einem bestimmten Textformat. Die hieraus resultierenden Sätze werden mit Tests verbunden, welche den Test mit den dezidierten Vorgaben des Satzes ausführen. Später werden alle gesammelten Szenarien bzw. Tests automatisch ausgeführt. Mit dieser Methodik soll sichergestellt werden, dass die Anforderungen, welche aus der natürlichen Sprache der Projektrollen im Softwareprojekt entstehen, mit entsprechenden Tests versehen werden und die gesamte Applikation inklusive des neuen Features sich wie geplant verhält. Tests, die bei BDD entstehen, werden in der User Story (Anwendererzählung) als Akzeptanzkriterien in einem besonderen Textformat hinterlegt. Da die vorgegebenen Szenarien aus den Akzeptanzkriterien herrühren, dokumentieren sie gleichzeitig die Anwendung. Zumal eine Living Documentation (lebende Dokumentation) mit unterschiedlichen Werkzeugen erstellt werden kann. Das praktisch verwendete BDD Framework ist SpecFlow. Dabei verwendet SpecFlow die von Cucumber entwickelte Sprache Gherkin, um Features zu deklarieren. Hierbei werden Schlüsselwörter gefolgt von Sätzen in natürlicher Sprache definiert und mit regulären Ausdrücken, Methoden und Tests verknüpft. Nach Erstellung der Gherkin-Akzeptanzkriterien kann ein BDD Szenario generiert werden.
Zusammenfassung der Kapitel
1 Einleitung: Diese Einleitung führt in die Bedeutung von DevOps und die Herausforderungen bei der schnellen Softwareveröffentlichung ein, wobei das Ziel der Arbeit, die Untersuchung von Continuous Deployment, definiert wird.
2 CI/CD Pipeline in der Theorie: Das Kapitel erläutert die theoretischen Grundlagen der Continuous Integration und Delivery Prozesse sowie die Bedeutung der Testpyramide und Container-Orchestrierung für moderne Entwicklungsumgebungen.
3 Umstellung der CI/CD Pipeline in der Praxis: Hier wird der praktische Umstellungsprozess beschrieben, inklusive der Nutzung von Jenkins und OpenShift sowie der Implementierung spezifischer Teststrategien und Automatisierungstools.
4 Schluss: Das Schlusskapitel analysiert die Grenzen der methodischen Umstellung, insbesondere in Bezug auf Teamdynamik und Vertrauen, und zieht ein Fazit über die Effizienzgewinne durch Continuous Deployment.
Schlüsselwörter
DevOps, Continuous Integration, Continuous Delivery, Continuous Deployment, CI/CD Pipeline, Softwareentwicklung, Automatisierung, Jenkins, OpenShift, Container, Testpyramide, Feature Toggles, Behavior Driven Development, SpecFlow, Time-to-Market
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit befasst sich mit der Transformation von Softwareentwicklungsprozessen, speziell dem Übergang von Continuous Delivery zu Continuous Deployment innerhalb von DevOps-Infrastrukturen.
Was sind die zentralen Themenfelder der Publikation?
Die Schwerpunkte liegen auf der theoretischen Fundierung von CI/CD-Pipelines, der praktischen Umsetzung mittels Jenkins und OpenShift sowie der Anwendung von Testautomatisierung und Feature Toggles.
Was ist das primäre Ziel der Untersuchung?
Das Ziel ist es, die spezifischen Chancen und Herausforderungen zu identifizieren, die für Anwender bei der Einführung von Continuous Deployment entstehen.
Welche wissenschaftliche Methode wurde verwendet?
Es wurde eine praxisorientierte Analyse durchgeführt, gestützt auf Fachliteratur, Online-Quellen und eine systematisierte Recherche mittels Datenbanken wie IEEE, Science Direct und Google Scholar.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil gliedert sich in eine theoretische Erläuterung der CI/CD-Konzepte und einen umfangreichen Praxisteil, der die konkrete Implementierung einer automatisierten Deployment-Pipeline detailliert beschreibt.
Welche Schlüsselwörter charakterisieren die Arbeit am besten?
Die wichtigsten Begriffe sind DevOps, Continuous Deployment, CI/CD-Pipeline, Testautomatisierung, Container, Jenkins, OpenShift und Time-to-Market.
Welche Rolle spielt OpenShift in der dargestellten Praxis?
OpenShift dient als Container-Plattform, die durch die Implementierung von Kubernetes innerhalb der Infrastruktur die Entwicklung und das Deployment von Applikationen über mehrere Hosts hinweg ermöglicht.
Warum wird Behavior Driven Development (BDD) als wichtig erachtet?
BDD stellt sicher, dass Anforderungen aus der natürlichen Sprache der Projektrollen direkt in automatisierte Tests übersetzt werden, was die Anwendungsdokumentation verbessert und die Qualitätssicherung erhöht.
Welche Herausforderungen bei der Umstellung auf Continuous Deployment wurden identifiziert?
Neben technischen Anpassungen war vor allem das fehlende Vertrauen des Teams in die automatisierte Softwareproduktion eine zentrale, zwischenmenschliche Hürde, die durch Schulungen adressiert werden musste.
Wie trägt Continuous Deployment zur Optimierung der Time-to-Market bei?
Durch die sofortige Testausführung nach jedem Code-Check-in und die automatisierte Bereitstellung wird das Risiko fehlerhafter Lieferungen minimiert, wodurch das Produkt schneller und mit höherer Qualität marktreif wird.
- Quote paper
- Dennis Hodapp (Author), 2021, DevOps. Chancen und Herausforderungen bei der Umstellung von Continuous Delivery zu Continuous Deployment, Munich, GRIN Verlag, https://www.grin.com/document/1602990