-
1.
Continuous Delivery
Steffen Gebert (@StGebert)
DevOps-Meetup Würzburg Mainfranken, 07.11.2016
Slides: st-g.de/speaking
Image courtesy of
-
2.
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
-
3.
About Me
Researcher / PhD Student
(Software-based Networks)
2011 - 2016
Core Team Member
2010 - 2013
Server Admin Team Member
since 2011
3
-
4.
4
Fluss
• von Änderungen
• und damit von Arbeit
-
5.
5
Unsere Arbeit: Code
Software Infrastruktur Compliance …Konfiguration
-
6.
6
Ziel: Kunde
-
7.
7
-
8.
8
Wertstrom / Lieferkette
Qualitätssicherung Veröffentlichung
(Release, Deployment)
KundeCode
Entscheider
-
9.
9
Release 0.1
-
10.
10
Release 1.0
-
11.
11
Release 2.0
-
12.
12
Release 3.0
-
13.
13
Das Kernproblem
Noch mehr
Features!
Ufff..
O
O
O O
Deployments
Was solls, die
paar Bugs..
-
14.
14
Technische Schuld
-
15.
15
Stoppt den Fluss
-
16.
16
In der Regel krachts..
-
17.
17
Informatiker haben anderen
Rhythmus – sagt man
-
18.
18
Software-Deployments
-
19.
19
Single Piece
Delivery
-
20.
20
Lean Manufacturing
Foto: Toyota
-
21.
21
Durchfluss maximieren
-
22.
22
Deployment Pipeline
Automatisiertes
Release /
Deployment
Stage
2Versionskontrolle
Stage
1
Stage
….
-
23.
23
Yahoo / flickr
-
24.
24
Amazon
• Let me say that
again. Amazon
deploys new
software to
production every 11.6
seconds
-
25.
25
-
26.
26
-
27.
27
Wertstrom / Lieferkette
-
28.
28
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
-
29.
29
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
-
30.
30
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Unit Tests
Funktionale Tests
Nicht-funktionale
Tests
Syntaxcheck
Kompilieren
Testpyramide
-
31.
31
Code von
damals…
-
32.
32
Schnelles Feedback
-
33.
33
Deployment Pipeline
-
34.
34
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
-
35.
35
Produktiv- und Testumgebung(en)
-
36.
36
Deployment Pipeline
Versionskontrolle
Automatisierte
Akzeptanztests
Benutzer-
Akzeptanztests
Automatisiertes
Release / Deployment
Kompilieren
-
37.
37
Commits in Mainline
• Subversion: trunk
• Git: master
-
38.
38
Feierabend < Feature fertig?
-
39.
39
Features verstecken?
Image: http://wallpaperfolder.com/wallpapers/invisible+man
-
40.
40
Feature Toggles
-
41.
41
Kontinuierliches Experimentieren
-
42.
42
Feedback aus Produktivbetrieb
-
43.
43
CD Pipelines mit Jenkins
• Jenkins ist Open-Source CI/CD Server
• Mehr unter
jenkins.io bzw. st-g.de/speaking
-
44.
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
Warum stehe ich heute hier und erzähl Ihnen was vom Internet?
HTTP/2 bei typo3.org!!
Natürlich möchten wir so schnell wie möglich an das Geld
Chef oder das Marketing hat auch noch mit zu reden
Produktion könnte auch Update der Webseite sein
Viel mehr features. Klar, sieht cool aus..geht auch leicht schief
Mehr features, damit der Kunde noch zufriedener wird und QA nur ein Mal durchlaufen werden muss
Deployments immer letzter Sonntag im Quartal
Jedoch kann der Damm nur gesprengt werden
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
Chef oder das Marketing hat auch noch mit zu reden
Produktion könnte auch Update der Webseite sein
Damit darf das dann nicht ewig dauern -> manuelle Interaktion raus
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
Langlebige Feature-Branches vermeiden
Mindestens täglich
Brauchen vorzeigbaren Build
Twitter Design
Private Beta
Shopping-Button
Facebook Chat
Performance Monitoring, Fehler Logging
Business-Metriken
DevOps