Skip to main content

Continue integratie en continue levering (CI/CD) vormen de zwaartekrachtvelden waar de moderne DevOps-workflow omheen draait. Organisaties die kosteneffectieve, relatief foutloze code met hoge snelheid willen bouwen, moeten CI/CD-pijplijnen omarmen als een essentiële architectuur van hun softwareleveringssysteem.

Voordat pijplijnen voor continue integratie en continue levering populair werden, werden codewijzigingen handmatig in productiesystemen geïntroduceerd via ad-hocworkflows, vaak zonder gestandaardiseerde tests. Gelukkig heb ik het overleefd om de huiveringwekkende verhalen te vertellen over het werken in softwaretestomgevingen waarin deze essentiële processen ontbraken.

Daarentegen heb ik uit de eerste hand gezien hoe CI/CD-tools en -processen een effectief raamwerk bieden voor het snel en betrouwbaar leveren van kwalitatief hoogwaardige software.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
By submitting you agree to receive occasional emails and acknowledge our Privacy Policy. You can unsubscribe at anytime.

Op basis van mijn werkervaring leg ik uit wat een CI/CD-pijplijn inhoudt, hoe deze werkt en waarom software-engineeringteams deze zowel praktisch als filosofisch hebben omarmd, samen met andere uitgangspunten zoals de Agile-testmethodologie.

Wat is een CI/CD-pijplijn?

Een CI/CD-pijplijn is een transparant, geautomatiseerd en betrouwbaar proces voor softwareontwikkeling en -levering. Een CI/CD-leveringspijplijn bestaat uit twee afzonderlijke componenten: continue integratie en continue levering, die een agile DevOps-workflow mogelijk maken.

Beide componenten zijn sterk afhankelijk van automatisering om fouten te beperken en software-engineering van hoge kwaliteit te garanderen door moeizame handmatige processen te elimineren. Fundamenteel gezien biedt een CI/CD-pijplijn dus een reeks stappen voor geautomatiseerde softwarelevering.

Het CI-gedeelte moedigt ontwikkelaars, programmeurs en software-engineers aan om software te bouwen door regelmatig code te schrijven en tests uit te voeren. Ze worden aangemoedigd om hun codewijzigingen en nieuwe functionaliteit regelmatig in kleine broncodebatches in een codebaserepository in te checken.

Het CD-gedeelte zorgt er daarentegen voor dat een softwareorganisatie altijd beschikt over een voor implementatie gereed softwareartefact dat al op kwaliteit is gecontroleerd en door veiligheidscontroles is gevalideerd.

De vier belangrijkste fasen van een CI/CD-pijplijn

Bronfase

Dit is het begin van de pijplijn. Deze wordt geactiveerd of gestart wanneer een ontwikkelaar een wijziging aanbrengt in een codebase. Meestal gebeurt dit wanneer een ontwikkelaar de opdracht git push of git merge uitvoert om broncode in de coderepository van een versiebeheersysteem in te dienen.

Get regular tech leadership wisdom for delivering better software and systems.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form

Bouwfase

De bouwfase is voor het grootste deel de compilatiefase. In op microservices gebaseerde containersystemen zoals Docker houdt dit in dat de broncode van het project en de afhankelijkheden ervan worden gebundeld in zelfstandige eenheden. Deze worden vervolgens gecompileerd om een uitvoerbare instantie van de softwaretoepassing te bouwen. Er moet echter worden opgemerkt dat de compilatiestap noodzakelijk is voor talen zoals Java en C++. Voor geïnterpreteerde talen zoals Python en JavaScript wordt compilatie daarentegen overgeslagen.

Wanneer een softwareartefact deze fase niet doorstaat, wijst dit vaak op fundamentele, onderliggende problemen zoals een slechte architecturale configuratie. Dit betekent onvermijdelijk dat de softwarearchitecten en -engineers terug naar de tekentafel moeten om het probleem aan te pakken.

Testfase

Zoals de naam al aangeeft, is dit de testfase van de pijplijn. Hier bewijst de ingebouwde automatisering van een CI/CD-pijplijn haar waarde door het team tijd en moeite te besparen. Verschillende tests, zoals rooktests, unittests en integratietests, worden geautomatiseerd en uitgevoerd om de geldigheid en logica van de toepassing te beoordelen.

