Slide 1

Slide 1 text

Jeroen Reijn & Sjoerd Hemminga Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale is powered by

Slide 2

Slide 2 text

Waar gaan we het over hebben? • Problemen • Hoe kan Continuous Delivery helpen? • Onze aanpak & opstart-problemen • Huidige staat & resterende uitdagingen 2

Slide 3

Slide 3 text

Over ons Jeroen Reijn • IT-Architect @ ANWB • Software/Solution architect @ Luminis Amsterdam Sjoerd Hemminga • Software engineer @ ANWB 3 @jreijn @shemminga

Slide 4

Slide 4 text

Intro ANWB

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

Intro HV / ALC / WW

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

Transitie oud naar nieuw 15 0 20,000 40,000 60,000 80,000 100,000 120,000 April Juni Juli Augustus September Oktober November December Januari Februari Maart April Mei Juni Juli Augustus September Oktober November December Januari Februari Maart 2015 2016 2017 Aantal Cases jaar, maand Nederland

Slide 16

Slide 16 text

Processing Storage UI Technology stack 16

Slide 17

Slide 17 text

Intake Landschap 17 Zakelijke markt FLOW Consumenten markt BI Logicx Finance Uitvoering Online Zusterclubs

Slide 18

Slide 18 text

ONTWIKKELPROCES BEGIN 2016 18

Slide 19

Slide 19 text

Agile werkwijze & Scrum • 3 ontwikkel teams – Case, Rechten en Publiceren – Bestaande uit Ontwikkelaars, Testers en Analisten • 2 beheer teams – Functioneel – Technisch • 2 wekelijkse sprints – 26 vaste releases per jaar – Hotfix releases als nodig 19

Slide 20

Slide 20 text

Werkwijze 20

Slide 21

Slide 21 text

Git workflow 21

Slide 22

Slide 22 text

Werkwijze 22

Slide 23

Slide 23 text

Jenkins • Een open source, cross-platform, continuous integration en continuous delivery applicatie. • Makkelijk te configureren • Groot plugin ecosysteem • Gebruiken we voor diverse jobs: – Compile en Unit test – Releases – Regressie tests – Performance test 23

Slide 24

Slide 24 text

XLDeploy • Gestandaardiseerde deployments • Applicatie configuratie • Bevat alle deployables 24

Slide 25

Slide 25 text

Verantwoordelijkheid 25

Slide 26

Slide 26 text

WAAR LIEPEN WE TEGEN AAN? 26

Slide 27

Slide 27 text

Waar liepen we tegen aan? • Geregeld verstoringen – Veel en divers werk per sprint – ‘Haast’ om wijzigingen mee te krijgen • Tijd nodig om releases te stabiliseren • Veel afstemming en wachttijd tussen teams – Git merge conflicten – Tests samenvoegen na de ‘release’ – Beschikbaarheid test omgeving • Grote/langdurige GAT na de sprint 27

Slide 28

Slide 28 text

HOE KAN CONTINUOUS DELIVERY HELPEN? 28

Slide 29

Slide 29 text

Continuous Delivery “Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.” 29 Bron: https://continuousdelivery.com/

Slide 30

Slide 30 text

Principes • Bouw kwaliteit in • Werk in kleine batches • Computers doen de herhalende taken, mensen lossen problemen op • Blijf continu verbeteren • Iedereen is verantwoordelijk 30

Slide 31

Slide 31 text

ONZE AANPAK 31

Slide 32

Slide 32 text

Begin bij het begin… • Praat met elkaar en creëer een gezamenlijk begrip • Cultuur • Wat is er in de teams nodig? • Wat is er aan de business kant nodig? 32

Slide 33

Slide 33 text

Gezamenlijk begrip • Continuous Integration != Continuous Delivery != Continuous Deployment • “Gaan de ontwikkelteams de software nu direct uitrollen naar productie?” • “We zijn toch geen Netflix, waarom hebben we dit nodig?” 33

Slide 34

Slide 34 text

Cultuurveranderingen • Ontwikkelaars, testers, analisten, beheerders en gebruikers werken als één team. Verwijder ‘afstand’. • Af als het ook echt af is. • Afstappen van een ‘allesomvattende’ GAT • Openheid en transparantie • Continu samen leren, reflecteren en verbeteren 34

Slide 35

Slide 35 text

Analyse Ontwikkeling Test Acceptatie Productie 35

Slide 36

Slide 36 text

