Vorteile der kontinuierlichen Code-Integration [CI/CD]

Die Entwicklung von Softwareanwendungen ist mühsam, doch ohne Continuous Integration (CI) und Continuous Delivery (CD) wäre die Codierung ein Albtraum. In diesem Blog gehen wir auf die 10 wichtigsten Vorteile von Continuous Integration und Continuous Delivery ein, um Ihnen die Entscheidung zu erleichtern, ob dies der richtige Schritt für Ihr Unternehmen ist.

Vorteile der kontinuierlichen Code-Integration [CI/CD]

Die Entwicklung von Softwareanwendungen ist mühsam, doch ohne kontinuierliche Integration (CI) und kontinuierliche Bereitstellung (CD) wäre die Programmierung ein Albtraum. Continuous Integration (CI) ermöglicht Ihnen die kontinuierliche Integration von Code in ein einziges gemeinsames und leicht zugängliches Repository. Continuous Delivery (CD) ermöglicht es Ihnen, den im Repository gespeicherten Code kontinuierlich in die Produktion zu überführen. CI/CD schafft einen schnellen und effektiven Prozess, um Ihr Produkt vor der Konkurrenz auf den Markt zu bringen und neue Funktionen und Fehlerkorrekturen freizugeben, um Ihre bestehenden Kunden zufrieden zu stellen.

CI/CD automatisiert die Veröffentlichungen und Aktualisierungen Ihres Teams, wodurch Zeit gewonnen wird und die Entwickler sich anderen Aufgaben zuwenden können.

In diesem Blog gehen wir auf die 10 wichtigsten Vorteile von Continuous Integration und Continuous Delivery ein, um Ihnen die Entscheidung zu erleichtern, ob dies der richtige Schritt für Ihr Unternehmen ist.

Aktuelle CI/CD-Trends

Bevor wir uns mit dem Was und Warum der Continuous Integration and Continuous Delivery (CI/CD)-Pipeline befassen, wollen wir uns zunächst damit beschäftigen, wie sie zu einem Trend im Bereich der Softwarebereitstellung geworden ist.

Die Zunahme von CI/CD-Trends in den letzten zwei Jahren ist in der Softwareproduktindustrie deutlich zu erkennen. So stößt das Schlüsselwort bei Google Trends im Jahr 2021 auf zunehmendes Interesse bei den weltweiten Nutzern, und es wird prognostiziert, dass es in den kommenden Jahren weiter ansteigen wird.

Eine andere Erklärung ist, dass CI/CD ein integraler Bestandteil von DevOps ist - einer leistungsstarken Praxis in der Softwareentwicklung. Eine CI/CD-Pipeline ermöglicht häufigere Codeänderungen bei gleichzeitiger Optimierung und Rationalisierung des Produktentwicklungszyklus. Automatisierte Software-Testverfahren und kontinuierliche Arbeitsabläufe sind der Schlüssel zum Erfolg von DevOps.

Geschichte von CI/CD?

Im Jahr 2006 schrieb Martin Fowler einen Artikel, in dem er sich dafür aussprach, dass der Entwicklungszyklus den Code des Entwicklers kontinuierlich integrieren und die Testsuite automatisch ausführen sollte, um die Anzahl der Fehler zu reduzieren, die dann schnell entdeckt werden.

Schließlich wurde diese Praxis 2008 mit dem Wachstum von Hudson CI populär, das 2011 von Jenkins abgelöst wurde, nachdem Oracle angekündigt hatte, es als Marke zu schützen und zu vermarkten.

Das Manifest wurde von 14 führenden Branchenexperten verfasst, die mitteilen wollten, was funktioniert und was nicht. Ihre Vision schlug im Wesentlichen einen neuen Weg für Entwicklungsteams vor, um durch kontinuierliche Integration und Bereitstellung agil zu bleiben.

Auf diese Weise ist CI/CD eine Philosophie und ein pragmatischer Ansatz für die Programmierung von Software, die im Jahr 2020 entstanden ist. Und der Rest der Welt hat zugehört: Pipelines sind heute in der Branche aufgrund ihrer echten Effektivität unglaublich präsent.