Implementatiefase

In de implementatiefase wordt de geteste, uitvoerbare instantie van de toepassing vrijgegeven in de vereiste implementatieomgeving. Organisaties onderhouden doorgaans meerdere stagingomgevingen om verschillende redenen.

Alfaomgevingen zijn bijvoorbeeld bedoeld voor gebruikersacceptatietests om fouten in de toepassing te identificeren voordat deze wordt vrijgegeven aan productgebruikers. Bèta is een beperkte release voor enkele geselecteerde gebruikers; daarna is er de productieomgeving voor het grote publiek. De implementatiefase wordt gekenmerkt door de noodzaak om een aanvaardbaar niveau van kwaliteitsborging te handhaven.

Wat is continue integratie (CI)?

CI staat voor continue integratie, terwijl CD staat voor continue implementatie. Samen zorgen ze ervoor dat DevOps-teams beschikken over een duurzame methode om betrouwbare softwarereleases te genereren. Samen verkorten ze de tijdsduur tussen het bedenken, uitwerken en produceren van bruikbare software. 

Deze twee pijlers van de moderne softwareleveringspijplijn zijn echter geen twee kanten van dezelfde medaille, noch yin en yang van hetzelfde fenomeen.

Zowel continue integratie als continue levering zijn genuanceerd en voldoende verschillend om afzonderlijk en diepgaand te worden behandeld en gedefinieerd.

Waarom is CI nodig?

De rol van CI is het bieden van een gestroomlijnd, betrouwbaar en geautomatiseerd proces voor het schrijven, bouwen en testen van softwaretoepassingen. Als proces is CI gericht op het meerdere keren per dag bouwen, testen en samenvoegen van broncode in de codebase van een project.

Het CI-proces streeft ook naar een consistent niveau van softwareproductiviteit. Dit wordt bereikt door DevOps-praktijken te stimuleren die geautomatiseerd testen aanmoedigen en regelmatig nieuwe code samenvoegen in een centrale repository.

Ontwikkelaars produceren doorgaans regelmatig veel broncode, hetzij om nieuwe functionaliteit te bouwen, hetzij om bugs in bestaande functies te verhelpen. Programmeurs werken echter zelden op een eiland; ze werken in ontwikkelingsteams waarin samenwerking met andere programmeurs cruciaal is voor het succes van het project.

Daarom is het schadelijk voor de rest van het team om hun code langere tijd op hun lokale computers te laten staan. Integratie van nieuwe code op een te laat moment in de releasecyclus kan onder andere onbedoeld andere functionaliteit breken.

Tools voor continue integratie maximaliseren de praktijk waarbij ontwikkelaars worden aangemoedigd hun codewijzigingen samen te voegen in de gedeelde repository van het team. Bij voorkeur meerdere keren per dag.

Wat is continue levering (CD)?

Zoals ik hierboven al aangaf, volgt continue levering op continue integratie. Het omvat de processen en infrastructuur die de voorbereiding van codewijzigingen voor een release naar de productieomgeving ondersteunen. Het algemene doel van CD is ervoor te zorgen dat een organisatie altijd een gebouwd, getest, gevalideerd en voor implementatie gereed softwareartefact in de pipeline heeft.

De infrastructuur van CD voor provisioning en implementatie is gericht op het bieden van een snelle maar duurzame en foutloze pipeline voor het voorbereiden en uitbrengen van softwarebuilds naar productie. Ook wordt gestreefd naar een verkorting van de tijd die nodig is om veiligheidscontroles uit te voeren en softwareartefacten te implementeren.

Waarom CD?

Net als continue integratie zijn CD-tools sterk afhankelijk van automatisering en geautomatiseerde tests om de integriteit van een softwarebuild te valideren voordat deze wordt geïmplementeerd. Het proces stelt software-engineeringteams ook in staat een kwaliteitsnorm voor hun code vast te stellen voordat deze naar productie gaat.

Hoewel continue levering een geautomatiseerd proces is, is handmatige interventie in deze fase van de pipeline nog steeds noodzakelijk.