Analyse verbeterpunten Ontwikkeling Test Acceptatie Productie 36

Slide 37

Slide 37 text

Los team ter ondersteuning • Focus op automatisering • Ondersteunend aan andere teams • Monitoring • Alertering 37

Slide 38

Slide 38 text

Testen • ANWB Regressietest Tool (ART) • Onder versie beheer brengen van de tests • Breder gedragen kennis van test tool • Focus op dekkingsgraad • Regressie test op iedere werkplek kunnen draaien tegen een installatie van FLOW 38

Slide 39

Slide 39 text

Release per story • Ontkoppel deployment van het einde sprint moment • Maak de sprint demo ceremonieel • Releases van 1 keer per sprint naar tot 3 keer per dag 39

Slide 40

Slide 40 text

Test omgevingen? • Hoe gaan we om met de bottleneck voor test omgevingen? – VM’s? – Containers? 40

Slide 41

Slide 41 text

Wat doet Docker? 41 Bron: https://www.docker.com/

Slide 42

Slide 42 text

Docker FLOW 42 Docker Swarm Node 1 Node 2 Node 3 ART Node FLOW -1321 FLOW -1322 FLOW -1323 FLOW -1323

Slide 43

Slide 43 text

On-demand test omgevingen 43

Slide 44

Slide 44 text

Directe feedback • Release notificaties via messenger tool • Verstoring notificaties • Real-time feedback 44

Slide 45

Slide 45 text

Splunk • Verzamelt en indexeert log en machine data • Krachtige zoek, analyse en visualizatie mogelijkheden • Beschikbaar on-premise en in de cloud • Verstuurt notificaties op basis van events 45

Slide 46

Slide 46 text

Zabbix • Open source monitoring tool • Servers monitoring • Applicatie monitoring • DB Monitoring 46

Slide 47

Slide 47 text

KINDERZIEKTES 47

Slide 48

Slide 48 text

Zorgen over stabiliteit van operatie Afspraken over uitrol- windows 48

Slide 49

Slide 49 text

Zorgen over stabiliteit van software Betere tests 49

Slide 50

Slide 50 text

Onbekendheid van developers met tests Meer tests door developers 50

Slide 51

Slide 51 text

Wachtrijen voor omgevingen Meer omgevingen / containers 51

Slide 52

Slide 52 text

Verwachte oplevering Per sprint 52

Slide 53

Slide 53 text

Meerdere releases tegelijk Een release- bord 53

Slide 54

Slide 54 text

De release-paal 54

Slide 55

Slide 55 text

WAAR STAAN WE NU? 55

Slide 56

Slide 56 text

Nieuw Git workflow 56 master feature feature v4.17.3.1 v4.17.3.2

Slide 57

Slide 57 text

Verantwoordelijkheid nu 57

Slide 58

Slide 58 text

Wat heeft het opgeleverd? • Minder stress: – Geen haast meer om stories in sprint-release te stoppen – Geen stress voor de demo meer: niet af is niet af • Meer inzicht in release • Betere verdeling van kennis • Sneller problemen kunnen oplossen • Minder merge conflicten • Minder wachten op testomgevingen • … en natuurlijk sneller time to market. 58

Slide 59

Slide 59 text

RESTERENDE UITDAGINGEN 59

Slide 60

Slide 60 text

Releases zijn nog veel werk Merge master Aftrappen regressietest Aftrappen performancetest Aftrappen datatest Release bouwen Proef- deployment Smoke test Deployment naar productie 60

Slide 61

Slide 61 text

Regressietest niet stabiel • Instabiliteit door: – GUI jitter – Tests die te veel op externe test-systemen leunen • Ervaring nodig om echte fouten te zien • Handmatige retry van tests bij onzekerheid • Tijdelijk opgelost met automatische retry • Permanente oplossing: – Tests verbeteren – Stubs van externe systemen 61

Slide 62

Slide 62 text

Test-keten 62 Intake Zakelijke markt FLOW Consumenten markt BI Logicx Finance Uitvoering Online Zusterclubs

Slide 63

Slide 63 text

Lessons learnt • Blijf in gesprek – Creëer gezamenlijk begrip – Neem zorgen serieus, maar laat je niet verlammen • Begin klein • Verbeter incrementeel • Actie is beter dan stilstand Neem verantwoordelijkheid voor je eigen proces 63

Slide 64

Slide 64 text

? Bedankt Vragen? is powered by