Ga naar hoofdinhoud

Cloudcomputing en -architectuur voor data scientists

Ontdek hoe data scientists de cloud gebruiken om datasolutions in productie te brengen of om rekenkracht uit te breiden.
Bijgewerkt 30 sep 2026  · 13 min lezen

Verken met AI

ChatGPTClaudePerplexity

Schaalbare data science voorbij de lokale machine

Data science is een term die het snijvlak van veel belangrijke zaken vertegenwoordigt.

Ik zie een aantal pijlers van data science-expertise, namelijk:

  • Businessdomein
  • Kansrekening en statistiek
  • Informatica en softwareprogrammering
  • Schriftelijke en mondelinge communicatie

De derde zogenoemde pijler draait om inzicht in informatica en softwareprogrammering.

Hoewel dat voor beginnende data scientists niet altijd meteen duidelijk is, vallen hier vaak ook dingen onder als devops, cloudcomputing, datapijplijnen, data-engineering, ervaring met het bevragen van verschillende soorten databases, het bouwen en uitrollen van productieklare softwareoplossingen, enzovoort.

Daarnaast moeten data scientists stevige programmeervaardigheden ontwikkelen, maar ze zijn mogelijk minder geschoold of ervaren in informatica, programmeerconcepten of algemene softwarearchitectuur en -infrastructuur voor productie dan goed opgeleide of ervaren software-engineers. Wie begint met data science, installeert doorgaans Python en/of R op de eigen computer en schrijft en voert vervolgens code uit in een lokale Integrated Development Environment (IDE), zoals de Jupyter Notebook-applicatie of RStudio.

Omdat geavanceerde analytics steeds gebruikelijker wordt en data scienceteams groeien, is er bovendien meer behoefte aan samenwerkingsoplossingen voor het opleveren van inzichten, voorspellende analyses, aanbevelingssystemen, enzovoort. Reproduceerbaar onderzoek en notebooktools in combinatie met versiebeheer maken deel uit van de oplossing voor samenwerking, net als het inzetten van gezamenlijke, cloudgebaseerde online tools en platforms.

De behoefte aan samenwerking strekt zich ook uit tot mensen buiten data scienceteams, zeker omdat data science grotendeels wordt ingezet om bedrijfsdoelen te bereiken. De stakeholders van een data science-project kunnen dus bestaan uit executives, afdelingsleads en andere datateammedewerkers zoals architecten, data engineers, analisten, enzovoort.

Dit artikel is bedoeld om data scientists inzicht te geven in wat er voorbij de lokale laptop of desktop ligt, met name in de context van het in productie brengen van data science-oplossingen, of het uitbreiden van je rekenkracht en mogelijkheden. Afhankelijk van je ervaring met deze onderwerpen is de inhoud relevant voor data scientists van elk niveau.

Laten we beginnen!

Wat is de cloud precies?

Ah ja, de beruchte en nog vaak slecht begrepen cloud. Naast dat het heel hypothetisch en abstract kan klinken, is de cloud in de praktijk juist heel concreet bedoeld. Laten we eerst een paar kernbegrippen definiëren voordat we op het concept van de cloud ingaan.

Computers die met elkaar verbonden zijn en bronnen delen, noemen we een netwerk, waarbij het internet zelf het grootste en bekendste voorbeeld van een computernetwerk is. Thuisnetwerken, zoals een Local Area Network (LAN) of WiFi Service Set Identifier (SSID) waarin meerdere computers zijn verbonden, vormen een ander voorbeeld, al zijn ze veel kleiner. De bronnen waar het hier om gaat, kunnen webpagina’s, media, dataopslag, app-servers, printers, enz. zijn.

Computers in een netwerk heten meestal nodes, en ze communiceren met elkaar via goed gedefinieerde protocollen zoals HyperText Transfer Protocol (HTTP), Transmission Control Protocol (TCP)/Internet Protocol (IP), enzovoort. Deze communicatie kan dienen voor statusupdates, monitoring, request/response, en tal van andere doeleinden.

Verder staan computers vaak niet on-premise; applicaties en data worden dus vaak gehost op computers in een datacenter. Zulke locaties bieden alle benodigde infrastructuur, zoals stroom, koeling, beveiliging, rampenbescherming, enz., om een groot aantal computers te onderhouden en succesvol te laten draaien, toegankelijk voor bedrijven of de buitenwereld in het algemeen.