Das Gesamtbild von CI/CD ist einfach zu verstehen, und doch ist es für die Beschleunigung von Releases und die Verbesserung der Softwarequalität unerlässlich. Benutzerfeedback, Marktveränderungen und Anforderungsänderungen werden schneller und mit anpassungsfähigerer Software bewältigt.

Phrasen einer CI/CD-Pipeline?

Die meisten TYPO3-Projekte verfügen nicht über eine große Anzahl von integrierten Unit- und Integrationstests. Aus diesem Grund ist die Einrichtung von CI/CD für TYPO3 etwas anders als bei einem herkömmlichen Softwareprojekt.

Bei der Bereitstellung neuer Versionen ihrer Projekte machen sich die meisten TYPO3-Entwickler vor allem Gedanken über fehlerhaftes HTML, Regressionen bei der Seitengeschwindigkeit und so weiter. Glücklicherweise können Sie mit CI/CD die Prüfung auf diese Probleme automatisieren.

Wie würde also ein CI/CD-Setup für ein typisches TYPO3-Projekt aussehen? Nun, das hängt vom jeweiligen Projekt ab. Zum Beispiel, ob es sich um ein TYPO3-Template oder eine Extension handelt, oder ob es eine komplette TYPO3-Site ist. Branch unterstützt beide Seiten des Spektrums.

In einem TYPO3-Kontext gibt es vier verschiedene Phasen eines CI/CD-Builds:

   1. Build

Hier werden alle Abhängigkeiten einbezogen und die Assets gebaut. Für Abhängigkeiten verwenden die meisten Projekte eine Kombination aus Composer und NPM, um ihren Abhängigkeitsbaum zu erstellen. Wenn es um Build-Tools geht, sind Webpack, Grunt und Gulp in der TYPO3-Community sehr beliebt. Diese Tools sind für die Kompilierung der Stylesheets und des JavaScript-Codes verantwortlich.

   2. Test

Im Vergleich zu vielen anderen Entwickler-Communities ist das Testen in TYPO3 kein gut erforschtes Thema. Obwohl es viele Möglichkeiten gibt, gibt es keine einheitliche Methode, mit der TYPO3-Entwickler ihren Code testen. Die Wahrheit ist, dass die meisten TYPO3-Projekte nicht wirklich über Tests verfügen. Sie können jedoch CI/CD nutzen, um eine Reihe von Tools zum Testen Ihres Codes einzusetzen, ohne dass Sie selbst eine Reihe von Tests schreiben müssen. Mit Branch können Sie zum Beispiel ganz einfach Tests einrichten, um Ihren Code gegen die TYPO3 Coding Standards zu prüfen.

  3. Bereitstellung

Das Deployment eines TYPO3-Projekts bedeutet im Allgemeinen eines von drei verschiedenen Dingen:

  • Bereitstellung einer Erweiterung oder eines Themas für eine TYPO3-Website
  • Bereitstellen eines Plugins oder Themes für TER
  • Bereitstellung einer vollständigen TYPO3-Site

Der Zweig unterstützt alle oben genannten Fälle. Der Bereitstellungsprozess ist stark von der verwendeten Hosting-Plattform abhängig. Während einige Plattformen nur SFTP unterstützen, bieten andere eine breite Palette von Optionen wie rsync, Git-Push und plattformspezifische Tools. Um die Sache zu vereinfachen, müssen Sie lediglich Ihr Branch-Konto mit Ihrer Hosting-Plattform verbinden, in der Regel mit einem SSH-Schlüssel, und das richtige Rezept für Sie auswählen.

 4. Qualitätssicherung (QA)

Wenn die Erstellung, das Testen und das Deployment automatisiert sind, kann auch ein Großteil der entsprechenden QA-Arbeiten automatisiert werden. Es gibt eine breite Palette von Tools für die Durchführung von QS-Prüfungen nach der Bereitstellung Ihrer TYPO3-Websites: von der Durchführung automatisierter Browsertests auf Staging-Websites bis hin zur Verwendung von Tools wie Google Lighthouse zur Prüfung von Seitengeschwindigkeit, Barrierefreiheit und SEO.

