CI/CD staat voor Continuous Integration en Continuous Delivery. Het betekent dat we automatisch nieuwe versies van onze data pipelines testen, valideren en opleveren, zodat verbeteringen snel, veilig en betrouwbaar beschikbaar zijn.
Bij Blenddata willen we data engineering net zo betrouwbaar en schaalbaar maken als moderne softwareontwikkeling. CI/CD helpt ons om het ontwikkelen, testen en opleveren van data pipelines te stroomlijnen en te versnellen. Dit betekent dat nieuwe functies sneller en met minder fouten beschikbaar zijn. Door automatisering en standaardisatie kunnen we sneller schakelen, fouten eerder detecteren en kunnen datastacks van klanten direct profiteren van verbeteringen aan onze modern data stack template.
Een veelvoorkomend probleem bij bedrijven die nog niet met CI/CD werken, is dat kleine foutjes of onverwachte problemen pas na livegang ontdekt worden. Dit kan zorgen voor onbetrouwbare data of zelfs stilstand van belangrijke processen. Met CI/CD voorkomen we dit door elke wijziging automatisch te valideren en te testen, zodat we zeker weten dat alles werkt zoals verwacht.
CI/CD zorgt ervoor dat we bij elke wijziging in onze data pipelines automatisch controleren of alles nog werkt zoals verwacht. We gebruiken hiervoor GitLab als CI/CD-platform, waarin we herbruikbare bouwstenen (templates) hebben gemaakt voor onze CI/CD-processen. Hiermee kunnen we per project eenvoudig instellen welke stappen (zoals testen, bouwen en deployen) automatisch uitgevoerd moeten worden. Elk project dat draait op onze Modern Data Stack maakt hier gebruik van.
Bij elke nieuwe versie van een data pipeline voeren we automatisch tests uit. Zo weten we zeker dat nieuwe toevoegingen geen bestaande functionaliteit kapot maken en dat de data die de klant verwacht, nog steeds klopt. Nieuwe feature? Dan hoort daar een nieuwe test bij.
Voor enterprise klanten sluiten we aan bij de tools die zij al gebruiken, zoals Azure DevOps. Zo zorgen we ervoor dat onze werkwijze altijd past bij de wensen en processen van de klant.
Onze CI/CD pipelines draaien meestal de volgende stappen:
Onze CI/CD-templates zijn centraal beheerd in een eigen repository. Projecten gebruiken deze templates in hun .gitlab-ci.yml:
YAML:
1include:
2 - project: blend-data/cicd-templates
3 ref: 2.x.x
4 file: /customer-projects/mds-with-terraform.yml
Hierdoor profiteren alle projecten direct van verbeteringen en bugfixes in de templates. Updates aan templates worden automatisch als merge requests aangeboden in klantprojecten door middel van renovate en copier. Hiervoor hebben we een configuratie in onze renovate bot:
JSON:
1"packageRules": [
2 {
3 "matchManagers": ["copier"],
4 "updatePinnedDependencies": true,
5 "groupName": "Copier Project Template Update",
6 "rebaseWhen": "behind-base-branch",
7 "automerge": false,
8 "rangeStrategy": "replace",
9 "commitMessagePrefix": "fix(copier): ",
10 "commitMessageAction": "Update project template",
11 "commitMessageTopic": "{{currentVersion}}",
12 "schedule": [
13 "* 6 * * 1",
14 "* 6 * * 4"
15 ]
16 }
17],
Hiermee stellen we het volgende in:
Wij vinden het vooral belangrijk dat onze CI/CD alle kritische aspecten van een project (zoals de data pipelines) doorlopen. Zo hebben we vertrouwen dat elke nieuwe aanpassing goed werkt en geen onverwachte problemen veroorzaakt. Door onze modulaire aanpak kunnen we per project precies de juiste stappen zetten. Onnodige stappen laten we weg: zo draaien we in een project zonder Python geen Python-tests, en in een infrastructuurproject voeren we alleen bijvoorbeeld Terraform-tests uit en geen data-tests. Conditional jobs zorgen ervoor dat alleen relevante stappen worden uitgevoerd. Zo blijft het proces overzichtelijk, snel en betrouwbaar.
Sinds we CI/CD gebruiken, merken we dat fouten veel eerder worden ontdekt. Dit geeft rust: we weten dat wat we opleveren, werkt zoals het hoort. Ook kunnen we makkelijk terug naar een vorige versie als dat nodig is, en houden we automatisch een gedetailleerde changelog bij.
Onze security is verbeterd doordat we tools zoals Renovate Bot gebruiken. Hiermee worden onze gebruikte libraries en pakketten automatisch up-to-date gehouden, wat helpt om beveiligingsproblemen te voorkomen. Daarnaast hebben we een template die we via CI/CD naar alle klantprojecten synchroniseren. Zo profiteren al onze klanten direct van verbeteringen in onze Modern Data Stack.
Wij maken data engineering betrouwbaar door goede software best practices toe te passen. Dankzij onze CI/CD-aanpak zijn onze data pipelines stabiel, veilig en altijd up-to-date. Wil je weten hoe wij jouw data-project kunnen versnellen en verbeteren? Neem gerust contact op.
Of ben je benieuwd hoe je je tests automatisch kan draaien, onafhankelijk van de omgeving?
Neem gerust contact op! We helpen je graag verder.