Waarom jij CI/CD pipelines nodig hebt in jouw data platform

De wereld van data gaat keihard. Mogelijk heb jij als lezer een data platform, of ben jij je aan het oriënteren. Voor beide typen lezers, neem dit mee: investeer zeker tijd en energie voor het opzetten van een CI/CD pipeline. Dit gaat je namelijk op termijn heel veel tijd besparen!

Story time

Wij hebben een keer een project uitgevoerd voor een klant die al een data lakehouse had geïmplementeerd. Omdat er diverse onderdelen niet helemaal lekker verliepen, werden wij gevraagd om een redesign uit te voeren. Een van de uitdagingen die zij hadden was het vaak misging als ze een nieuwe functionaliteit hadden toegevoegd aan hun data platform. De werkwijze ging als volgt, je ontwikkelde een nieuwe functionaliteit en dan mocht je een lijstje af gaan met diverse testen die je handmatig moest uitvoeren. Je kan het wellicht al wel raden, dit gaat maar tot een bepaalde hoogte goed. De ene collega had soms wat meer haast of dacht dat het niet iets zou breken dus die liet een aantal testen links liggen, de ander koos ervoor om juist heel grondig te testen en was daardoor soms een hele dag kwijt. Doordat de drempel zo hoog lag om nieuwe functionaliteiten toe te voegen hoopte de functionaliteiten op en werden productie releases maar gelimiteerd tot één keer per maand. In de snelle wereld van data, is dit natuurlijk veel te lang. Idealiter kan je nu iets ontwikkelen en staat het binnen een uur op de productie omgeving omdat dat geautomatiseerd is getest.

CI/CD pipelines focussen zich op dat je meer snelheid kan behalen in nieuwe updates doorvoeren aan je data platform, omdat je functionaliteit automatisch wordt getest en wordt doorgezet naar de productieomgeving.

Wat zijn CI/CD pipelines?

Als je een data lake- of warehouse hebt draaien, heb je mogelijk diverse omgevingen. Denk aan bijvoorbeeld een ontwikkel- en productieomgeving. Bij sommige organisaties groeit dat zelfs uit tot een OTAP straat (ontwikkel-, test-, acceptatie- en productieomgeving). Deze omgevingen helpen je om te ontwikkelen zonder dat je de productieomgeving mogelijk breekt. Wanneer je wijziging succesvol is en is door getest zou je deze kunnen doorvoeren naar de volgende omgeving om vervolgens te eindigen op je productieomgeving. Dit is precies waar CI/CD pipelines zich op richten!

CI/CD staat voor Continuous Integration en Continuous Deployment en kent de volgende definitie: het zijn best practices in softwareontwikkeling die gericht zijn op het automatiseren en verbeteren van het ontwikkelingsproces. Hieronder een korte toelichting van beide termen:

  1. Continuous Integration (CI): CI verwijst naar het proces waarbij ontwikkelaars regelmatig (bijvoorbeeld meerdere keren per dag) nieuwe code aan de gezamenlijke repository toevoegen. In de essentie dus eigenlijk updates doorvoeren aan het data platform. Het belangrijkste doel van CI is om conflicten en integratieproblemen in een vroeg stadium op te sporen, voordat de fouten zich pas in de productieomgeving zullen vertonen. Dit wordt bereikt door automatische bouw- en testprocessen te activeren telkens wanneer er een wijziging in de code wordt aangebracht. Stel je voor dat je een nieuwe feature toe wilt voegen aan de code (bijvoorbeeld een wijziging van een connector of data model), dan trapt die achter de schermen een stuk software af waardoor die gaat testen of die toevoeging iets kapot maakt in het platform. Als die testen allemaal op groen staan, dan weet je dus zeker dat de nieuwe feature niks breekt en dat die mag worden toegevoegd.
  2. Continuous Deployment (CD): CD gaat een stap verder dan Continuous Integration. Het houdt in dat elke succesvolle code-integratie automatisch wordt ingezet naar een volgende omgeving zonder menselijke tussenkomst (bijvoorbeeld van ontwikkel naar de productie omgeving). Dit betekent dat elke wijziging die door de CI-pipeline is gegaan, automatisch beschikbaar wordt gesteld aan eindgebruikers. Continuous Deployment helpt bij het verminderen van de tijd tussen het schrijven van code en het beschikbaar stellen van nieuwe features of bug fixes aan gebruikers.

Hoe zien onze CI/CD pipelines eruit?

Ten eerste is het goed om aan te geven waar we precies deze pipelines gebruiken. In het algemeen worden onze pipelines gebruikt in het aanvragen van bepaalde pull-requests (PR). Denk hierbij aan een PR maken van een feature-branch naar ontwikkel of van ontwikkel naar productie. Ten tweede, is het goed om te vermelden dat de daadwerkelijke implementatie kan verschillen per organisatie. Echter, zit er altijd een rode lijn doorheen. Daarom hieronder de belangrijkste componenten van deze pipelines:

  • Connectors en code testen: de kans is groot dat je data platform gebruik maakt van verschillende stukken code. We willen hier zeker zijn dat alle code na jouw wijziging nog steeds werkt. Denk hierbij dan ook aan de connectors, util functies en mogelijk zelfs Infrastructure as Code. 
  • Data modellen en kwaliteit testen: denk hierbij aan op een fractie van de data alle modellen proberen te bouwen en de data kwaliteit te testen.
  • Notificatiesysteem: indien alles goed is gegaan en we de code kunnen implementeren op de volgende omgeving, krijgen we ook altijd een bericht of dit wel/niet succesvol is geweest. Zo weten we zeker dat de gehele CI/CD pipeline succesvol is geweest.
  • Deployment: de (aangepaste) infrastructuur en code doorvoeren naar de volgende omgeving.

Belangrijkste redenen om in een CI/CD pipeline te investeren

  1. Versnelling van de ontwikkelingscyclus: handmatige testen en implementatie van wijzigingen kunnen onwijs tijdrovend. CI/CD pipelines automatiseren deze taken, waardoor ontwikkelaars zich kunnen concentreren op het verbeteren van de functionaliteit in plaats van zich bezig te houden met repetitieve taken.
  2. Risicovermindering: het implementeren van wijzigingen in een data platform brengt risico's met zich mee. Je wilt er zeker van zijn dat je nieuwe wijziging bijvoorbeeld niet een cruciaal management dashboard breekt. Doordat CI/CD pipelines bestaan uit diverse automatische code en data testen, kan je in een vroeg stadium al eventuele fouten herkennen.  Het mooie is dat je ook continu bezig bent met nieuwe testen toevoegen, waardoor de betrouwbaarheid over tijd alleen maar meer groeit.
  3. Continu verbetering: data platforms moeten kunnen meeschalen met de groeiende vraag naar gegevensverwerking en -analyse. CI/CD pipelines maken het gemakkelijker om nieuwe functies toe te voegen, infrastructuur te upgraden en aanpassingen door te voeren om aan veranderende zakelijke behoeften te voldoen. Dit bevordert daarom dan ook de cultuur van continue verbetering en innovatie.

Conclusie

CI/CD pipelines zijn een onmisbaar onderdeel geworden van moderne data platforms. Ze bieden een gestroomlijnde en geautomatiseerde aanpak voor ontwikkeling, implementatie en onderhoud van data-oplossingen. Door de versnelling van ontwikkelingscyclus, risicovermindering en het stimuleren van continu verbeteren, helpen CI/CD pipelines organisaties om hun data platforms optimaal te benutten en concurrentievoordeel te behalen in een snel veranderende wereld. Succes!