Continuous Delivery
Steffen Gebert (@StGebert)
DevOps-Meetup Würzburg Mainfranken, 07.11.2016
Slides: st-g.de/speaking
Image courtesy of
2
Continuous Delivery
• Änderungen, wie z.B.
• Features
• Bug fixes
• Konfigurationsänderungen
• Experimente
• jeweils
• zuverlässig
• schnell
• kontinuierlich
• sicher
• zum Benutzer bzw. in den Betrieb bringen
nach: Jez Humble, continuousdelivery.com
About Me
Researcher / PhD Student
(Software-based Networks)
2011 - 2016
Core Team Member
2010 - 2013
Server Admin Team Member
since 2011
3
4
Fluss
• von Änderungen
• und damit von Arbeit
5
Unsere Arbeit: Code
Software Infrastruktur Compliance …Konfiguration
6
Ziel: Kunde
7
8
Wertstrom / Lieferkette
Qualitätssicherung Veröffentlichung
(Release, Deployment)
KundeCode
Entscheider
9
Release 0.1
10
Release 1.0
11
Release 2.0
12
Release 3.0
13
Das Kernproblem
Noch mehr
Features!
Ufff..
O
O
O O
Deployments
Was solls, die
paar Bugs..
14
Technische Schuld
15
Stoppt den Fluss
16
In der Regel krachts..
17
Informatiker haben anderen
Rhythmus – sagt man
18
Software-Deployments
19
Single Piece
Delivery
20
Lean Manufacturing
Foto: Toyota
21
Durchfluss maximieren
22
Deployment Pipeline
Automatisiertes
Release /
Deployment
Stage
2Versionskontrolle
Stage
1
Stage
….
23
Yahoo / flickr
24
Amazon
• Let me say that
again. Amazon
deploys new
software to
production every 11.6
seconds
25
26
27
Wertstrom / Lieferkette
28
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
29
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
30
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Unit Tests
Funktionale Tests
Nicht-funktionale
Tests
Syntaxcheck
Kompilieren
 Testpyramide
31
Code von
damals…
32
Schnelles Feedback
33
Deployment Pipeline
34
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
35
Produktiv- und Testumgebung(en)
36
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
37
Commits in Mainline
• Subversion: trunk
• Git: master
38
Feierabend < Feature fertig?
39
Features verstecken?
Image: http://wallpaperfolder.com/wallpapers/invisible+man
40
Feature Toggles
41
Kontinuierliches Experimentieren
42
Feedback aus Produktivbetrieb
43
CD Pipelines mit Jenkins
• Jenkins ist Open-Source CI/CD Server
• Mehr unter
jenkins.io bzw. st-g.de/speaking
44
Continuous Delivery
• Änderungen, wie z.B.
• Features
• Bug fixes
• Konfigurationsänderungen
• Experimente
• jeweils
• zuverlässig
• schnell
• kontinuierlich
• sicher
• zum Benutzer bzw. in den Betrieb bringen
nach: Jez Humble, continuousdelivery.com

Continuous Delivery

Hinweis der Redaktion

  • #4 Warum stehe ich heute hier und erzähl Ihnen was vom Internet? HTTP/2 bei typo3.org!!
  • #8 Natürlich möchten wir so schnell wie möglich an das Geld
  • #9 Chef oder das Marketing hat auch noch mit zu reden Produktion könnte auch Update der Webseite sein
  • #13 Viel mehr features. Klar, sieht cool aus..geht auch leicht schief
  • #14 Mehr features, damit der Kunde noch zufriedener wird und QA nur ein Mal durchlaufen werden muss Deployments immer letzter Sonntag im Quartal
  • #16 Jedoch kann der Damm nur gesprengt werden
  • #21 Nicht erst bei 100 Autos jweils die Reifen, dann bei allen jeweils die Spiegel große Batchsizes sind doof (etwas unintuitiv) Fehler spät entdeckt Unflexibel
  • #23 Chef oder das Marketing hat auch noch mit zu reden Produktion könnte auch Update der Webseite sein
  • #28 Damit darf das dann nicht ewig dauern -> manuelle Interaktion raus
  • #36 Saubere Umgebungen erforderlich Müssen production entsprechen gleiche Version Betiebssystem und Bibliotheken Nicht immer einfach (Datenbank, Cache, Proxy, ..) Aktueller Build installiert Automatisiert bereitgestellt für manuelle Tests
  • #38 Langlebige Feature-Branches vermeiden Mindestens täglich
  • #39 Brauchen vorzeigbaren Build
  • #41 Twitter Design Private Beta
  • #42 Shopping-Button Facebook Chat
  • #43 Performance Monitoring, Fehler Logging Business-Metriken DevOps