Software Delivery

Continuous Delivery is het proces waarmee organisaties complexe systemen kunnen beheren en zich richten op het creëren van waarde voor klanten. Door gedisciplineerd dit proces toe te passen verlaag je het risico van softwareontwikkeling en van opleveringen.

“Continuous Delivery heeft als doel het verlagen van kosten, ontwikkeltijd en risico bij het opleveren van incrementele wijzigingen aan de software naar de gebruikers” — Jez Humble (Auteur: ‘Continuous Delivery’)

Hoewel dit erg leuk klinkt, wat betekent dit dan? Is er een probleem dat opgelost moet worden met Continuous Delivery? Eigenlijk zijn er 2 problemen die dringend moeten worden opgelost: 1) De verkeerde dingen bouwen en 2) Te laat zijn om waarde te leveren.

Hieronder ziet u hoe een traditioneel software wordt opgeleverd en hoe vaak (geel): Het team levert grote monolithische releases en ontdek dat het een stressvolle bedoeling is. Echter na de eerste grote oplevering en de negatieve ervaringen herhalen ze dit process (grote batches). Wat Continuous Delivery voorstelt (in groen) is het tegenovergestelde: investeren en reorganiseren om een constante stroom kleine wijzigingen op te leveren naar productie.

Continuous Delivery heeft veel aspecten: cultureel, organisatorisch en technisch. Als u zich in teams organiseert en de teams indeelt langs de lijnen van de organisatie (business alignment) ziet u het snelst resultaten. Dit is ook een van de grotere veranderingen (de andere is cultuur). Typisch is een organisatie gestructureerd in teams die mensen bevatten met gelijke competenties: Devs bij Devs, Ops bij Ops enz. Het volgende diagram geeft een overzicht van een typische manier van werken in “Agile” -organisaties:

Agile teams ontwikkelen en testen software en geven het vervolgens door aan de rest van de organisatie. De software ligt daar vaak op de plank voordat het in productie gaat. Traditioneel zijn dit gescheiden werelden waarbij dev-teams worden beheerd op het aantal opgeloste bugs en geïmplementeerde functies, terwijl Ops wordt beheerd op uptime.

Het transformeren van deze bestaande organisatie in een organisatie die in staat is om hoogfrequent veranderingen in  productie aan te brengen is een grote maar noodzakelijke uitdaging. Essentieel is het proces van vroege feedback. Zorg ervoor dat de multifunctionele teams samenwerken en verantwoordelijk zijn voor hun deel van de productieomgeving. Zoals de CTO van amazon.com beroemde zei: “als je het bouwt, is het jouw verantwoordelijkheid” – Werner Vogels (‘You build it, you run it’)

De organisatie en aspecten van software delivery werken als volgt samen:

Om deze verandering mogelijk te maken naar een andere organisatie moeten we drie pijlers van Continuous Delivery langslopen en gebruiken als stappenplan voor implementatie

Hier zijn de drie pijlers met onderwerpen:

Continuous Integration

  • Geen Oude/Langlevende Branches in versiebeheer
  • Buildservers om alle wijzigingen te bouwen en controleren
  • Builds van software in scripts
  • Geautomatiseerde labels (tags) & trigger van builds
  • Geautomatiseerde unittests

Test Automatisering

  • Geautomatiseerde integratie tests
  • Geïsoleerde and geautomatiseerde component tests
  • Geautomatiseerde regressie tests
  • Geautomatiseerde performance / capaciteits tests
  • Exploratory tests

Infrastructure Automation

  • Zero downtime deploys
  • All infrastructuur opbouwen uit code
  • Gestandaardiseerde omgevingen
  • Continue tests in productie

Conclusie

In essentie levert Continuous Delivery een wetenschappelijke methode die experimenten combineert met leren. Continuous Delivery combineert dit met het lean mantra van “kleinere batchgroottes”. Deze combinatie zorgt voor een extreem krachtig en stabiel software platform om dagelijks waarde toe te voegen, te leren en te experimenteren. Door dit in de gehele organisatie te implementeren, is een organisatie echt wendbaarder, in staat sneller te reageren op de wensen van de klant en tegelijkertijd de kwaliteit te leveren die is afgesproken.

Meer lezen?

Hieronder links naar artikelen en blogsposts over Continous Delivery