Continuous Delivery in de praktijk

Continuous-Delivery snel resultaatContinuous Delivery, business as usual? Dat zou het kunnen zijn, zeker als je het Agile gedachtegoed omarmt. Vraag jij je nog af hoe Continuous Delivery jouw organisatie kan helpen? Wij vertellen in dit artikel hoe de methode werkt, wat de principes en voordelen zijn. En, misschien nog interessanter, wat bij Covalent onze ervaring in de praktijk is.

Iedereen die zich bezig houdt met softwareontwikkeling weet dat er een tijdsintensief proces vooraf gaat aan het in productie zetten van nieuwe functionaliteiten. De software moet ontwikkeld, getest en geaccepteerd worden. Wij werken al jaren op basis van de Agile ontwikkelmethode Scrum, waardoor we sneller en beter kunnen ontwikkelen. Het heeft ons geholpen om nog beter te sturen op dat wat de klant wil. Desondanks verliep het in productie zetten van nieuwe functionaliteiten niet altijd vlekkeloos.

Test- en releasemanagement

Het uitrollen van functionaliteiten vraagt namelijk niet alleen kennis van de applicatie, maar ook van de infrastructuur waarop de applicatie draait. Het uitrollen van een functionaliteit is handwerk waarbij gemakkelijk fouten gemaakt kunnen worden. Het werk moet dus secuur uitgevoerd worden en is daardoor tijdrovend. Bovendien wordt testen vaak, denk aan de watervalmethode, aan het einde van het proces gepland. Hierdoor constateer je fouten in een laat stadium, waardoor het vinden van de oorzaak meer effort én tijd kost.

Idealiter zou het uitrollen van functionaliteiten geautomatiseerd zijn, waardoor het in productie zetten van software zonder problemen verloopt. En zou ook het testen geautomatiseerd zijn, waardoor elk stukje ontwikkeling direct getest wordt. Geautomatiseerd test- en releasemanagement dus. Precies daar biedt Continuous Delivery mogelijkheden voor.

Continuous Delivery

Continuous Delivery is een software ontwikkelmethode die er voor zorgt dat nieuwe ideeën zo snel en efficiënt mogelijk in productie gezet worden. Zie het als een aanvulling op Scrum. Scrum zorgt dat de kleine stukjes functionaliteit binnen een sprint opgeleverd kunnen worden. Met Continuous Delivery automatiseer je het proces waarmee de functionaliteiten over de OTA-straat (ontwikkel-test-acceptatie) navigeren. Denk aan het build-, test-, deployment- en releaseproces. Wijzigingen gaan hierdoor veel sneller naar de test- en productie omgeving.

Continuous-Delivery infrastructuur geautomatiseerd test- en releasemanagementPrincipes

Dat klinkt mooi. Maar het inrichten van Continuous Delivery gaat niet vanzelf. Ook bij ons niet. Om volgens de methode te gaan werken, moet je niet alleen op technisch vlak optimaliseren, maar ook op organisatorisch vlak. De organisatie moet de manier van werken wel kunnen bijhouden. Dat doen wij door te werken met Agileteams. Daarnaast gaat Continuous Delivery uit van een aantal principes. Integreer je deze principes in je werkwijze, dan creëer je de voorwaarden voor het werken met de methode.

  • Automatiseer alles
    Handwerk kost tijd en is foutgevoelig. Automatiseer daarom waar het kan de stappen in een opleverproces.
  • Als het pijn doet, doe het vaker
    Het proces richt zich erop een continue stroom van features naar productie te sturen. Door taken vaker uit te voeren, krijg je eerder feedback. Bijvoorbeeld over fouten.
  • Done is live
    Nieuwe functionaliteiten zijn pas van waarde als ze in productie staan. Een team is dus pas klaar als alle code in productie staat. En tot die tijd pak je geen nieuw werk op.
  • Bouw kwaliteit in
    Bouw effectieve kwaliteitscontroles in, zoals geautomatiseerde testen. Zo kunnen alle betrokkenen vertrouwen hebben in het eindproduct.
  • Voer continue verbeteringen door
    De continue stroom van functionaliteiten levert een continue stroom van feedback. Daardoor krijg je inzicht in waar verbeterpotentieel ligt.
  • Het hele team is verantwoordelijk
    Een team bestaat uit developers, testers, managers enz. Iedereen is evenredig verantwoordelijk voor het eindproduct en daarmee voor het totale leveringsproces.