Verschil tussen continue levering en continue implementatie

Continue levering en continue implementatie hebben hetzelfde doel, maar verschillen aanzienlijk in de uitvoering.

  • Continue implementatie: Elke codewijziging die in de codebase wordt samengevoegd, wordt automatisch naar productie geïmplementeerd. Er is geen goedkeuringsmechanisme of handmatig proces dat als voorzorgsmaatregel fungeert. Het is een volledig geautomatiseerd proces voor de daadwerkelijke implementatie.
  • Continue levering is een gedeeltelijk handmatig proces, maar het maakt de release-implementatie veel waarschijnlijker, veiliger en duurzamer.

Waarom is een CI/CD-pipeline belangrijk in DevOps?

wat is een devops-infographic
De DevOps-levenscyclus is een iteratief proces

Een historisch perspectief is nodig om de noodzaak en ontwikkeling van de hedendaagse methoden voor softwarelevering te begrijpen. Tijdens de eerste fasen van de ontwikkeling van softwaretoepassingen was het watervalmodel populair.

Dit eenvoudige model pakte een softwareproject aan door het op te delen in opeenvolgende, lineaire fasen. Het volgde een rigide methodologie die het overlappen van fasen niet toestond: de ene fase moest zijn voltooid voordat de volgende kon beginnen. Bovendien was elke fase afhankelijk van de resultaten van de voorgaande fase.

Daarom vereiste het algemene model een bepaalde taakverdeling om te kunnen werken. Deze specialisatie dwong software-engineering- en testteams echter om in afzonderlijke silo's te werken, waarbij ontwikkelaars, testers en engineers voor sitebetrouwbaarheid vaak geïsoleerd werkten.

Het watervalmodel

Het watervalmodel was ideaal voor een tijdperk waarin softwarebedrijven producten aan consumenten leverden op cd's in dozen, met publiekelijk aangekondigde releasedatums. Dit model is echter ongeschikt voor het moderne tijdperk, waarin codeproductie met hoge snelheid centraal staat. Dit geldt vooral voor cloud computing en de alomtegenwoordige modellen voor software als dienst (SaaS), die de verwachtingen van eindgebruikers voor continue softwareverbetering en voortdurende implementatie van functies hebben verhoogd.

Om talloze redenen is het watervalmodel ontoereikend gebleken.

Naast best practices zoals de agile methodologie integreren moderne DevOps-teams CI/CD-pipelines om software van hoge kwaliteit die grondig is getest, met hoge snelheid en op duurzame wijze te leveren.

Via DevOps biedt CI/CD een praktische manier om de silo's tussen programmeurs, operationele teams en andere deelnemers aan het softwareontwikkelings- en leveringsproces te overbruggen.

De principes van CI/CD verminderen risico's en onzekerheid, vooral bij complexe projecten die wendbaar genoeg moeten zijn om regelmatig veranderende vereisten te accommoderen.

De voordelen van het implementeren van een CI/CD-pipeline

