in Gelezen

Jez Humble, David Farley: Continuous Delivery

Reliable software releases through build, test and deployment automation

Software moet zo vaak mogelijk gereleased worden, waarbij bij voorkeur bijna alle stappen van builds, testen en deployment automatisch gaan.

Als het geautomatiseerd wordt is het controleerbaar, herhaalbaar, sneller, niet gevoelig voor menselijke fouten. Dat is wat Humble en Farley toelichten in hun bijbel voor het moderne softwareontwikkelingsproces: Continuous Delivery. Vervolgens lichten ze in zo’n 450 pagina’s toe hoe dat in zijn werk gaat. Ondanks de taaie stof en soms technische insteek een pageturner..

Het boek start heel sterk met “antipatterns”; een beschrijving van patronen waaraan je kunt herkennen dat het niet goed gaat met het ontwikkelproces en de deployment van je software. Pijnlijk herkenbaar in sommige gevallen: na maanden van ontwikkeling wordt iets voor het eerst in een “productie-achtige” omgeving gezet, waar totaal verschillende versies van operating systems, databases, patch levels en dergelijke worden gebruikt, waarna je een hysterische uitwisseling krijgt tussen ontwikkel en beheerteams, want “morgen moet het live”. Iedere keer weer heb je slapeloze nachten bij een nieuwe release, en als er een fout ontdekt wordt in je software kost het dagen voor je ontdekt hebt waar het zit. Dat kan ook anders..

Wat als je bijna iedere functionaliteit die je bouwt meteen afrondt en in productie kan nemen? Dat je zelfs meerdere malen per dag een deployment kan doen in enkele seconden of minuten, dat je vrijwel zeker bent dat het goed gaat en als er toch iets mis is, dat je dat ook in enkele seconden of minuten weer terug kan draaien? Dan heb je je continuous delivery op orde..

Principes van software delivery
– create a repeatable, reliable process for releasing software: zorg dat je je hele proces van ontwikkelomgeving, testomgeving, regressie-omgeving, integratie-omgeving, performancetestomgeving, securitytestomgeving, gebruikerstestomgeving, acceptatie-omgeving, productie-omgeving en wat je nog meer nodig hebt uitgewerkt hebt en op dezelfde manier behandeld
– automate almost everything: zorg dat je zoveel mogelijk automatiseert: van je unittesten, interfacetesten, je builds, je deployment, alles; er is bijna geen reden meer te verzinnen om iets niet te automatiseren.
– keep everything in version control: zorg dat je alles zodanig in versiecontrole hebt, dat je moeiteloos een complete build kan reproduceren of terug kan gaan naar een probleemloze situatie als er iets mis is.
– if it hurts, do it more frequently, and bring the pain forward: de dingen die pijn doen in een ontwikkelproces: een build maken, deployment near andere omgevingen, integratietesten, most je zo vaak mogelijk doen en zo vroeg mogelijk in het proces, zodat het herhaalbaar, controleerbaar en uiteindelijk pijnloos wordt.
– build quality in: meet vanaf het begin voortdurend je kwaliteit en geef kwaliteitsproblemen absolute voorrang in je proces
– done means released: jets is pas af als het in een productie-omgeving staat. Maak je user stories zo klein mogelijk en maak ze meteen helemaal af, zodat ze zo snel mogelijk voor de gebruiker iets opleveren.
– everybody is responsible for the delivery process: iedereen is verantwoordelijk voor het proces om iets in productie te krijgen, dus niet alleen je beheerteam, niet alleen je testers, maar iedereen; best opgelost door multidisciplinaire teams in te richten
– continuous improvement: verbeter continu je proces.

Veel zaken in het boek worden voor mij iets te specialistisch: versie controle, branching en meeging, maar in grote lijnen is het goed te volgen en sluiten alle details aan bij de filosofie van de auteurs. En die filosofie is echt om te smullen, niet alleen voor de techneuten maar ook voor iedereen die geïnteresseerd is in de kracht van teamwerk en de mechanismen die daarin voorkomen.

Een absolute must als je iets met software ontwikkeling of beheer doet. Bij het Landelijk Register Kinderopvang passen we deze werkwijze bijna in zijn geheel toe; dus kom gerust eens langs als je het in de praktijk wil zien!

Jez Humble’s blog over Continuous Delivery: http://continuousdelivery.com/
David Farley’s blog: http://www.davefarley.net/
Boek op Amazon: http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912

Write a Comment

Comment