continuous delivery. lessons (not) learned.€¦ · ant, maven, gradle, bash, jenkins, ... →...

21
Continuous Delivery. Lessons (Not) Learned. @spanneberg XP Days 2015

Upload: others

Post on 14-Jul-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Continuous Delivery. Lessons (Not) Learned.

@spannebergXP Days 2015

Page 2: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Vorstellung

2

• Java Dev turned Automation Junkie

• CI/CD/Automation seit ~2007:Ant, Maven, Gradle, Bash, Jenkins, Puppet, Ansible, ...

• Banken, IT-Diensleister, Web-Platformen

• @codecentric München

Page 3: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

TL;DR

3

Page 4: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

4

Continuous Delivery ?

Page 5: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

5

Continuous Delivery ?

Jenkins vs. Bamboo vs. ...

Private Cloud!

Docker FTW!!!11!

Puppet/Chef/Ansible ...

Microservices

Phoenix Server

DevOps

Page 6: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

6

Continuous Delivery ?

Kultur

Prozesse

Commitment aller Beteiligten

ArchitekturManagement-Rückhalt

Strategie

Page 7: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Erfahrungsberichte

7

Ausgangssituation → Verlauf → Lehre

Page 8: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 1: Das Datingportal

8

Ausgangssituation:

→ Legacy Codebase (CORBA anyone?)→ Modernisierungen→ Dev-getriebene Einführung Continuous Delivery

Page 9: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 1: Das Datingportal

9

Verlauf:

→ Legacy Code → Legacy Pipeline→ Umsetzung (exkl.) duch 2 Mitarbeiter (dev)→ Feature-Druck nach 1. laufender Version→ Mitarbeiter machen wieder andere Dinge→ Probleme in der Pipeline. Probleme für alle.→ Ops zu wenig/zu spät mit im Boot. Keine gemeinsame Team-Mentalität

Page 10: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 1: Das Datingportal

10

Lehre:

Die Umsetzung von Continuous Delivery ist keine einmalige Angelegenheit

→ Reviews und Evaluierung neuer Techniken und Vorgehen→ Behandle deine CD-Pipeline und Infrastruktur wie deinen Code→ Wissen in den Teams. Bestenfalls kein CD-Team.

Page 11: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 1: Das Datingportal

11

Lehre:

Continuous Delivery braucht Rückhalt im Management

→ Bereitschaft Leuten Zeit für das Thema einzuräumen und kontinuierlich Zeit zu investieren→ Impact auf Teams ausserhalb Dev und Ops

Page 12: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 2: Die Bank

12

Ausgangssituation:

→ Management-Entscheidung: “Wir machen jetzt Scrum und Agile”→ Silo-Teams (HW, OS, VMs, DB, Ops, Dev1..n, Test, …)→ Orga: Projekt vs. Produkt→ (Nicht-) Entscheidungskultur (“das muss dann jmd entscheiden”, “da müssen wir noch einen Termin machen”)

Page 13: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 2: Die Bank

13

Verlauf:

→ Projekt zur Einführung = Wasserfall-Projekt (O RLY?)→ Silo-Teams für Einzel-Themen (Prozess, VCS+CI, DB, Testing, ...)→ fehlender Wille (Möglichkeit?) sich Prozessuell zu verändern→ am Besten selber Prozess wie vorher, nur alle 2 Wochen

Page 14: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 2: Die Bank

14

Lehre:

Continuous Delivery muss vom Team gewollt sein

→ Top-Down-Entscheidungen oft zum scheitern verurteilt→ bei CD müssen Teams/Einzelne mehr/neue Verantwortungen übernehmen und sich verändern wollen→ lieber in kleinen Teilen/Iterationen bottom-up arbeiten

Page 15: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 2: Die Bank

15

Lehre:

Continuous Delivery erfordert Veränderungen an Prozessen und Kultur/Organisation

→ wenn man auf einen schwergewichtigen Prozess wert legt sollte man es sich mit CD gut überlegen→ Impact auf die ganze Organisation

Page 16: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 3: Die Hotelsuchmaschine

16

Ausgangssituation:

→ (Greenfield) Rewrite bestehender Platform (Legacy Code und Braindrain)→ Devs im “Elfenbeinturm”→ Ops beschäftigt mit Tagesgeschäft

Page 17: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 3: Die Hotelsuchmaschine

17

Verlauf:

→ Team hat sich verspielt→ Keine You-build-it-you-run-it-Mentalität im Dev-Team→ Ops bei Rewrite nicht früh mit im Boot→ Resultat: enge Kopplung und Schwierigkeiten im realen Betrieb

Page 18: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Story 3: Die Hotelsuchmaschine

18

Lehre:

Continuous Delivery löst nicht deine Architektur-Probleme

→ Build / Deployment / Orchestrierung … sollten als 1st Class Citizens behandelt werden

Page 19: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

19

Diskussion

Page 20: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Bildquellen

20

• https://www.flickr.com/photos/rdecom/4968163345• https://www.flickr.com/photos/slayerx/3330554699• https://www.flickr.com/photos/16210667@N02/8011900493• https://upload.wikimedia.org/wikipedia/commons/c/c0/I_want_you.jpg

Page 21: Continuous Delivery. Lessons (Not) Learned.€¦ · Ant, Maven, Gradle, Bash, Jenkins, ... → Reviews und Evaluierung neuer Techniken und Vorgehen → Behandle deine CD-Pipeline

Danke!

21

Feedback:

[email protected]

@spanneberg