"Das leistungsstärkste Tool für uns Entwickler ist die Automatisierung.“ Mit dieser Meinung steht Scott Hanselman, angesehener Programmierer, Tech-Blogger und Redner, nicht alleine da; Automatisierung ist einer der bedeutendsten Trends für 2021 und darüber hinaus.
Unter Entwicklern bedeutet die kontinuierliche Software-Auslieferung, Continuous Delivery (CD), einen der wichtigsten Automatisierungsprozesse: die automatische Freigabe des neuen Versionscodes, mit vollautomatischem Go-Live. Die Methode basiert auf dem Prinzip der Continuous Integration (CI), der „kontinuierlichen Integration“. Dabei überprüft das System jede Änderung automatisch in einer Testumgebung, bevor es den Code in die neue Version übernimmt.Mit Continuous Delivery kann das Team jederzeit den Freigabeprozess einleiten. Eine Pipeline erstellt und testet so automatisch den Code, um sicherzustellen, dass die neuesten Änderungen keine Probleme verursachen. Anschließend wandert der Code in ein Freigabe-Paket und muss sich in einer Testumgebung beweisen. Dort kann man auch vor der abschließenden Genehmigung einige zusätzliche manuelle Überprüfungen durchführen.
Das unterscheidet den Prozess von Continuous Deployment. Dort gibt es keine manuelle Genehmigung vor der Auslieferung: Sobald der Code in der Testumgebung alle automatisierten Prüfungen durchlaufen hat, wird er für die Produktion freigeben.
Continuous Delivery ist eine erweiterte Form der Continuous Integration. Es geht hier nicht nur darum, den zur Freigabe bereiten Code zu testen. Bei der kontinuierlichen Software-Auslieferung kommen noch automatisierte Tests hinzu, die sämtliche Beiträge zur Code-Basis überprüfen. Immer, wenn ein Entwickler Code-Zeilen hinzufügt, kommen die Änderungen auf den Prüfstand. Falls die neuen Code-Zeilen scheitern, bleiben sie vorerst gesperrt – bis sie alle Tests erfolgreich absolviert haben.
Bei Continuous Delivery sollte das Deployment in jeder Umgebung vollautomatisiert ablaufen – egal, ob in der Produktions- oder der Testumgebung. Neben der Installation der Pakete gehören dazu auch Testläufe nach der Freigabe sowie automatisierte Ersatzmechanismen, falls die Überprüfung fehlschlägt.
Zusätzlich zur automatisierten Verteilung spielen bei der kontinuierlichen Software-Auslieferung auch Feature Flags eine große Rolle. Die Feature Flags stellen sicher, dass sich der Code deaktivieren lässt, damit er bei der Freigabe nicht die Produktion beeinträchtigt.
Warum ist Continuous Delivery so wichtig?
Continuous Delivery automatisiert Ihre Freigaben weitestgehend, sodass am Ende nur noch zwei manuelle Schritte übrig bleiben. Sobald sich das Team dazu entscheidet, eine Version herauszugeben, bereitet das System alles für die Freigabe vor. Die manuelle Arbeit besteht dann nur noch darin, die Freigabe zu starten und die Produktion zu genehmigen. Mit Continuous Deployment sparen Sie sich auch noch diesen letzten Schritt.
Das Resultat: Sie können praktisch unabhängig von der Expertise Ihrer Entwickler neue Releases veröffentlichen. So haben diese auch mehr Zeit, sich auf die Entwicklung neuer Funktionen zu konzentrieren – und so weiteren Mehrwert für das Unternehmen zu schaffen.
Die konkreten Vorteile dieser Methode können wir im Wesentlichen in vier Kategorien einteilen:
1. Geringeres FehlerrisikoAutomatische Code-Entwicklung, -Testung und -Verteilung senken die Fehlerwahrscheinlichkeit. Eine CI/CD-Pipeline kann innerhalb weniger Minuten ganz einfach Hunderte von Tests durchführen. Manuell nähme der Vorgang weit mehr Zeit in Anspruch. Continuous Delivery bedeutet auch, dass diese Tests jedes Mal immer mit genau denselben Parametern ablaufen – eine Vorgabe, die mit manuellem Testen deutlich schwerer zu erreichen ist.
2. Kurze Feedback-SchleifeDas System testet automatisch jeden Code-Beitrag. So entdeckt es mögliche Fehler schon in den frühen Phasen des Entwicklungszyklus. Das verkürzt die Feedback-Schleife, anhand derer die Entwickler Programmfehler erkennen und direkt im Anschluss an die Tests beheben können.
3. Automatische ErsatzlösungFalls während der Freigabe zur Produktion etwas schiefläuft, wird der Freigabe-Prozess abgebrochen und rückgängig gemacht. So bleibt die Produktionsumgebung genauso intakt wie vor der Freigabe.
4. Kleinere ReleasesDa praktisch keinerlei manueller Beitrag zur Freigabe mehr nötig ist, können Sie öfter neue Versionen veröffentlichen. Das hat einen entscheidenden Vorteil: Wenn Fehler auftreten, sind sie einfacher zu identifizieren.
Zwei abschließende Tipps für Continuous Delivery
1. Testen, testen, testen!Sehen Sie ausreichend Tests vor, um die Anzahl an Programmfehlern in einer Version minimal zu halten (natürlich programmieren Sie sowieso schon immer perfekt ... nur um auf Nummer Sicher zu gehen! 😉). Ob Unit- oder Frontend-Tests: Planen Sie für jeden neuen Beitrag eine Prüfung ein. Die Tests sollten die gesamte Codebasis abdecken und bei Entwicklung neuer Funktionen entsprechend ausgeweitet werden. Sehen Sie außerdem auch End-to-End-Tests vor und gehen Sie sicher, dass neue Funktionen keine anderen (älteren) Features zerstören.
2. Automatisieren!Die Automatisierung ist der Schlüssel zum Erfolg. Sie brauchen Standardprozesse zum Testen und Umsetzen Ihrer Code-Zeilen – ohne das Risiko zu laufen, dass sich menschliche Fehler einschleichen. Mit einer automatisierten Verteilung erleben Sie beim und nach dem Release keine Überraschungen – oder schlimmstenfalls sehr wenige. Schließlich läuft der Prozess immer unter denselben Parametern ab.