Omdat computers en opslag in de loop der tijd relatief goedkoop zijn geworden, gebruiken veel oplossingen nu meerdere samenwerkende computers die tegen relatief lage kosten zijn op te schalen, in plaats van te schalen door één superkrachtige en zeer dure machine aan te schaffen. Onderdeel van dat ‘samenwerken’ is ervoor zorgen dat de oplossing automatisch blijft draaien als een van de computers uitvalt, en dat het systeem automatisch kan schalen om de opgelegde belasting aan te kunnen.

Twitter, Facebook, Instagram, Snapchat, Netflix en YouTube zijn perfecte voorbeelden van cloudgebaseerde applicaties die op beide manieren moeten kunnen schalen. Het is zeer onwaarschijnlijk dat hun applicaties volledig ‘uit de lucht’ gaan, en ze kunnen bovendien letterlijk miljoenen dagelijkse gebruikers op hun platform aan.

Wanneer een groep computers met hetzelfde netwerk is verbonden en samenwerkt om dezelfde taak of set taken uit te voeren, noemen we dat een cluster. Je kunt een cluster zien als één computer, maar dan met enorme verbeteringen in performance, beschikbaarheid en schaalbaarheid ten opzichte van een enkele machine. Op deze voordelen kom ik later in deze post terug.

De termen distributed computing of distributed systems verwijzen naar software en systemen die zijn geschreven om clusters te benutten voor specifieke taken, zoals Hadoop, Spark en MapReduce.

Dan nu de definitie van de cloud. Naast de hierboven beschreven gedeelde resources kunnen andere belangrijke componenten servers, services, microservices, netwerken, enzovoort zijn. Een cloud beschrijft de situatie waarin één partij eigenaar is van, het beheer voert over en verantwoordelijk is voor een groep verbonden computers en gedeelde resources, doorgaans om softwaregebaseerde oplossingen te hosten en aan te bieden. Gezien deze definitie geldt dat het internet weliswaar een netwerk is, maar geen cloud, omdat het niet eigendom is van één enkele partij.

Voor een verdiepende kijk op cloudcomputing en een bespreking van kernconcepten bij het bouwen van schaalbare software- en bigdata-architecturen, bekijk mijn driedelige diepgaande serie over dit onderwerp.

Data science in de cloud

Inmiddels hebben we cloudcomputing en aanverwante concepten voldoende besproken om de betrokken ideeën te schetsen. Als je ervaring met softwarearchitectuur en -engineering tot nu toe beperkt is tot alleen lokaal ontwikkelen, vraag je je misschien af waarom dit allemaal relevant is voor data scientists. Dat behandelen we nu.

Als je bekend bent met het data science-proces, weet je dat vaak het grootste deel van de workflow op de lokale computer van de data scientist plaatsvindt. Op die computer staan de gewenste talen geïnstalleerd, zoals Python en R, plus de favoriete IDE van de data scientist. De andere primaire stap in de ontwikkelomgeving is het installeren van relevante pakketten, via een pakketmanager zoals Anaconda of door losse pakketten handmatig te installeren.

Als de ontwikkelomgeving eenmaal staat, begint de typische data science-workflow of -procedure, waarbij data meestal het enige andere vereiste is. De iteratieve stappen zijn doorgaans:

  • Data verzamelen
  • Data parsen, prepareren, wrangelen, transformeren en opschonen
  • Data analyseren en ontginnen, zoals Exploratory Data Analysis (EDA), samenvattende statistieken, …
  • Modellen bouwen, valideren en testen, zoals predictie, aanbevelingen, …
    • Opmerking: Als je geen modellen bouwt, dan patronen of trends identificeren, bruikbare inzichten genereren, nuttige informatie extraheren, rapporten maken, enzovoort. In deze tutorial vatten we beide gevallen samen als "een oplevering creëren".
  • Modellen of opleveringen afstemmen en optimaliseren