Sommige voordelen van een CI/CD-pipeline zijn overduidelijk, zoals ingebouwde automatisering die foutgevoelige handmatige processen drastisch vermindert. Hier zijn nog enkele andere voordelen van CI/CD-pipelines:

  • Implementatieactiviteiten met zo weinig mogelijk wrijving uitvoeren. Een CI/CD-pipeline biedt IT-beheerders een relatief eenvoudig te gebruiken, simpel proces dat de complexiteit van het bouwen en implementeren van applicaties vermindert. Dit vereenvoudigde proces wordt sterk ondersteund door de ingebouwde automatiseringsfunctionaliteit van CI/CD.
  • De snelheid van activiteiten verbeteren. Snellere productiteratie is mogelijk dankzij automatisering en snellere feedbacklussen. Automatisering voorziet DevOps-technici van onmiddellijke informatie over de levensvatbaarheid van een build. De kleinere CI-integraties en kleinere CD-implementaties verbeteren DevOps-statistieken zoals de gemiddelde tijd tot oplossing (MTTR). MTTR meet de gemiddelde tijd die nodig is om defecte functies en bugs te herstellen, inclusief het diagnosticeren van onderliggende problemen.
  • De productiviteit verhogen. Het belangrijkste principe van continue integratie is ontwikkelaars aanmoedigen om hun code regelmatig samen te voegen met de hoofdbranch van hun organisatie. Hierdoor is de kans groter dat alle leden van het DevOps-team over de meest recente werkende code beschikken. Dit verhoogt de productiviteit en samenwerking bij softwareprojecten en verbetert de algehele tijd tot marktintroductie.
  • De releasecyclus verkorten, samen met de mogelijkheid om software op aanvraag uit te brengen. CI/CD-pipelines helpen organisaties de snelheid van softwarelevering te verhogen om sneller op de markt te kunnen reageren, terwijl hun softwarearsenaal voortdurend in een uitbrengbare staat blijft.
  • De mogelijkheid hebben om functie-implementaties te prioriteren. De CI/CD-infrastructuur maakt het mogelijk voor site-ingenieurs om de nadruk te leggen op functies die onmiddellijk moeten worden geïmplementeerd of voorrang moeten krijgen boven andere functies.
  • Bugs sneller ontdekken en problemen sneller patchen. Omdat codewijzigingen vaker worden geïntegreerd, maakt CI het eenvoudiger om bugs, fouten en andere incompatibiliteiten veel eerder in het softwareontwikkelingsproces te detecteren en te verhelpen.
  • Storingen verminderen en risico's beperken. CI/CD biedt gedurende de ontwikkelingslevenscyclus en de implementatiefasen verschillende beschermingslagen en waarborgen. De ingebouwde automatisering en geautomatiseerde tests stimuleren continu testen met procedures zoals unit-tests, integratietests en regressietests.
  • De kwaliteitscontrole verbeteren en mogelijkheden voor menselijke fouten minimaliseren. Automatisering neemt de behoefte aan foutgevoelige menselijke tussenkomst weg. CI start telkens een nieuwe build wanneer codewijzigingen worden samengevoegd in de centrale repository. Dit introduceert een zekere mate van kwaliteitscontrole en kwaliteitsborging in het systeem.
  • Experimenteren en innovatie aanmoedigen. De DevOps-mentaliteit waarbij kleine stukjes code worden geïntroduceerd, stimuleert innovatie. Teams krijgen meer ruimte om te experimenteren en te innoveren.
  • Betrouwbare releases creëren. Het implementeren van frequente, maar kleine softwarebatches brengt minder risico met zich mee. De kleinere implementatieomvang is eenvoudiger te beheren en maakt het gemakkelijker om vast te stellen of er bugs in het systeem zijn geïntroduceerd.

Slotgedachten

Key Takeaways

Gravitationele DevOps: Continue integratie (CI) en continue levering (CD) vormen de kern van moderne DevOps en zijn essentieel voor snelle, kosteneffectieve softwarelevering met weinig bugs.

Van chaos naar orde: De overstap van ad-hoc, handmatige introducties van codewijzigingen naar gestandaardiseerde, geautomatiseerde CI/CD-pijplijnen heeft de betrouwbaarheid en snelheid van softwareontwikkeling ingrijpend verbeterd.

Het geautomatiseerde pad: CI/CD-pijplijnen automatiseren softwarelevering, van codewijzigingen in kleine batches en geautomatiseerd testen tot het waarborgen van een product dat klaar is voor implementatie. Hierdoor worden fouten verminderd en de efficiëntie verhoogd.

Fasen van succes: De CI/CD-pijplijn bestaat uit fasen zoals broncode (het starten van codewijzigingen), bouwen (compileren en voorbereiden), testen (logica en functionaliteit valideren) en implementeren (uitbrengen in omgevingen).

Integratie ontmoet implementatie: Continue integratie (CI) en continue implementatie (CD) bieden samen een productief raamwerk voor DevOps-teams, waardoor de cyclus van softwareconceptie tot productie wordt verkort.

CI/CD-pipelines zijn een essentiële functie voor moderne softwareontwikkeling en helpen bij het produceren van hoogwaardige softwareproducten in een snel veranderende software-industrie. 

Als je meer wilt leren over hedendaagse, baanbrekende ontwikkelingen in de technologiesector, abonneer je dan op de nieuwsbrief van The QA Lead.