Hoe kom je tot Continuous Deployment?

Joost

Geschreven door Joost Saanen op 25-2-2016
5 minuten leestijd

Een belangrijk aspect van de Agile methodiek is het snel kunnen leveren van bruikbare software in korte iteraties. Dit in tegenstelling tot de meer traditionele (waterval) ontwikkelmethoden waarbij er – voordat er überhaupt aan programmeren wordt begonnen – al veel voorwerk is gedaan zoals het bedenken van de architectuur/design en/of het maken van een planning. In dit soort projecten bestaat er het risico dat aan het einde van een traject een applicatie wordt opgeleverd die niet doet wat de klant of gebruiker verwacht. De Agile methodiek maakt het mogelijk om bij iedere iteratie een nieuwe release uit te brengen van de software die wordt gebouwd. De scope van een project is hier flexibel (= flexible scope) en het proces wordt zo ingeregeld dat er op vaste tijden een nieuwe release naar productie kan worden gebracht. Dit kan bijvoorbeeld op het eind van iedere sprint zijn, of zelfs meerdere keren per dag.

Om dit binnen een IT-organisatie voor elkaar te krijgen moet er wel het e.e.a. zijn ingeregeld. Zo moet de programmeercode van de software altijd in gezonde staat worden opgeslagen (verderop komen we hier nog op terug) en moeten developers de features waar ze aan werken zo opdelen, dat er op elk gewenst moment een release plaats kan vinden. Hier komt de werkwijze van “Continuous Integration” om de hoek kijken. De omgeving is hierbij zo ingericht dat alle geschreven programmeercode voortdurend (automatisch) wordt getest. Daarnaast kan er geen applicatie worden gereleased op een testomgeving wanneer er testen zijn die niet slagen. Continuous Integration is een voorwaarde om “Continuous Deployment” mogelijk te maken. Bij Continuous Deployment vindt het proces van automatisch deployen en releasing plaats.

Waarom Continuous Deployment?

Er zijn een aantal redenen waarom Continuous Deployment kan bijdragen aan de kwaliteit van maatwerksoftware:

Wat is er nodig om Continuous Deployment mogelijk te maken?

Voor het succesvol invoeren van “Continuous Deployment’ zijn er aantal criteria die je als IT-organisatie op orde moet hebben. We noemen de belangrijkste:

Infrastructuur

Er moet een infrastructuur zijn die het mogelijk maakt om de werkwijze van Continuous Deployment te volgen. De volgende onderdelen zijn hier belangrijk:

Cultuur van samenwerken

Naast de infrastructuur, is de cultuur binnen een organisatie ook een belangrijk onderdeel voor succesvol Continuous Deployment.

Test everything!

Testen is cruciaal voor het mogelijk maken van Continuous Deployment. Idealiter zou iedere developer in staat moeten zijn op ieder moment elk stukje code van de applicatie te kunnen testen. We hebben in een vorige blogpost al eens geschreven waarom het schrijven van testen zo belangrijk is. We maken hier onderscheid in de volgende soorten testen:

Zijn er nog meer zaken waar je rekening mee houden bij Continuous Deployment?

Onderstaande zaken horen niet echt thuis in het rijtje hierboven, maar zijn zeker de moeite waard om te benoemen:

Heb je zelf ervaring met Continuous Deployment? Deel je ervaringen in de comments en discussieer mee!

Joost

Joost Saanen

Gepassioneerde all-rounder met brede interesses; van serverbeheer en cloudhosting tot (UI)design en (web)development. Hardloopt en schrijft het liefst tegelijk.