Soms is het echter niet praktisch of wenselijk om alle data science- of bigdata-taken op de lokale ontwikkelomgeving uit te voeren. Dit zijn enkele van de belangrijkste redenen:

  • Datasets zijn te groot en passen niet in het werkgeheugen (RAM) van de ontwikkelomgeving voor modeltraining of andere analyses
  • De rekenkracht (CPU) van de ontwikkelomgeving is niet in staat om taken in een redelijke of voldoende tijd uit te voeren, of überhaupt niet
  • De oplevering moet worden uitgerold naar een productieomgeving en mogelijk worden opgenomen als component in een grotere applicatie (bijvoorbeeld webapplicatie, SaaS-platform, …)
  • Je geeft er simpelweg de voorkeur aan om een snellere en krachtigere machine (CPU, RAM, …) te gebruiken en de vereiste belasting niet op de lokale ontwikkelmachine te leggen

Wanneer dit speelt, zijn er meerdere opties. In plaats van de lokale ontwikkelmachine van de data scientist te gebruiken, besteden mensen de rekentaken doorgaans uit aan een on-premise machine of een cloudgebaseerde virtuele machine (bijvoorbeeld AWS EC2, AWS Elastic Beanstalk). Het voordeel van virtuele machines en automatisch opschalende clusters daarvan is dat je ze naar behoefte kunt opstarten en weer uitschakelen, en bovendien kunt afstemmen op je vereisten voor rekenkracht en dataopslag.

Als het gaat om het uitrollen van opleveringen naar een productieomgeving als onderdeel van een grotere applicatie of datapijplijn, zijn er veel opties en uitdagingen om te overwegen. Een verdere uitwerking daarvan valt buiten de scope van dit artikel.

Naast maatwerk cloudgebaseerde of productieklare data science-oplossingen en tools zijn er ook veel cloud- en serviceaanbiedingen van zeer bekende leveranciers, die vaak goed samenwerken met notebooktools zoals Jupyter. Deze zijn veelal beschikbaar als big data-, machine learning- en artificial intelligence-API’s, met opties als het AWS Artificial Intelligence-platform, Databricks, Google Cloud Platform Datalab en Machine Learning, en nog veel meer.

Voor een veel gedetailleerdere, diepgaande bespreking van data science en geavanceerde analytics in productie versus ontwikkeling, inclusief aanbevelingen voor talen, pakketten, frameworks en platforms, bekijk mijn driedelige serie over dit onderwerp. Mijn serie over schaalbare software- en bigdata-architecturen is ook een mooie aanvulling op cloudcomputing.

Softwarearchitectuur en kwaliteitsattributen

Softwarearchitectuur omvat het ontwerpen van een softwaresysteem, meestal cloudgebaseerd, dat een product, service of taakgericht rekensysteem vertegenwoordigt. Je kunt ook de termen systeemarchitectuur of softwarearchitectuur horen; die betekenen grotendeels hetzelfde.

Onderdeel van het ontwerpen van een softwarearchitectuur is het kiezen van de juiste programmeertalen en technologieën (ook wel stack), componenten, pakketten, frameworks, platforms, enzovoort. Dat vergt vaak veel afwegingen, met name rond het beoogde doel van het systeem en andere belangrijke trade-offs. Dit aspect van softwarearchitectuur vereist vaardigheden, kennis en ervaring die iemand, zoals een softwarearchitect, in de loop van de tijd opbouwt.

Een ander cruciaal aspect van systeem- en softwarearchitectuur en -engineering zijn de zogenoemde kwaliteitsattributen of niet-functionele eisen. Dit geldt zeker voor oplossingen in de echte productieomgeving.

Niet-functionele eisen omvatten doorgaans zaken als:

  • Beschikbaarheid
  • Performance
  • Betrouwbaarheid
  • Schaalbaarheid (verticaal en horizontaal)
  • Uitbreidbaarheid
  • Gebruiksvriendelijkheid
  • Modulariteit
  • Hergebruik

In dit artikel krijg je een korte introductie van vier van de belangrijkste: beschikbaarheid, performance, betrouwbaarheid en schaalbaarheid. Merk op dat de bespreking op hoofdlijnen is en niet ingaat op metriekgebaseerde definities of eisen voor deze kwaliteitsattributen.

