Continuous
Deployment
Am Bespiel TwentyFeet
"Write one line of code.
Deploy. (...)
Once the deployment is
done, write another line
of code. Deploy."
Kent Beck
Beispiele

•   Flickr: ca. 60 Deployments pro Woche

•   GitHub: bis zu 40 Deployments am Tag

•   Amazon mit einem Deployment alle 11,6
    Sekunden


siehe: http://www.gi.de/service/informatiklexikon/detailansicht/article/deployment-continuous.html
Agenda
• Was ist Continuous Deployment?
• Welche Vorteile bringt mir das?
• Welche Rahmenbedingungen gibt es?
• Welche Herausforderungen müssen beachtet
  werden?
• Wie haben wir es bei TwentyFeet umgesetzt?
Grundlegendes
• Jede geänderte Code-Zeile führt zur
  Auslieferung einer vollständigen und
  QS-geprüften neuen Version der
  Software

• Minimierung der manuellen Schritte
  vom Test bis zur Auslieferung

• Deployment bzw. QA-Pipeline:
  Qualitätsprüfung in mehreren Phasen
Vorteile
• Continuous Integration: Frühzeitiges
  Erkennen und Beheben von Fehlern
• Verkürzte Release-Zyklen (Time-to-market)
• Schneller Weg, um Ideen am Markt zu
  Testen (Hypothesen im Rahmen des Lean-
  Startup)
• Keine aufwändigen Deployments
Rahmenbedingungen
•   Continuous Integration Server (z.B. Jenkins,
    Bamboo)
•   VCS - Versionskontrolle
•   Deployment Scripts
•   Umfangreiche und automatisierte
    Testumgebung
•   Partielles Rollout (Feature-Flags, Feature
    Toggle)
Testumgebung

• Verschiedene Ebene der technischen Tests
 • Unit-, Integration, Gui-Tests
• Deployment erst, wenn alle Tests grün.
• manuelles (exploratives) Testen durchaus
  Teil der Pipeline
Herausforderungen
•   Robuste und flächendeckende Testsuite notwendig
•   Vereinbarkeit mit Integrationszyklen (Sprints,
    Zwischenauslieferungen)
•   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
•
Continuous Deployment
    & Lean Startup
! "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."

Eric Ries
TwentyFeet
• Auslöser: Lean Startup Methodik
• CI-Server Jenkins bereits eingesetzt
 • Unit-, Integration-, Gui-Tests
• Deployment-Scripts bereits
  teilautomatisiert
• Einfaches Bereitstellen von Testumgebungen
  durch Cloud Hosting
The end.

Continous Deployment - Schneller entwickeln

  • 1.
  • 2.
    "Write one lineof code. Deploy. (...) Once the deployment is done, write another line of code. Deploy." Kent Beck
  • 3.
    Beispiele • Flickr: ca. 60 Deployments pro Woche • GitHub: bis zu 40 Deployments am Tag • Amazon mit einem Deployment alle 11,6 Sekunden siehe: http://www.gi.de/service/informatiklexikon/detailansicht/article/deployment-continuous.html
  • 4.
    Agenda • Was istContinuous Deployment? • Welche Vorteile bringt mir das? • Welche Rahmenbedingungen gibt es? • Welche Herausforderungen müssen beachtet werden? • Wie haben wir es bei TwentyFeet umgesetzt?
  • 5.
    Grundlegendes • Jede geänderteCode-Zeile führt zur Auslieferung einer vollständigen und QS-geprüften neuen Version der Software • Minimierung der manuellen Schritte vom Test bis zur Auslieferung • Deployment bzw. QA-Pipeline: Qualitätsprüfung in mehreren Phasen
  • 6.
    Vorteile • Continuous Integration:Frühzeitiges Erkennen und Beheben von Fehlern • Verkürzte Release-Zyklen (Time-to-market) • Schneller Weg, um Ideen am Markt zu Testen (Hypothesen im Rahmen des Lean- Startup) • Keine aufwändigen Deployments
  • 7.
    Rahmenbedingungen • Continuous Integration Server (z.B. Jenkins, Bamboo) • VCS - Versionskontrolle • Deployment Scripts • Umfangreiche und automatisierte Testumgebung • Partielles Rollout (Feature-Flags, Feature Toggle)
  • 8.
    Testumgebung • Verschiedene Ebeneder technischen Tests • Unit-, Integration, Gui-Tests • Deployment erst, wenn alle Tests grün. • manuelles (exploratives) Testen durchaus Teil der Pipeline
  • 9.
    Herausforderungen • Robuste und flächendeckende Testsuite notwendig • Vereinbarkeit mit Integrationszyklen (Sprints, Zwischenauslieferungen) • 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 •
  • 10.
    Continuous Deployment & Lean Startup ! "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." Eric Ries
  • 11.
    TwentyFeet • Auslöser: LeanStartup Methodik • CI-Server Jenkins bereits eingesetzt • Unit-, Integration-, Gui-Tests • Deployment-Scripts bereits teilautomatisiert • Einfaches Bereitstellen von Testumgebungen durch Cloud Hosting
  • 12.