continuous-delivery automatiseer alles

 

 

 

(klik op afbeelding voor meer details)

Voordelen

Eenmaal ingevoerd, brengt het werken volgens Continuous Delivery je belangrijke voordelen.

  • Hogere kwaliteit

Wat ons enorm aanspreekt, is de gedachte te “automatiseren waar het kan” in het build-, test-, deployment- en releaseproces. Zo worden processen niet alleen sneller, maar ook betrouwbaarder uitgevoerd. Dit maakt dat de kwaliteit van de software beter is. En dat is goed nieuws voor zowel de interne organisatie als voor de klant.

  • Voorspelbaar proces

Het proces is voorspelbaar en herhaalbaar, waardoor vooruitplannen mogelijk is. Een release plannen in het weekend of ’s nachts betekent niet meer automatisch dat je erbij moet zijn. Bijkomend voordeel is dat het proces onafhankelijk van de technische kennis van een persoon. Een uitrol kan door ons allemaal ingepland worden.

  • Reductie van fouten

Het automatiseren van processen scheelt handwerk. Daarmee elimineer je de  foutgevoeligheid van handwerk. Denk bijvoorbeeld aan het testen van nieuwe functionaliteiten. Het risico van handwerk is dat een tester kan denken “dit gaat altijd goed”. Na 10 keer dezelfde test, kan het gebeuren dat je dingen niet meer ziet. Een systeem gaat anders om met testen. Bovendien krijg je direct feedback, waardoor herstel in een vroeg stadium mogelijk is. Terugzoeken naar het ontstaan van fouten kost meer tijd dan direct inspringen. De reductie van fouten levert dus tijdwinst en geld op.

  • Zeer korte releasecylus

Er wordt een korte releasecylus aangehouden. Dat betekent snel resultaat en een korte “time-to- market”. Dat heeft ons inziens ook te maken met het rollforward-herstel van fouten. Fouten in een release worden direct gerepareerd en overgezet naar productie. Voorheen bracht het rollback- herstel de staat van de software terug naar een eerdere versie. Rollforward- herstel is constructiever en levert snel resultaat.

Continuous-Delivery snel resultaatRuimte voor verbetering

Is Continuous Delivery voor ons business as usual? Nog niet helemaal. Er is altijd ruimte voor verbetering. Zo is het bijvoorbeeld de bedoeling dat de tijd tussen ontwerpen en testen zo kort mogelijk is. In de praktijk starten wij gemiddeld om de 3 tot 6 weken een zogenaamde “build”, de samenvoeging van alle codes op de buildserver. Dat tijdspad willen we veel kleiner maken, door gebruik te maken van gated-checkin. Dit zorgt ervoor dat wanneer een ontwikkelaar software schrijft en incheckt, het direct door de buildserver getest wordt (automated tests). Als een test faalt, dan krijgt de programmeur dit binnen enkele minuten terug en wordt zijn code niet in de applicatie opgenomen. De dekkingsgraad van de automatische testen is hiervoor bepalend. We hebben nog net niet voldoende testen om de gated checkin aan te zetten, maar dat is “slechts” een kwestie van tijd.

Training

Nog een tip: start, als je met Continuous Delivery wilt gaan werken, met een gedegen training. Daar leer je onder meer hoe je het proces inricht met de tooling die jouw organisatie gebruikt. Wij volgden een training bij Prowareness. Een andere aanbieder is de Agile Academy.

Vincent van der Tol is Manager Software Ontwikkeling bij Covalent,  een adviesbureau en softwareproducent die organisaties ondersteunt bij het realiseren, beheren en onderhouden van infrastructuur en vastgoed en bij het professionaliseren van bedrijfsprocessen.

Waar vind ik toepasbare kennis en gedeelde ervaringen

Probeer het Pro-abonnement een maand gratis

En krijg toegang tot de kennisbank. 110 onderwerpen, kritisch, wars van hypes, interactief en geselecteerd op wat wél werkt.

Word een PRO