CI/CD automatyzacja cybercom

CI/CD – wie die Automatisierung die Software-Entwicklung schnell, effizient und zuverlässig macht

Strukturiert, fehlerfrei, kostengünstig – das sind wesentliche Eigenschaften einer erfolgreichen Softwareentwicklung. Die Automatisierung hilft, den Prozess auf eine andere Ebene zu verlagern. Kontinuierliche Bereitstellung, kontinuierliche Integration und kontinuierlicher Einsatz sind drei DevOps Strategien, die Teil des automatisierten Entwicklungsprozesses sind. Das Ziel ist es, neue Anwendungen sowie Software-Updates auf schnellstem Wege und mit so wenig Fehlern wie möglich zu erstellen, zu testen, zu verteilen und zu veröffentlichen, und die Kosten zu reduzieren, indem man den „Fail Fast, Fail Early“-Ansatz anwendet: Je früher der Fehler gefunden wird, desto billiger ist es, ihn zu beheben.

[tagssingle]

Das war damals

In der digitalen Antike, d.h. vor etwa 15-20 Jahren, erstellten Softwareentwickler Anwendungen hauptsächlich im Wasserfallmodell. Während der Entwicklung verwendeten die Berater das Subversion-System, um die Änderungen im Code zu verfolgen, und nach einer Phase wurde die Anwendung an die IT-Abteilung geschickt. Die IT- immer auf Stabilität und Zuverlässigkeit ausgerichtet- kreierte darauf eine (Test-)Umgebung, in welcher der Code eingesetzt werden konnte. Darin wurde die neue Anwendung gestartet. Oftmals gab es Unterschiede zwischen der IT-Infrastruktur und der von den Entwicklern verwendeten Umgebung. Das war einer der Gründe, warum dieser Prozess mehrere Wochen dauern konnte. Jede Änderung in der Software musste von der IT und oft auch vom Sicherheitsteam validiert werden. Die Art und Weise der Kommunikation zwischen den Teams nahm natürlich viel zusätzliche Zeit in Anspruch, und die Anwendung konnte nur mit grosser Verzögerung veröffentlicht werden.

pre CI/CD development process

So ist es jetzt

Heutzutage ist der Prozess der Softwarebereitstellung deutlich schneller und durch die Automatisierung vieler Teilprozesse wesentlich stabiler und sicherer. Die Automatisierung eliminiert menschliches Versagen, das immer noch die größte Fehlerquelle ist. Bestimmte Herausforderungen bleiben aber bestehen: wie lässt sich eine Situation vermeiden, in der hunderte von Entwicklern, die an derselben Anwendung arbeiten, Tag für Tag, Stunde für Stunde ihren Code einchecken – nur, um nach einiger Zeit feststellen, dass er nach dem Zusammenführen nicht mehr funktioniert?

Die Lösung heisst:  Continuous Integration. Es handelt sich um eine Methodik, die von den Entwicklern verlangt, den Code einzuchecken, zusammenzuführen und zu kompilieren, und zwar dann, wenn ein bestimmter Teil des Codes fertig ist, sogar mehrmals am Tag. Auch kleine Codeänderungen werden in das gemeinsame Repository integriert und automatisch getestet.

Dadurch werden aus grossen Änderungen kleine, die direkt in die Test-/Vorproduktions- oder in die Produktionsumgebung deployed werden.

Kontinuierliche Lieferung und Bereitstellung

Der Prozess der Codeänderung ist kontinuierlich. Jede Stunde, jede Minute oder manchmal auch jede Sekunde wird eine neue Version erstellt.

Wie kann man dann alles zum Funktionieren bringen? Die Antwort liegt im Prozess Design:

Selbst wenn der Prozess der Annahme von Änderungen sowie von Abnahmetests manuell durchgeführt wird, sprechen wir von Continuous Delivery (CD):

Eine Abnahme-Instanz wird darüber informiert, dass eine funktionierende, bereits getestete Anwendung auf die endgültige Genehmigung wartet. Nach Durchführung zusätzlicher Prüfungen und Tests muss diese Person die Version manuell genehmigen.

Signifikant beschleunigt wird dieser Prozess durch vollständige Automatisierung:

CI/CD Cybercom

Unverzichtbare Tools

Es gibt viele Tools auf dem Markt, die dem Entwicklerteam bei der Implementierung von CI/CD in ihre Projekte helfen können. AWS bietet dem Entwicklerteam eine Plattform, um den Code gemeinsam zu nutzen, die Änderungen automatisch zu erstellen, die Anwendung zu testen, über die Ergebnisse zu benachrichtigen und bei fehlgeschlagenen Tests automatisch entweder die Bereitstellung in der Produktion oder ein Rollback durchzuführen.

  • Code Pipeline ist ein Workflow-Management-Tool, in dem alle Konfigurationen für andere CI/CD-Tools festgelegt werden. Sie können auf einfache Weise den gesamten Workflow erstellen und über ein einheitliches Dashboard mit allen notwendigen Details über den Status des Prozesses, die eingestellten Parameter und die Protokolle verwalten. Sie können die Pipeline entweder von der Web-Konsole aus manuell oder mit Hilfe von Code, wie beim Infrastructure-as-a-Code-Ansatz, erstellen.
  • Beim Einsatz der CI/CD-Pipeline in AWS können Sie wählen, welches Versionskontrollsystem Sie nutzen möchten. AWS unterstützt die Speicherung von Dateien in S3, GitHub, CodeCommit (AWS-interner, verwalteter Quellcode-Repository-Service) oder einem git-kompatiblen Repository.
  • AWS Code Commit ist ein Tool, das Entwicklern die Kontrolle über die Versionierung in ihrem Code bietet, so wie sie in GitHub durchgeführt wird – ein Preisvorteil gegenüber dem privaten Github-Repository, da in CodeCommit private Repositories kostenlos sind. Es gibt auch einen Free Tier, die Nutzung ist für eine gewisse Zeit kostenlos.
  • AWS Code Star ist die Managed Platform mit einem nützlichen Assistenten, mit dem Entwickler innerhalb von Minuten eine voll funktionsfähige und sichere CI/CD-Pipeline erstellen können. AWS CodeStar unterstützt viele gängige Programmiersprachen, darunter Java, JavaScript, PHP, Ruby und Python – für diesen Service fallen keine weiteren Gebühren an.

Automatisierte Builds = Schlüssel zum Erfolg

Die Automatisierung des Prozesses macht es sehr einfach, den Zustand der Software zu kontrollieren. Schon vor der Einführung von Änderungen können Sie Fehler identifizieren – das heißt, Sie können die aktuelle Version der Software in die Produktion einführen. Das Testen wird leicht gemacht und ist essenzieller Bestandteil des Entwicklungsprozesse. Das bedeutet, dass Sie Risiken eliminieren, schon lange bevor Ihre Software Schaden nimmt, Probleme frühzeitig erkennen und alle Korrekturen schnell durchführen können. Dadurch ist das Team weniger abgelenkt durch unnötige Fehlersuche und kann sich mehr auf die Entwicklung der Software konzentriert. Die Automatisierung ermöglicht Ihnen einen schnellen Feedback-Loop, vermeidet die „Integrationshölle“ und erhöht sowohl die Transparenz als auch die Sichtbarkeit. Als Ergebnis verbessern Sie die Qualität und Zuverlässigkeit, was sich in einer höheren Zufriedenheit und einem größeren Vertrauen sowohl der Kunden als auch des Teams niederschlägt.