Continuous Delivery
Continuous Delivery (CD) is een reeks van procedures dat is ontworpen om ervoor te zorgen dat code snel en veilig kan worden geïmplementeerd in productie-omgevingen.
Het is een principe dat gebruikt wordt om ideeën zo snel en efficiënt mogelijk in productie te krijgen. Het is vrijwel hetzelfde als Continuous Integration, alleen wordt hierbij de code op een productie-achtige omgeving geplaatst.
Omgevingen
Voor het testen van de applicatie zijn er verschillende omgevingen nodig. Wij werken volgens de OTAP straat:
- Ontwikkelomgeving
- Testomgeving
- Acceptatie-omgeving
- Productie-omgeving
Al onze omgevingen, behalve de ontwikkelomgeving, draaien in een data-center. Deze omgevingen hebben we nodig om verschillende releases (deployments) uit te voeren.
De ontwikkelomgeving is waar de ontwikkelaar de code schrijft. Hier wordt d.m.v. Test Driven Development (TDD) de geschreven code getest.
De testomgeving is een productie-achtige omgeving waarop de code automatisch uitvoerig getest wordt. De omgeving heeft exact dezelfde instellingen als de productie-omgeving, zodat de applicatie hetzelfde gedrag zou moeten vertonen als op productie.
De acceptatie-omgeving is ook een productie-achtige omgeving. Hierop kan de opdrachtgever de nieuwe opleveringen bekijken en accepteren voordat deze naar de productie-omgeving gaan.
De productie-omgeving is de omgeving waar de live-versie draait van de applicatie.
Zo ziet een data-center er van binnen uit.
Principes
Continuous Delivery wordt gehanteerd door verschillende principes toe te passen. Om C.D. in te voeren dient er niet alleen op technisch, maar ook op organisatorisch vlak geoptimaliseerd te worden.
De organisatie moet namelijk wel de continue implementatie kunnen bijbenen. Daarnaast dient het proces volledig betrouwbaar te zijn voor alle mensen die aan het project werken.
De principes om te hanteren zijn (bron):
- Automatiseer alles
- Foutieve taken vaker uitvoeren
- Live is pas echt klaar
- Inbouwen van kwaliteit
- Verbeter continu
- Het hele team verantwoordelijk
Automatiseer alles
Om continu te kunnen blijven leveren, moet er geautomatiseerd worden. Alles wat handmatig gedaan moet worden, kost tijd en is dus voor het bedrijf kostbaar. Er is geen ruimte voor handmatige stappen.
Foutieve taken vaker uitvoeren
Taken die vaak fout gaan dien je continu te blijven doortesten, zodat het sneller kan worden opgepakt indien het mis gaat. Ontwikkelaars kunnen feedback geven op de testresultaten en met elkaar het probleem beter verhelpen.
Live is pas echt klaar
De ontwikkelaar is pas echt klaar op het moment dat de nieuwe functionaliteit op productie staat en deze naar behoren werkt. Niemand heeft er wat aan als een nieuwe functionaliteit in de omgeving van de ontwikkelaar, de test- of acceptatie-omgeving staat. De nieuwe functionaliteit heeft namelijk pas waarde op het moment dat deze in gebruik wordt genomen op de productie-omgeving.
Inbouwen van kwaliteit
Door het inbouwen van kwaliteit, komen fouten minder snel voor op een productie-omgeving. Door Test Driven Development toe te passen en het continu testen van de geschreven code, blijft de kwaliteit beter gewaarborgd dan wanneer je dit niet zou doen.
Verbeter continu
Leg de lat elke keer hoger door de code te refactoren (=herschijven en verbeteren). Het proces zet je als ontwikkelaar in een oneindige feedback-loop, waardoor je continu je code aan het testen en verbeteren bent.
Het hele team is verantwoordelijk
Iedereen van het hele team is verantwoordelijk voor het product op de productie-omgeving. Dat zijn dus niet alleen de ontwikkelaar, maar ook de managers, testers, etc. Iedereen is pas klaar op het moment dat het product succesvol op productie staat. Daarmee dient het team zich te richten op het totale opleveringsproces.
Automatisering
Processen worden sneller uitgevoerd door een deel te automatiseren voor build-, test- en deploymenttaken. Concreet betekent dit:
- Versiebeheer: alle code, builds en configuraties komen onder een versie te hangen
- Builds automatiseren: door builds te automatiseren kun je als developer makkelijker deployen
- Tests automatiseren: dit gebeurt door middel van Test Driven Development en Continuous Integration
- Automatisch deployen: alle builds van de applicatie worden automatisch opgeleverd op een acceptatie-omgeving
Continuous Delivery software
Er zijn diverse software systemen op de markt waarmee je C.D. kunt gaan toepassen. Voorbeelden van Continuous Delivery software zijn:
Continuous Deployment
Naast Continuous Delivery hebben we ook Continuous Deployment. Dit gaat nog een stap verder en zal de nieuwe producten direct op productie opleveren. Hierover zal mijn volgende blogartikel gaan.