Alle TYPO3-Projekte unterscheiden sich stark in Bezug auf den technischen Stack und die Hosting-Umgebung, und natürlich kennen Sie Ihre Arbeit am besten. Branch gibt Ihnen die Freiheit, die besten Werkzeuge für Ihr Projekt auszuwählen.

Bestandteile einer CI/CD-Pipeline

Eine typische CI/CD-Pipeline muss diese Phasen umfassen:

  • Bauphase
  • Testphase
  • Bereitstellungsphase
  • Automatisierte Testphase
  • Bereitstellung in der Produktionsphase

In einer solchen Pipeline beginnt alles mit dem Entwicklerteam, das die ersten Codezeilen schreibt. Anschließend geben die Entwickler diese Codes in ein Versionskontrollsystem ein, was die erste Phase der Pipeline darstellt. 

In einem linearen Arbeitsablauf geben die Entwickler neue Codes ein und übertragen sie mit einem aktualisierten Versions-Tag in das Versionskontrollsystem.

Die Build-Phase wird ausgelöst, wenn neue Codes in ein Repository eingestellt werden. Da die anfänglichen Codes in kleinen Zweigen des Repositorys gespeichert sind, sammelt der Compiler alle Merkmale der Codes und ihre Abhängigkeiten und kompiliert sie dann zu einem neuen Build.

Die Testphase umfasst mehrere Arten von Tests, von denen der Unit-Test der wichtigste ist. Beim Unit-Testing werden die einzelnen Einheiten des Produkts anhand seines Quellcodes getestet.

Sobald die Builds die Tests bestanden haben, werden sie in die Bereitstellungsphase überführt und auf einen Testserver übertragen. In dieser Phase können die Entwickler das Produkt in einer produktionsähnlichen Umgebung simulieren, um die Produktfunktionen zu prüfen.

In der Phase der Automatisierungstests werden die endgültigen Tests durchgeführt, um die erstellten Funktionen zu qualifizieren, bevor sie in der Produktion eingesetzt werden. In dieser Phase werden automatisierte und kontinuierliche Tests durchgeführt, um die Builds zu nutzen und sicherzustellen, dass keine Fehler mehr vorhanden sind.

Während der gesamten Pipeline wird jedes Mal, wenn ein Fehler auftritt, sofort ein Feedback an das Entwicklungsteam gesendet, so dass Probleme sofort behoben werden können. Codeänderungen zur Behebung von Fehlern durchlaufen dann erneut die Produktionspipeline.

Nachdem die Codes oder das Produkt alle Tests ohne Fehler bestanden haben, werden sie in der letzten Phase auf den Produktionsserver übertragen. Die ständige Feedbackschleife trägt dazu bei, die Pipeline zu einem geschlossenen Prozess zu machen, bei dem Builds kontinuierlich übertragen, getestet und in der Produktion eingesetzt werden.

Wie fängt unser CI/CD-Ansatz Fehler auf?

Bislang wurden die Vorteile von CI/CD nur aus der Ferne beschrieben. Nun ist es an der Zeit zu erörtern, wie diese Pipelines Fehler beseitigen, bevor sie in Ihre Produktionsumgebung gelangen können.

Der Schlüssel dazu ist Feedback. Feedback ist das, was Softwareentwickler für Fehler brauchen - aber was noch wichtiger ist, sie brauchen dieses Feedback in Form einer kontinuierlichen Schleife.

Ein solides, kontinuierliches Feedback zwischen den Entwicklern schafft ein hochgradig verbessertes und effizientes System zum Auffinden von Fehlern in dieser Vorproduktionsphase. Der ständige Feedbackfluss der Pipeline beschleunigt die Freigabe für die Produktion und vermeidet gleichzeitig Fehler in Ihrem Code.