Beschikbaarheid is precies wat het zegt: dat het systeem beschikbaar is, of anders gezegd, dat het goed draait. Dat kan veel betekenen en hangt sterk samen met betrouwbaarheid en schaalbaarheid. "Goed draaien" betekent dat het systeem werkt zoals bedoeld en wanneer het nodig is. Dat kan zijn voor een eindgebruiker die het systeem wil gebruiken, bijvoorbeeld Facebook of Netflix, of voor een set cloudgebaseerde services die bijvoorbeeld data verwerken.

Betrouwbaarheid staat voor het vermogen van het systeem om te draaien en correct te werken zonder storingen of fouten. Hoe vaker een systeem zo kan draaien, hoe fouttoleranter het systeem is. Omdat het lastig is om alle mogelijke gebruiks- en randgevallen vooraf te bedenken en te testen, is 100% betrouwbaarheid zeer moeilijk te bereiken. Storingen kunnen bovendien om veel redenen optreden; codebugs, omgevingsproblemen en beperkte resources (CPU, RAM, schijfgeheugen, …) zijn enkele van de belangrijkste boosdoeners.

Performance is een term die de snelheid beschrijft waarmee het systeem taken uitvoert, of anders gezegd: de tijd die het systeem nodig heeft om een specifieke taak te volbrengen. Neem YouTube. Je verwacht dat wanneer je een video wilt kijken, die in redelijke tijd laadt en begint af te spelen. Hoe performanter Google YouTube kan maken, hoe sneller de video laadt en start, hoe blijer de gebruikers zijn en hoe kleiner de kans dat ze de app verlaten. Het tegenovergestelde zou zijn dat YouTube zo traag is dat het het voordeel niet waard is en mensen ermee stoppen. Gelukkig is meestal het eerste het geval.

Tot slot is schaalbaarheid cruciaal voor bepaalde applicaties en staat het voor het vermogen van een systeem om een bepaald prestatieniveau (zoals hierboven op hoofdlijnen gedefinieerd) te behouden ondanks een toenemende belasting van het systeem. Met belasting bedoelen we het aantal gelijktijdige of simultane verzoeken aan het systeem.

Een goed voorbeeld waar schaalbaarheid vereist is, is wanneer kaartjes voor een populair sportteam of een geliefde artiest in de verkoop gaan. Afhankelijk van de populariteit kan het aantal gelijktijdige verzoeken om kaartjes te kopen bij een webapplicatie als Ticketmaster in de honderdduizenden lopen zodra de verkoop start. Afhankelijk van het vermogen van een systeem om te schalen, kan dit de performance sterk verlagen of het systeem helemaal platleggen. Geen van beide is wenselijk.

Om hieraan te voldoen, worden technieken gebruikt om het systeem óf verticaal óf horizontaal te schalen. Verticaal schalen betekent dat de computer(s) in het systeem worden vervangen door krachtigere (CPU, meer cores, …) en betrouwbaardere machines met grotere resources zoals werkgeheugen of RAM. Zulke machines kunnen duur zijn.

Horizontaal schalen daarentegen gebruikt goedkope commodity-machines die individueel niet bijzonder krachtig zijn, maar als groep de belasting prima aankunnen. Omdat oplossingen met deze techniek meerdere computers vereisen, is het belangrijk systemen zo in te richten dat ze automatisch scenario’s afhandelen waarin een of meer computers (nodes) uitvallen of crashen (failover), enzovoort.

Conclusie

Hopelijk heeft dit artikel wat licht geworpen op de vele belangrijke aspecten van data science voorbij lokale ontwikkeling, en dan met name in de context van productieklare oplossingen. Concepten rond cloudgebaseerd rekenen en architectuur zijn belangrijk om te begrijpen wanneer je aan productiedataoplossingen werkt of extra rekenkracht en resources nodig hebt.

Deel je gedachten gerust in de comments hieronder. Wil je meer leren, volg dan @innoarchitech op Twitter, schrijf je in voor de InnoArchiTech-nieuwsbrief en neem een kijkje op de InnoArchiTech-blog. Je kunt ook mijn Goal-Driven Artificial Intelligence and Machine Learning-cursus bekijken.

Onderwerpen
Cloud
Gerelateerd

{count, plural, one {blog} other {blogs}}

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken