Mit der umgehenden Auslieferung geschriebener Codes ermöglicht Continuous Deployment verkürzte Release-Zyklen und findet somit Anklang an dem Konzept des Lean-Startups. Die Idee der schnellen Veröffentlichung von Veränderungen einer Software mag von dem ein oder anderen kritisch betrachtet werden. Das folgende Video veranschaulicht, weshalb Continuous Deployment gerade wegen der automatisierten Live-Schaltung so sinnvoll ist.
Dieses Video downloaden (MP4, 400 MB)
Die Idee hinter dem Continuous Deployment
Als eine Technik des Lean-Startups steht auch beim Continuous Deployment die schnelle Auslieferung der Software im Vordergrund. Die Befürchtung, dass dies Auswirkungen auf die Qualität der Software haben könnte ist jedoch unbegründet, da eine QA-Pipeline die Qualitätsprüfung vor der Veröffentlichung gewährleistet.
Den Aspekt der unmittelbaren Veröffentlichung sprach bereits Kent Beck scherzhaft an:
"Write one line of code. Deploy. (...) Once the deployment is done, write another line of code. Deploy."
Mit diesem Konzept kann die Anforderung des Lean-Startups, Hypothesen schnell auf dem Markt zu testen, erfüllt werden, da aufwändige Deployments und lange Wartezeiten vermieden werden, weshalb Continuous Deployment auch bei TwentyFeet angewendet wird.
Die Minimierung der manuellen Schritte in der Software-Entwicklung ermöglicht dem Entwickler die Konzentration auf die Programmierung, da er lediglich die Codes schreiben und direkt in die Prodkution schicken muss.
Wie wichtig diese Zeitersparnis ist hebt Eric Ries mit folgenden Worten hervor:
“The biggest waste in software is created from waiting for software as it moves from one state to another: Waiting to code, waiting to test, waiting to deploy. Reducing or eliminating these waits leads to faster iterations which is the key to success.”
Die Deployment Pipeline
Die bereits erwähnte Qualitätsprüfung findet in der Deployment Pipeline statt. Hier werden auf verschiedenen Ebenen Tests durchgeführt, die der Veröffentlichung der geschriebenen Codes vorangehen.
Dieser ganze Testablauf wird von einem Continuous Integration Sever, bei //SEIBERT/MEDIA Jenkins, bewacht. Jenkins ist dafür zuständig, den Entwickler per E-Mail zu benachrichtigen, wenn ein Code nicht alle Tests erfolgreich durchlaufen ist. Ohne die Korrigierung des Codes findet keine Veröffentlichung statt.
Die Befürchtung, fehlerhafte Codes könnten auf die Live-Plattform gelangen, ist daher unberechtigt. Die automatisierten Tests sind weniger zeitaufwendig und ermöglichen somit die bereits erwähnte Verkürzung der Release-Zyklen.
Rahmenbedingungen
So zahlreich die Vorteile von Continuous Deployment auch sind (verkürzte Release-Zyklen, Qualitätsprüfung, schnelle Auslieferung), gibt es bestimmte Rahmenbedingungen, die erfüllt sein müssen.
Außer dem CI-Server sind vor allem Versionskontrollen und Deployment Scripts erforderlich. Für die Deployment Pipeline muss natürlich auch eine flächendeckende Testumgebung zur Verfügung gestellt werden, die Unit-, Integrations- und GUI-Tests beinhaltet.
Trotz der automatisierten Tests kann die Deployment Pipeline auch noch weiterhin manuelle Schritte erfordern, welche wiederum zu Verzögerungen führen.
Für die Umsetzung des Continuous Deployments bei TwentyFeet waren bereits die wichtigsten Voraussetzungen vorhanden. So arbeitete TwentyFeet bereits mit Jenkins und verfügte auch über teilautomatisierte Deployment Scripts, weshalb ein geringerer Aufwand notwendig war. Unternehmen, die diese Rahmenbedingungen nicht bereits erfüllen, müssen mit entsprechend mehr Aufwand rechnen.
Ihr Partner für agile Software-Entwicklung!
Haben Sie Fragen zu agilen Vorgehensweisen in der Organisation und der Software-Entwicklung? Möchten Sie Agilität in Ihrem Unternehmen einführen oder bestehende Prozesse verbessern? Bei //SEIBERT/MEDIA ist Agile in Projekten an der Tagesordnung. Gerne helfen wir Ihnen bei der Etablierung und Optimierung agiler Prinzipien und Verfahren in Ihrem Unternehmen –sprechen Sie uns einfach unverbindlich an. Ausführliche Informationen zu unseren Agile-Dienstleistungen finden Sie in unserem Agile-Orientierungsangebot mit Leistungsbeschreibungen und Beispielkalkulationen.
Weiterführende Infos
Agile Software-Entwicklung vs. Wasserfall-Modell: Was die Forschung sagt
Agile Software-Entwicklung erfordert viel Disziplin
Software-Tests: Notwendigkeit und Arten des Testens
Unit-Tests in der Software-Entwicklung
Blog-Post von Eric Ries: Why Continuous Deployment?
Blog-Post von Ash Maurya: Continuous Deployment
Continuous Delivery