Was ist CI/CD ?

Was ist CI/CD ? Post Cover

CI/CD erklärt 

Die fortschreitende Digitalisierung führt zu einem immer höheren Konsumtempo. Das stellt Softwareentwickler vor immer größere Herausforderungen, da Nutzer die unmittelbare Behebung von Fehlern in Anwendungen und eine höhere Frequenz an Updates als jemals zuvor erlangen. Als Antwort darauf haben sich neue Organisations- bzw. Operationsformen wie DevOps entwickelt. Eine der wichtigsten Methoden ist dabei CI/CD. Wir erklären, was es mit den Begriffen auf sich hat und warum diese Methoden für Softwareentwickler so wichtig sind. 

CI/CD für moderne Unternehmen 

CI/CD bezeichnet eine Methode, bei der große Teile des Entwicklungs- und Update-Zyklus einer App automatisiert und deutlich verkürzt werden. CI/CD hat sich als eines der effektivsten Werkzeuge für DevOps-Teams bewiesen, um die Probleme herkömmlicher Unternehmensstrukturen zu vermeiden, so zum Beispiel die Integrationshölle und die Zusammenarbeit zwischen Development und Operations. 

CI/CD steht dabei inzwischen für drei Begriffe: 

  • Continuous Integration
  • Continuous Delivery 
  • Continuous Deployment

Diese drei Begriffe beschreiben unterschiedliche Abschnitte einer Entwickler-Pipeline, die allerdings nahtlos ineinander übergehen. Continuous Integration bezeichnet dabei die fortgesetzte und automatisierte Integration von neu entwickelten Codes in ein gemeinsames Repository. 

Continuous Delivery bezeichnet den nächsten Abschnitt, in dem diese neuen, zusammengeführten Codes automatisch getestet werden. Anschließend werden die Codes dem Operations Team in einer Form zur Verfügung gestellt, durch die die unmittelbare Einbindung für die Integration in die Produktivumgebung zur Verfügung gestellt werden. Continuous Deployment schließlich bedeutet die automatische Veröffentlichung der neuen Codes in der Produktivumgebung. 

Die Integrationshölle

CI/CD löst verschiedene Probleme für DevOps Teams. Eines der wichtigsten davon ist sicherlich die sogenannte Integrationshölle. Unter diesem Begriff versteht man eine Umgebung bzw. einen Zeitpunkt, in der Entwickler eines Teams versuchen, deren individuelle Codes in einem gemeinsamen Projekt zusammenzuführen. Dieser Prozess ist im Unternehmensalltag häufig sehr arbeits- und zeitaufwändig. 

Da die verschiedenen Entwickler über einen langen Zeitraum nur individuell an den Codes gearbeitet haben, müssen jetzt mehrere Stunden oder sogar Tage darauf verwendet werden, dass sie miteinander integriert werden können. So werden unzählige Arbeitsstunden für eine nachträgliche Integration verschwendet. 

CI und CD erklärt

Wie bereits erwähnt, steht CI/CD für drei unterschiedliche Begriffe, die wir in den folgenden Abschnitten genauer erklären möchten. Dabei ist es wichtig zu verstehen, dass die eigenen Abschnitte fließend ineinander übergehen und nicht eigenständig betrachtet werden können. Darüber hinaus wird der Abschnitt des Continuous Deployment terminologisch manchmal mit Continuous Delivery gleichgestellt bzw. angenommen, dass Continuous Deployment ein Bestandteil von Continuous Delivery ist. 

Continuous Integration

Continuous Integration bezeichnet den ersten automatisierten Abschnitt der Entwickler-Pipeline und schließt das Entwickeln, Testen und Zusammenfügen der neuen Codes mit ein. Um Probleme wie die Entwicklerhölle zu vermeiden, werden die Entwickler dazu angeregt, so oft wie möglich neue Codes in das gemeinsame System hochzuladen, also oft täglich oder sogar stündlich. 

Die Continuous Integration Anwendung testet diesen neuen Code dann automatisch und überprüft, ob sich alle Teile automatisch in das bestehende Programm integrieren lassen. Ist das der Fall, wird der Code auch automatisch integriert, ohne dass ein Entwickler tätig werden muss. Tritt ein Fehler auf, wird dieser automatisch wahrgenommen und dann den Entwicklern gemeldet, wodurch diese Fehler deutlich schneller behoben werden können. 

Continuous Delivery 

Nachdem der Code durch die Continuous Integration automatisch zusammengefügt wurde, werden diese Updates durch das Continuous Delivery automatisch in ein gemeinsames Repository hochgeladen. Nachdem die Updates bzw. Änderungen dort wieder automatisch und ohne dass manuelle Befehle notwendig wären, auf Bugs überprüft werden, stellt die Anwendung das neue Update dem Operations Team zur Verfügung. 

Auch hier werden wieder alle Schritte automatisiert, die nötig sind, damit das neue Update sofort in eine Live-Produktivumgebung integriert werden kann. Das Operations Team selbst muss also keine Änderungen mehr vornehmen, sondern das Update nur noch freigeben. Ein DevOps Team, das CI/CD anwendet, kann so die typischen Kommunikationsprobleme zwischen Development und Operations vermeiden. 

Continuous Deployment

Continuous Deployment treibt das Prinzip von CI/CD noch etwas weiter, indem auch der letzte Arbeitsschritt der Pipeline automatisiert wird. Das bedeutet, dass das Update, nachdem es durch Continuous Delivery in einem Repository zur Verfügung gestellt wird, auch automatisch Live geht. 

Das bedeutet, dass ein Update in der Praxis bereits wenige Minuten nach der Fertigstellung in der Live-Produktivumgebung aktiv werden kann. Daher ist Continuous Deployment die ideale Antwort auf den Wunsch des Nutzers nach schnellen Lösungen für Probleme in der Anwendung. Eine kontinuierliche Integration von User-Feedback wird so Realität. 

Vor- und Nachteile von CI/CD 

Die Vorteile der CI/CD Methode sind ziemlich offensichtlich. So können Programme durch die Continuous Integration nicht nur deutlich schneller Updates durchlaufen, sondern auch viel schneller entwickelt werden. Das Wegfallen von manuellen Eingriffen in den Schritten Continuous Delivery und Continuous Deployment sorgen für mehr Transparenz, kürzere Update-Zyklen und eine verbesserte Kommunikation zwischen Development und Operations. 

Wie immer bedeutet der Wegfall der manuellen Kontrolle aber auch, dass deutlich mehr Zeit und Mühe in den Aufbau der automatisierten Systeme gesteckt werden muss. Schließlich sind diese sozusagen die letzte Kontrollinstanz. Dieser Aufwand wird durch den deutlich verkürzten Aufwand während der Anwendung der CI/CD Systeme allerdings schnell wieder ausgeglichen. Zusammengefasst ist CI/CD ein unglaublich effektives Werkzeug als Antwort auf die Probleme heutiger Entwicklerteams.