Eine einfache Möglichkeit, Ihre Feedbackschleife zu stärken, besteht natürlich darin, so viele Aufgaben in Ihrer Pipeline wie möglich zu automatisieren.

Sobald eines Ihrer Projekte die kontinuierliche Integration einschließt, kann es kontinuierlich bereitgestellt werden, und Aktualisierungen nehmen weniger Zeit und Arbeit in Anspruch. Freigaben können dann bei Bedarf durchgeführt werden, wenn neuer Code bereitsteht, anstatt eine Menge geistiger Vorbereitung zu benötigen.

Und wenn Sie Fehler finden, können Sie diese durch ein einfaches Update beheben. So wird Ihre Pipeline fehlerfrei.

Wie kann CI/CD die Kosten senken und die Qualität verbessern?

CI/CD-Pipelines etablieren ein Modell der kontinuierlichen Entwicklung, um die Gesamtkosten für das Erstellen und Testen von Anwendungsänderungen zu senken. Das liegt daran, dass Pipelines durch die Automatisierung von Umgebungen die Kosten für die Testinfrastruktur generell senken.

Nehmen Sie zum Beispiel parallele Tests. Paralleles Testen reduziert die Anzahl der QC/QA-Tester, die für das Testen benötigt werden, auf einen Schlag.

Durch automatisierte Tests wird mehr Zeit und infolgedessen Geld. Das Sprichwort "Zeit ist Geld" bewahrheitet sich jeden Tag auf der ganzen Welt, besonders aber in der Softwareentwicklung.

Aber Sie werden die Qualität nicht der Quantität opfern. Pipelines verbessern den Entwicklungsprozess auf Schritt und Tritt und erschließen neue Potenziale für Ihr Team und Ihr Unternehmen.

Warum eine kontinuierliche Integration und Bereitstellung?

Es gibt drei Hauptgründe, warum CI/CD für Entwickler wichtig ist:

  • Durch die Automatisierung Ihres Arbeitsablaufs sparen Sie Zeit.

Sie können Build-Rezepte erstellen, um bei jedem Git-Push alle erforderlichen Aufgaben automatisch auszuführen, was Ihnen Zeit und Mühe spart.

  • CI/CD hilft, Fehler frühzeitig zu erkennen.

Durch den Einsatz von CI/CD können Sie regelmäßig überprüfen, ob Ihr neuer Code mit Ihrer bestehenden Codebasis kompatibel ist.

  • Ein gutes CI/CD-System ist für das Feedback unerlässlich.

Ein solider CI/CD-Workflow gibt Ihnen kontinuierliches Feedback zu dem von Ihnen geschriebenen Code und beantwortet die Frage "Habe ich etwas kaputt gemacht?".

Kontinuierliche Integration von Code mit CI/CD!

Letztendlich stellen CI/CD-Pipelines eine radikale Abkehr von den ineffizienten Codierungsprozessen des heutigen Marktes dar. Und jetzt wissen Sie auch, warum: Sie helfen Ihnen, Fehler sofort zu erkennen, Ihre Tests zu automatisieren und einen nahtlosen Arbeitsablauf zu gewährleisten.

Aber der Punkt ist, dass Sie die Initiative ergreifen müssen. Und wenn Ihr Team neu in der kontinuierlichen Integration und Entwicklung ist, darf es keine Angst vor dem Unbekannten haben.

Machen Sie also das Beste aus Ihrer Entwicklung und Ihrer neu entwickelten oder verbesserten CI/CD-Pipeline. Bleiben Sie dabei, mehr über diesen Prozess zu lernen, und die Entwicklung und die schnellen Releases werden Ihnen gehören.

Posts by Nitin Chauhan

Kommentare und Antworten

×

Name ist erforderlich!

Geben Sie einen gültigen Namen ein

Gültige E-Mail ist erforderlich!

Gib eine gültige E-Mail Adresse ein

Kommentar ist erforderlich!

Sie haben das Limit für Kommentare erreicht!

* Diese Felder sind erforderlich.

Sei der Erste, der kommentiert