Continuous Delivery wordt vaak geassocieerd met een snellere time-to-market, maar wat als dat niet je voornaamste probleem is? Een aantal jaar geleden heeft de ANWB besloten om zich van een traditionele enterprise organisatie te transformeren naar een Agile organisatie. Bij de afdeling Hulpverlening zijn wij met drie teams bezig met het ontwikkelen van het nieuwe case managementsysteem voor de ANWB Alarmcentrale. Als onderdeel van onze agile werkwijze maakten wij een release en rolden wij deze uit aan het eind van onze 2 wekelijkse sprints. Dit leverde ons regelmatig verschillende problemen op en halverwege 2016 besloten we dat het anders moest. We hebben toen een beweging ingezet richting Continuous Delivery. In deze presentatie zullen we ingaan op de uitdagingen die we hadden, hoe we die hebben aangepakt, en op een aantal onverwachte voordelen.
Basic web application development with Apache Cocoon 2.1
Hoe releasen minder pijnlijk werd bij de ANWB Alarmcentrale
1. Jeroen Reijn & Sjoerd Hemminga
Hoe releasen minder pijnlijk
werd bij de ANWB
Alarmcentrale
is powered by
2. Waar gaan we het over hebben?
• Problemen
• Hoe kan Continuous Delivery helpen?
• Onze aanpak & opstart-problemen
• Huidige staat & resterende uitdagingen
2
15. 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
AantalCases
jaar, maand
Nederland
23. 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
27. 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
29. 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/
30. Principes
• Bouw kwaliteit in
• Werk in kleine batches
• Computers doen de herhalende taken, mensen lossen
problemen op
• Blijf continu verbeteren
• Iedereen is verantwoordelijk
30
32. 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
33. 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
34. 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
37. Los team ter ondersteuning
• Focus op automatisering
• Ondersteunend aan andere teams
• Monitoring
• Alertering
37
38. 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
39. 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
40. Test omgevingen?
• Hoe gaan we om met de bottleneck voor test omgevingen?
– VM’s?
– Containers?
40
45. 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
46. Zabbix
• Open source monitoring tool
• Servers monitoring
• Applicatie monitoring
• DB Monitoring
46
58. 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
60. Releases zijn nog veel werk
Merge master
Aftrappen
regressietest
Aftrappen
performancetest
Aftrappen
datatest
Release bouwen
Proef-
deployment
Smoke test
Deployment
naar productie
60
61. 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
63. 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