Een CI/CD pipeline brengt grote voordelen met zich mee voor webagencies. Maar dit realiseer je niet over één nacht ijs, er komt behoorlijk wat kijken bij een implementatie. Wil jij ook aan de slag met een CI/CD pipeline implementatie? Dan is het van belang dat je goed voorbereid bent. En, ook niet geheel onbelangrijk, dat jij en je team er ook daadwerkelijk klaar voor zijn.
Ben jij (of heb jij) een development team dat (meerdere) websites en/of applicaties ontwikkelt en beheert? Lees dan waarom CI/CD interessant is, wat het beste moment is om te starten en welke stappen leiden tot een succesvolle implementatie.
Voor wie is het implementeren van een CI/CD pipeline interessant
Werk jij met meerdere mensen aan meerdere projecten? Dan heb je baat bij een duidelijk en goed proces. En dat is precies waarom het werken met een CI/CD pipeline zo populair is onder agencies. Sterker nog… eenmaal overstag, kunnen ze niet meer zonder!
Wanneer start je met CI/CI?
Wanneer je start met het inrichten van een CI/CD pipeline bepaal je helemaal zelf. Het is nooit te vroeg of te laat. Zelfs voor kleine (startende) agencies heeft het direct een toegevoegde waarde.
Het vroegtijdig implementeren op het moment dat er (nog) niet zoveel verschillende projecten lopen kan zelfs in je voordeel werken. Een CI/CD pipeline fungeert namelijk als een fundamenteel proces. Je kan je voorstellen dat je dit fundament makkelijker legt wanneer het ‘huis’ nog enigszins in aanbouw is, dan wanneer er al een volledige én bewoonde villa staat. De impact op de dagelijkse praktijk is dan veel groter.
Met het vroegtijdig implementeren van een CI/CD pipeline zet je dus een sterke en stabiele basis neer waar je veilig en gestructureerd op verder bouwt.
Er wordt nog te vaak gedacht dat een website na livegang ‘klaar’ is. Maar het is zo belangrijk om te blijven zorgen voor goed onderhoud. Wij benadrukken bij onze klanten daarom veelvuldig het belang van periodiek pentesten en het uitvoeren van security scans. Dit is de enige manier om te controleren of de website of applicatie écht nog voldoende beveiligd is. Daarnaast ook om nieuwe bedreigingen, lekken en slimmer wordende hackers een stap voor te blijven.
Kevin Bentlage
CTO bij Cobytes
De stappen naar een succesvolle CI/CD implementatie
1. Inventarisatie
Start altijd met een grondige inventarisatie. De inventarisatie geeft je inzicht in de huidige situatie, de gewenste situatie en wat er nodig is om daar te komen. Dit vormt de basis voor het succesvol starten van een implementatietraject.
Beantwoord voor jezelf de volgende vragen:
- Waar staan we op dit moment, hoe ziet ons huidige proces eruit?
- Wat typeert onze projecten en welke processtappen horen daarbij?
- Welke software en tools hebben we (minimaal) nodig ter ondersteuning van de CI/CD pipeline?
- Welke vorm van hosting hebben we hiervoor nodig en kan onze huidige hostingpartij hier voldoende in ondersteunen?
- Wie moeten we betrekken bij de implementatie?
Vanuit de inventarisatie volgt een plan. Dit is de blauwdruk voor het proces wat je hierna inricht. Zorg dat je hierin duidelijke en scherpe keuzes maakt. Een efficiënte CI/CD pipeline vraagt namelijk om een efficiënt applicatielandschap.
Meer tools en systemen betekent niet automatisch meer gemak of snelheid. Het tegendeel is vaak zelfs waar: het maakt de implementatie én het beheer van de CI/CD pipeline vaak onnodig gecompliceerd. Maak daarom duidelijke keuzes, uitbreiden kan immers altijd nog.
2. Versiebeheer van de code
Een version control system (VCS) is cruciaal voor een CI/CD werkwijze. Een VCS is een tool voor versiebeheer van de code. Een veelgebruikte tool is GIT.
De tool helpt ontwikkelaars onder andere bij:
- Het beheren van wijzigingen in de broncode van een project
- Het bijhouden van de verschillende versies
- Het samenwerken met andere teamleden.
Ontwikkelen zonder zo’n tool kent veel nadelen, zowel voor jou als agency als voor de eindklant. Een aantal van de grootste nadelen en risico’s zijn:
- Conflicten bij samenwerking: Zonder versiebeheertool ontstaan problemen bij samenwerking doordat het integreren van wijzigingen van verschillende teamleden lastig wordt. Efficiënt samenwerken wordt vrijwel onmogelijk omdat er geen gestandaardiseerde manier is om wijzigingen voor te stellen, te beoordelen en te integreren.
- Verlies van versiegeschiedenis: Zonder versiebeheer is er geen gestructureerde manier om de wijzigingen in de code bij te houden. Dit maakt het moeilijk om te achterhalen wie welke wijzigingen heeft aangebracht en onmogelijk om terug te keren naar vorige versies van de code. Ook bestaat het risico dat belangrijke code per ongeluk wordt overschreven of verwijderd. Er is dan geen mogelijkheid om verloren code terug te halen.
- Minder flexibiliteit bij uitrollen van updates: Snel en veilig updates uitrollen is telkens weer een serieuze uitdaging, aangezien er geen gecontroleerde manier is om de wijzigingen in de productieomgeving door te voeren.
We zijn nu ook schaalbaar doordat we geautomatiseerd uitrollen, waarmee we sneller een nieuwe omgeving neer kunnen zetten. Doordat het team met versiebeheer werkt, snappen ze van elkaar wat ze aan het doen zijn, waardoor ze makkelijker samenwerken.
Paul Homan
CTO bij Unframed
Een VCS wordt vaak als een hygiënefactor voor agencies gezien. Eindklanten gaan ervan uit dat dit onderdeel is van de werkwijze. Twijfel je over de juiste tool voor versiebeheer of hoe hier het beste mee kan starten? Raadpleeg dan altijd een specialist voor advies. Jouw hostingprovider kan je hier over het algemeen goed bij helpen.
3. Beheer van externe tools met een package manager
Binnen development teams worden verschillende tools gebruikt voor onder andere programmeertalen en frameworks. Een optimale CI/CD pipeline vraagt om uniformiteit in de versies van alle gebruikte tools.
De derde stap in het implementatieproces is daarom het inzetten en configureren van een zogeheten ‘package manager’. Hierin worden alle externe tools beheerd, zoals bijvoorbeeld Laravel of Symfony. De package manager zorgt ervoor dat de tools tijdig en vanaf een centrale plek worden geüpdatet, zodat iedereen altijd met dezelfde versies werkt.
De package manager speelt ook een belangrijke rol in het totale proces. Het zorgt namelijk voor het verminderen van een aantal risico’s zoals handmatige configuratiefouten, problemen bij het overbrengen van code tussen verschillende ontwikkelingsfasen of omgevingen of zelfs beveiligingsrisico’s door het ontbreken van geautomatiseerde controles.
Het is goed om je te realiseren dat het ontbreken van automatisering door een package manager ten koste van de efficiëntie van de CI/CD pipeline gaat. De reden hiervoor? Installatie en beheer moeten in dat geval handmatig worden uitgevoerd.
Kortom, maak je nog geen gebruik van een dergelijke tool, dan is het zeker aan te raden je hier in te verdiepen.
4. Een gestandaardiseerde basis
De volgende stap is zorgen voor een gestandaardiseerde basis voor het bouwen van websites en applicaties. Dit betekent dat de basis die je gebruikt om een website of applicatie te bouwen overal hetzelfde is. Denk bijvoorbeeld aan een gestandaardiseerde CMS-installatie of DNS-registratie.
Een gestandaardiseerde basis heeft verschillende voordelen. De belangrijkste winst die hiermee wordt behaald is dat het de kans op fouten aanzienlijk vermindert en het de snelheid en schaalbaarheid bevordert.
Tegenwoordig kunnen we gewoon een script oproepen. Dan wordt de website automatisch geïnstalleerd en staat alles direct op de juiste plek. Dat betekent dat het opzetten van een basiswebsite zoals wij die installeren ons per project al 10 tot 20 uur werk bespaart. Een wereld van verschil!
Paul Homan
CTO bij Unframed
Ook dit onderdeel is essentieel in een CI/CD pipeline. Zonder deze basis mis je consistentie. En dit maakt het neerzetten van een efficiënt en geautomatiseerd proces vrijwel onmogelijk.
Werk je op dit moment nog niet met een gestandaardiseerde basis? Dan is het wellicht verstandig dit eerst als een project op te pakken voor je verder gaat met een de CI/CD pipeline.
5. Werken met containers
Het werken met containers is cruciaal voor het voorkomen van compatibiliteitsproblemen. Want wanneer verschillende developers met verschillende besturingssystemen werken, kan dit zorgen voor afwijkend gedrag in de tools die gebruikt worden en applicaties die ontwikkeld worden.
Een risico is bijvoorbeeld dat een applicatie in de ontwikkelingsfase goed werkt, maar tegen onverwachte problemen aanloopt bij implementatie in de productieomgeving. Dit is dus een vervelende stoorzender in de weg naar optimale efficiëntie en schaalbaarheid die je wil bereiken met CI/CD.
Door te werken met containers zorg je ervoor dat er als het ware een extra laag bovenop het gebruikersspecifieke besturingssysteem wordt gelegd. In essentie bieden containers een gestandaardiseerde manier om applicaties te verpakken. Zo kun je de container gemakkelijk verplaatsen naar verschillende servers en ben je gegarandeerd van een consistent werkende applicatie. Een veelgebruikte tool hiervoor is Docker.
Werk je op dit moment nog niet met containers, dan is het aan te raden je hierin te verdiepen en te bepalen welke tool eventueel het beste aansluit bij jouw wensen.
6. Zorgen voor duidelijke workflow
Wat is vaak de grootste uitdaging als het gaat om het managen van grote projecten met verschillende stakeholders? Over het algemeen is dat de onderlinge samenwerking en het waarborgen van een gestroomlijnd proces. Je wil dat alle neuzen dezelfde kant opstaan, dat iedereen snapt wat er gebeurt en wat wordt verwacht. Kortom, dit vraagt om een duidelijke en logische workflow.
Het inrichten van zo’n workflow gebeurt vaak op basis van Scrum of Agile. Er wordt gewerkt in zogeheten ‘sprints’ waarbij binnen een afgebakend tijdvlak een afgesproken hoeveelheid werk wordt opgeleverd.
Het voordeel van het opknippen van het werk in sprints, is dat je veel productiever bent met de tijd die je hebt.
Het overstappen naar een nieuwe uniforme werkwijze is vaak één van de grootste uitdagingen tijdens de implementatie. Want dit betekent het loslaten van de bekende en vertrouwde werkwijze. Toch is het enorm belangrijk hier de nodige tijd en aandacht aan te schenken. Wij ondersteunen en adviseren onze klanten hier ook in.
Kevin Bentlage
CTO bij Cobytes
Het werken met sprints is geen harde vereiste voor een CI/CD pipeline, maar absoluut wel aan te raden.
Werk je op dit moment nog niet met Scrum of Agile en wil je er wel (laagdrempelig) mee starten? Start dan met het bepalen van het doel, het vaststellen van het Scrum team en de bijbehorende rollen en het vergaren en verspreiden van de benodigde kennis. Een basistraining Scrum kan je hierbij al een eind op weg helpen.
7. Hotfix en rollback
De laatste stap in het implementatieproces is het inregelen van de zogeheten hotfix en rollback mogelijkheden.
Zorg dat je tijdens de implementatie al duidelijke afspraken maakt over wat te doen wanneer iets niet werkt zoals het hoort. Dit zorgt ervoor dat je snel kan schakelen en fouten snel oplost.
Kevin Bentlage
CTO bij Cobytes
Een hotfix is een snelle en gerichte oplossing voor een specifiek probleem. Dit is van belang omdat je hiermee zorgt dat de oplossing direct doorgevoerd kan worden zonder dat je hoeft te wachten op geplande updates of andere procesmatige afspraken. Het is als het ware een snelle vluchtroute die je achter de hand houdt voor de momenten dat het nodig is.
Een rollback is een manier om recente wijzigingen ongedaan te maken en het systeem terug te zetten naar een eerdere stabiele versie. Beide onderdelen zijn essentieel voor snelle probleemafhandeling en het waarborgen van stabiliteit.
Oplevering en onderhoud van de CI/CD pipeline
Na een succesvolle afronding van de implementatie is het tijd voor oplevering en overdracht binnen het team. Het is van groot belang het team al tijdens de implementatie nauw te betrekken. Dit zorgt voor een soepele overdracht. Zorg er ook voor dat zaken gedocumenteerd worden. Op deze manier kan ieder teamlid altijd terugvallen op de beschikbare documentatie. Ook bij de onboarding van nieuwe collega’s is dit onmisbaar.
Het proces is nooit ‘af’
Na de overdracht begint het echte werk eigenlijk pas. De CI/CD pipeline wordt in de praktijk toegepast! Je komt er dan ook achter dat het proces eigenlijk nooit helemaal af is. Het is een dynamisch onderdeel wat altijd in beweging blijft en de nodige updates vereist.
Ga je bijvoorbeeld met nieuwe tools werken? Dan moet je deze ook in de CI/CD pipeline integreren en de documentatie hierop aanpassen. Daarnaast is het belangrijk het proces af en toe te reviewen, zodat je op basis daarvan de nodige aanpassingen en optimalisaties doorvoert.
Ook aan de slag met een CI/CD pipeline implementatie?
Zoals je wellicht hebt gelezen, heeft de implementatie van een CI/CD pipeline nogal wat voeten in de aarde. Maar laat je hierdoor niet afschrikken. Want wanneer je dit goed neerzet, fungeert het als een sterke basis om op verder op te bouwen.
Wil je meer weten over de mogelijkheden van een CI/CD pipeline binnen jouw developmentteam of heb je advies nodig? Neem dan contact met ons op, we denken graag met je mee!