CI/CD voor snelheid, kwaliteit en tevredenheid
CI/CD staat voor Continuous Integration (CI) en Continuous Deployment (CD). Het is een werkmethode, een manier om doorlopend aan code te werken en deze op te leveren.
Als wij bij Four Digits een werkzaamheid aan een project uitvoeren, doorlopen we vaste stappen. Deze stappen zijn soms mensenwerk, maar dit proberen we ook zoveel mogelijk te automatiseren. Dit is de CI/CD-pipeline, de ruggengraat van softwareontwikkeling.
CI/CD zorgt voor snelheid van levering, vermindering van fouten en de mogelijkheid om snel te reageren op klantbehoeften.
Jip en Janneke hebben een merge conflict
Bij Four Digits werken we vaak met meerdere mensen tegelijkertijd aan hetzelfde project. Dat kan tot problemen leiden...
Jip en Janneke werken aan één project. Ze nemen beide een kopie van de broncode en werken hier lange tijd aan. Jip maakt het een, Janneke maakt iets anders.
Als Jip en Janneke dezelfde code wijzigen, ontstaan er problemen bij het samenvoegen. Wat is de nieuwe waarheid? Is Jips code juist? Of moet die van Janneke gebruikt worden?
Dit heet een merge conflict. Jip en Janneke moeten nu extra werkzaamheden verrichten om ervoor te zorgen dat het werk van beiden behouden blijft.
Continuous Integration
Continuous Integration is het proces van de uitgevoerde werkzaamheden samengevoegd krijgen in de bron. Continuous Deployment omvat alle stappen voor het live zetten van deze wijzigingen.
De eerste stappen in CI zijn:
- Jip biedt zijn werk aan via een merge request.
- Automatische tests draaien op de aangeboden code.
- Janneke beoordeelt de code en voegt samen.
- Automatische tests draaien op de samengevoegde code.
Na de eerste stapjes zijn er ook functionele beoordelingen door een projectmanager en uiteindelijk de acceptatie door de klant.
Automatische tests borgen de kwaliteit van de code. Ze garanderen dat de gemaakte wijziging niet per ongeluk iets stuk maakt. Daarbij bewijzen nieuwe tests dat de toegevoegde functionaliteit werkt zoals verwacht. Dit geeft vertrouwen bij het live zetten van nieuwe werkzaamheden.
CI helpt ook bij het verminderen van integratieproblemen. Door het werken in kleine stappen en regelmatig samenvoegen van code zorgen we ervoor dat fouten vroegtijdig worden gevonden en opgelost, nog voordat ze een probleem worden.
Jip en Janneke werken samen: ze werken in kleine stapjes, ontdekken fouten vroeg en rollen hun code zo vaak mogelijk uit naar de live-omgeving.
Continuous deployment
Nadat de code is samengevoegd en de automatische tests zijn geslaagd, wordt de testomgeving volledig automatisch bijgewerkt.
Het uitrollen naar test-, acceptatie- en uiteindelijk productie-omgeving (de live website) heet continuous deployment. Het automatiseren van deployment zorgt ervoor dat het proces betrouwbaar en snel is.
Het live zetten van code bestaat uit een aantal handelingen die keer op keer uitgevoerd moeten worden. Mensen zijn niet zo goed in dit soort taken. Bij mensenwerk is er een grotere kans op fouten. Keer op keer deze stappen doorlopen kost tijd en is saai. Terwijl de computer deze stappen onvermoeid, snel en foutloos voor ons doet.
Kleine wijzigingen, snel en vaak
De voordelen van CI/CD zijn dat er een doorlopend proces is waarbij werkzaamheden direct worden opgeleverd wanneer ze klaar zijn. Hierdoor krijgt de klant sneller wat zij vraagt.
Risico's zijn lager, want als werkzaamheden klein van omvang zijn, wordt een fout eerder opgemerkt. Door snelle ontwikkeling en snel live zetten kan een eventuele fout ook snel hersteld worden.
Wellicht klinkt dit allemaal omslachtig en lijkt het opzetten van CI/CD veel te veel werk?
Voor developers, projectmanagers en klanten werkt CI/CD goed omdat we snel feedback krijgen, kunnen ze efficiënt werken en snel waarde leveren.
Efficiëntie
Het loont om het CI/CD-proces te optimaliseren, want het is de ruggengraat van softwareontwikkeling. We werken aan veel projecten, die allemaal hetzelfde zijn ingericht. Kleine verbeteringen worden vaak uitgevoerd en kunnen daarom ook veel opleveren.
Bijvoorbeeld het parallel uitvoeren van geautomatiseerde tests kan zorgen voor grote tijdswinst, wat eerder feedback oplevert waardoor er eerder verder gewerkt kan worden.
Maar het gaat niet alleen om techniek of computerkracht. Een goed lopend proces is ook afhankelijk van samenwerking. Bijvoorbeeld, als de klant akkoord geeft, wat zijn dan de exacte stappen om een site live te krijgen? En wat kunnen we doen om deze doorlooptijd te minimaliseren?
Toekomst
Techniek ontwikkelt zich razendsnel en ik verwacht daarom ook dat onze CI/CD-pipeline constant in ontwikkeling zal blijven. De technische kant is uitdagend en interessant. Maar ik ben ook erg benieuwd naar de verbeteringen die wij kunnen bedenken op organisatorisch vlak.
Hoe werken we efficiënter samen? Hoe kunnen we de CI/CD-pipeline nog meer voor ons laten werken? Hoe leveren we het snelste de werkzaamheden op aan de klant?
Four Digits streeft voortdurend naar verbetering van onze werkwijze en CI/CD is daar een belangrijke bouwsteen in. Laten we samenwerken aan deze processen zodat ze niet alleen efficiënter zijn, maar ook meer voldoening en succes brengen, zowel voor ons team als voor onze klanten.