Vereinfachung von DevOps Prozessen mittels CI/CD

Die Welt der digitalen Produkte und Anwendungen ist spätestens seit Einführung des Smartphone um ein Vielfaches gewachsen. Unternehmen sehen sich auf Grund der gewachsenen Möglichkeiten und Vielfalt einer noch größeren Konkurrenz ausgesetzt. Voneinander Abheben und somit die Nase im Rennen um den Kunden vorne zu haben, ist die oberste Devise. Abheben erfolgt letztendlich nicht nur durch die Gestaltung und den Inhalt meines Angebotes, sondern vielmehr ist es zunehmend entscheidender, wie schnell ich mit meinem Produkt am Markt bin und wie schnell ich auf neue Gegebenheiten reagieren kann.

Nahezu jedes Unternehmen ist heute im digitalen Zeitalter angekommen. Sei es die Nutzung eines einfachen Laptops, der Einsatz von Server-Systemen im Rechenzentrum oder die Entwicklung von eigenen Software-Anwendungen. Eines haben alle zuvor genannten Komponenten gemeinsam. Alle müssen früher oder später einem Lifecycle unterzogen werden, aus „alt“ mach „neu“ (oder „noch besser“). Diejenigen die sich bisher mit einem Lifecycle auseinandersetzen durften, kennen bestimmt die Erfahrung, wie aufwändig und komplex so ein Lifecycle sein kann. Es wird insbesondere dann nervig, wenn die gleichen Aufgaben regelmäßig wiederkehren und besonders viel Zeit in Anspruch nehmen. Schlimmer gar, wenn hierbei involvierte Teams mangelhaft oder gar nicht miteinander kommunizieren (wollen), unsauber vorgearbeitet wurde oder menschliche Fehler auftreten und den Lifecycle verzögern.

Dieses zuvor genannte Problem zu lösen bzw. zu verbessern, ruft CI/CD auf den Plan. CI/CD hat ihren ursprünglichen Treiber in der Software-Entwicklung, jedoch geht die ganzheitliche Umsetzung nicht ohne Zusammenspiel mit IT-Operations. Bei CI/CD spielen zwei Teams eine wichtige Rolle – Dev und Ops.

Doch wobei handelt es sich bei CI/CD eigentlich?

CI steht für Continous Integration und steht für die automatisierte Zusammenführung von neuen Codeänderungen. Im Vorfeld der Zusammenführung (Merge) wird der Code durch vorgelagerte Tests validiert (Test). Dies soll eine saubere Zusammenführung von neuen Codeänderungen gewährleisten sowie sicherstellen, dass so wenig wie möglich neue Branches gleichzeitig bearbeitet werden bzw. offenstehen.

Info Box

Test patterns – Bei der Entwicklung neuer Features einer Software-Anwendung wird i.d.R. als einer der ersten Schritte eine „Definition of done“ festgelegt. Diese Abnahmekriterien sind die Grundlage der automatisierten Tests.

CD steht für Continous Delivery und für Continous Deployment. Während sich Continous Delivery damit beschäftigt ein neues Release automatisch in einem Repository bereit zu stellen, sorgt Continous Deployment für ein automatisiertes Ausrollen des bereitgestellten Release bis zur Produktivumgebung.

Continous Delivery und Continous Deployment verfolgen ein ähnliches Konzept, jedoch wird gerne in die zuvor beschriebenen Schritte unterschieden. 

CI/CD-Pipeline
CI/CD

CI/CD – Umsetzung per Pipeline

Pipeline Tools, wie Gitlab CI, Concourse oder Jenkins unterstützen bei der Umsetzung von CI/CD. Hierbei werden zuvor definierte Prozessketten/Workflows/Programmabläufe definiert und nach vordefinierten Vorgaben abgearbeitet.

Umsetzung per Pipeline

Wer denkt, dass Software-Entwicklung weiterhin nur die Entwicklung einer App oder Webseite ist, der täuscht sich. Spätestens mit Einführung von Automatisierungsmechanismen in den Betrieb der Infrastruktur (Infrastructure as Code), ist jeder IT-Admin/IT-Ops in die Rolle eines Software-Entwicklers geschlüpft. Auch diese Automatisierungsmechanismen unterliegen einem notwendigen Lifecycle, idealerweise mit CI/CD.

Alles in allem soll CI/CD der wachsenden Über-/Belastung durch manuelle Prozesse entgegenwirken. Die Einführung von CI/CD setzt ein gewisses Maß an Engagement und einmaligen Zeitaufwand voraus. Sind die dafür notwendigen Prozesse und Tools einmal etabliert, wird sich die Entlastung der zeitaufwändigen administrativen Tätigkeiten deutlich bemerkbar machen und die Produktivität der Teams wieder drastisch erhöhen.