Die Live-Session via Web-TV fand am 8. August 2012 statt.
Video der Live-Session
Dieses Video downloaden (MP4, 400 MB)
Grundlagen
- Ziel: Kurze Release-Zyklen unter Einhaltung der Qualitätskriterien und QS-Prozesse
- Jede geänderte Code-Zeile führt zur Auslieferung einer vollständigen und QS-geprüften neuen Version der Software
- Kent Beck scherzhaft über Continuous Deployment:
"Write one line of code. Deploy. (...) Once the deployment is done, write another line of code. Deploy."
- Umfangreicher und automatisierter QS-Prozess
- QA-Pipeline: Qualitätsprüfung in mehreren Phasen --> Unit-Tests, Integrationstests, Oberflächentests
Schaubild zur Deployment Pipeline bei TwentyFeet
Agenda für die Live-Session
Grundlegendes: Was ist Continuous Deployment?
- Continuous Deployment ist eine Lean-Startup-Technik
- Prozess, bei dem alle Code-Zeilen für eine Anwendung unmittelbar in die Produktion eingehen
Vorteile
- Ständige Überprüfung von Integrations-Problemen
- Schnelle Entdeckung von Fehlern im System
- Unmittelbare Reaktion des Systems bei fehlerhaftem oder unvollständigem Codes
- Verkürzte Release-Zyklen und höhere Eigeninitiative
- Schneller Weg, um Ideen am Markt zu testen (Hypothesen im Rahmen des Lean-Startup)
Kritische Betrachtung / Gefahren
- Sichtbarkeit des fehlerhaften Codes, die durch Bugs erzeugt werden, die nicht durch Unit-Tests gesichert sind
Rahmenbedingungen
- Continuous Integration Sever (Jenkins): Überwachungsplattform der Deployment Pipeline
- Source control commit check (Quellkontrollen)
- Deployment Scripts
- Testmechanismen (erhöhte Automatisierung): Unit-, Integrations- und GUI-Tests
- Deployment erst, wenn alle Tests "grün" sind -> stärkt die Relevanz des CI-Servers
- manuelles (exploratives) Testen durchaus Teil der Pipeline
- Partielles Rollout (für bestimmte Benutzergruppen, Feature Flags, Feature Toggle)
- Ursachenanalyse
Herausforderungen
- Robuste und flächendeckende Testsuite notwendig
- Vereinbarkeit mit Integrationszyklen (Sprints)
- Umgang mit Versionskontrolle muss geklärt werden (Versionen, Branches vs. Head Depoyment + Tags)
- Manuelle Schritte führen zu Verzögerungen (Unterschiede zwischen Test- und Live-Version wachsen)
Umsetzung bei TwentyFeet
- Auslöser: Lean-Startup
- James Womack zu Lean Thinking:
"Waste is any human activity which absorbs resources but creates no value."
- Möglichst kurze Release-Zyklen finden Anklang im Lean-Startup-Konzept
- Eric Ries hierzu:
"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."