- Geschwindigkeit: Durch die Unterteilung monolithischer Applikationen in kleinere Komponenten können neue Iterationen der Software viel schneller veröffentlicht werden als bei anderen Arten der Applikationsentwicklung.
- Qualität: Da die Software durchgängig überwacht wird, lassen sich Fehler leichter isolieren. Dadurch haben sie weniger Auswirkungen und können deutlich schneller behoben werden.
- Höhere Ressourceneffizienz: CI ist hochgradig automatisiert und kann daher die Belastung von Entwicklerteams reduzieren, den Applikationsbacklog minimieren und Kosten senken.
- Benutzerzufriedenheit: Die Möglichkeit, neue Funktionen mit höherer Qualität und weniger Problemen einzuführen, verbessert die Benutzerzufriedenheit. Darüber hinaus kann Feedback innerhalb weniger Stunden eingearbeitet werden.
Was ist Continuous Delivery – oder Continuous Deployment?
Das „CD“ in „CI/CD“ kann als Erweiterung von CI betrachtet werden. Das Verfahren sorgt dafür, dass die Software bereitgestellt werden kann, wenn sie ein bestimmtes Stadium erreicht und eine Reihe von vorher festgelegten Qualitätstests bestanden hat. Doch ob „CD“ für Continuous Delivery oder Continuous Deployment steht – darüber ist sich die DevOps-Welt uneinig.
Continuous Delivery bezeichnet im Allgemeinen die automatische Vorbereitung von Code und Codeänderungen für die Freigabe in die Produktion sowie die Automatisierung von Tests und Code-Releases.
Bei der Continuous Delivery wird der Code in ein Repository hochgeladen. Dies ermöglicht automatisierte Tests wie Unit-, Regressions- und Leistungstests, die sicherstellen, dass der Code hohe Qualitätsansprüche erfüllt. Der Ansatz stellt sicher, dass die Bereitstellung des Codes für die operativen Teams so schnell und einfach wie möglich ist. Dennoch ist jemand erforderlich, der das Release oder die Aktualisierung freigibt und in die Produktion überführt.
Beim Continuous Deployment ist keine menschliche Intervention und keine manuelle Freigabe für die Produktion nötig. Stattdessen geht Code automatisch von der Integration zum Release in eine Produktionsumgebung über. Tests sind in den Prozess integriert. Continuous Deployment baut auf den Vorteilen von Continuous Delivery auf und gilt als die nächste Phase in einer CI/CD-Pipeline.
Bei OutSystems bevorzugen wir es, im Kontext von CI/CD den Begriff „Continuous Deployment“ zu nutzen. Denn der Verzicht auf menschliche Interventionen ermöglicht eine schnellere Applikationsbereitstellung.
Vorteile von Continuous Integration
Kontinuierliche Bereitstellung bedeutet kontinuierliche Innovation, bei der ständig neue Funktionen oder Korrekturen in die Produktion einfließen:
- Die schnellere Bereitstellung von qualitativ hochwertigem Code führt sowohl zu weniger Unterbrechungen des Geschäftsbetriebs aufgrund von fehlerhaftem Code als auch zu einer allgemeinen Produktivitätssteigerung.
- Die schnellere Lieferung von Code reduziert den Backlog bei der Applikationsentwicklung.
- Die kontinuierliche Umsetzung kleiner Iterationen bedeutet, dass Probleme weniger Auswirkungen haben und sich leichter beheben lassen.
- Eine höhere Produktivität mit weniger Fehlern verringert den Stress und die Arbeitsbelastung, die zu viele Entwickler derzeit erfahren.
Prinzipien zur Unterstützung von CI/CD
Das Hauptziel von CI/CD besteht darin, eine Zunahme technischer Schulden zu vermeiden. Denn die Einführung von schlecht konzipiertem Code in Ihr aktuelles Projekt kann bei zukünftigen Entwicklungen zum Problem werden.
Bei CI/CD geht es vor allem darum, dass Entwickler schnell vorankommen – und sich darauf verlassen können, dass sie keinen Schaden anrichten.
Agilität basiert auf der Beseitigung unnötiger Abhängigkeiten zwischen Komponenten, die daher nur lose gekoppelt sein sollten. Dies betrifft auch auf die Testbarkeit. Bei zu vielen Abhängigkeiten ist es schwer zu erkennen, wo eventuelle Fehler liegen.
Weitere Überlegungen sind:
- Shift Left und Shift Right: Je mehr der Entwicklungsaufwand im Lebenszyklusprozess nach vorn verlagert wird (Shift Left), desto geringer ist das Risiko von Fehlern oder Misserfolgen. Ebenso wichtig ist die Kommunikation mit Stakeholdern wie Sicherheitexperten und Endnutzern (Shift Right). Das Ziel besteht darin, bereits in einem frühen Stadium schnelles Feedback zu erhalten.
- Hoher Grad an Automatisierung: Alles, was sich automatisieren lässt – von der Erstellung über das Testen bis zur Bereitstellung von Code – sollte auch automatisiert werden. Sorgfältige Tests sind für jede Art von Softwareentwicklung wichtig. In diesem Zusammenhang sind zuverlässige automatisierte Tests jedoch unerlässlich, da in der gesamten CI/CD-Pipeline immer wieder mehrere Tests durchgeführt werden müssen.
- Versionskontrolle und „Regressivität“: Bei unvorhergesehenen Problemen ist es wichtig, die „Rückgängig-Taste“ drücken zu können , um den Zustand vor dem fehlerhaften Release wiederherzustellen.
- Wiederholbarer zuverlässiger Prozess: Bei einer derartigen Geschwindigkeit lässt sich kein Prozess improvisieren.
Beliebte CI/CD-Automatisierungstools sind:
- Jenkins zur Überwachung der Ausführung wiederkehrender Aufgaben. Die Open-Source-Software lässt sich mit jedem Betriebssystem verwenden und bietet mehrere integrierte Plugins für den Aufbau von CI/CD-Pipelines. Mit dem CI/CD-Server von Jenkins können Sie die verschiedenen Phasen Ihrer Delivery-Pipeline automatisieren.
- Der Azure DevOps Server ist ein weiteres CI/CD-Automatisierungstool, das den gesamten Applikatonslebenszyklus abdeckt. Es wurde von Microsoft entwickelt und unterstützt zwei Arten der Versionskontrolle: Team Foundation Version Control (TFVC) oder Git. Ebenfalls enthalten sind Funktionen für Reporting, Anforderungsmanagement, Projektmanagement, automatisierte Builds, Tests und Release Management.
Low-Code und CI/CD
Darüber hinaus gibt es leistungsstarke Low-Code-Plattformen wie OutSystems mit integrierten Tools, die die Softwareentwicklung und den Softwarebetrieb mit Automatisierung und Überwachung vereinen, um die Implementierung von Continuous Integration und Continuous Deployment zu erleichtern. Dies ermöglicht kürzere Entwicklungszyklen, eine häufigere Bereitstellung und zuverlässigere Versionen.
Durch die Nutzung der ’s LifeTime Deployment APIder Plattform können Sie Ihre Deployment-Pipeline von der Entwicklungsumgebung bis hin zur Produktion durchgängig automatisieren.
Da OutSystems auf dem Prinzip der Offenheit und ohne Limitationen entwickelt wurde, bieten wir auch Accelerators, die die Komplexität der Integration mit Enterprise-CI/CD-Engines wie Jenkins, Azure DevOps und TeamCity reduzieren.
Mehr darüber, wie OutSystems Sie bei der Optimierung des gesamten Applikationslebenszyklus unterstützen kann, erfahren Sie auf dieser Seite.