Docker versus Kubernetes: belangrijkste verschillen, hoe ze samenwerken en welke u nodig heeft

  1. Home
  2. Blog
  3. DevOps

DevOps

Docker versus Kubernetes: Belangrijkste verschillen, hoe ze samenwerken en welke u nodig heeft

Docker en Kubernetes zijn niet echt rivalen. De één verpakt en voert containers uit, terwijl de ander deze over meerdere machines beheert. Ontdek waar elk past, zie hoe één app met beide werkt en beslis wat uw project nodig heeft.

9 min leestijd
Docker versus Kubernetes: belangrijkste verschillen, hoe ze samenwerken en welke je nodig hebt

Belangrijkste punten

  • Docker bouwt images en voert containers uit, meestal op één machine.
  • Kubernetes plant en beheert containers over een cluster van machines.
  • Ze worden meestal samen gebruikt: Docker bouwt de image en Kubernetes voert deze uit in productie.
  • De eerlijkere vergelijking is Kubernetes versus Docker Swarm of Compose, en veel kleine projecten hebben Kubernetes helemaal niet nodig.

Zoeken naar Docker vs Kubernetes suggereert dat je er één moet kiezen, maar die framing zorgt voor veel verwarring. Het lijkt een beetje op het vergelijken van een zeecontainer met de haven die er duizenden organiseert. Ze opereren op verschillende niveaus en worden vaak naast elkaar gebruikt.

Deze gids legt uit wat iedereen doet, toont in beide dezelfde kleine app en eindigt met een praktische manier om te beslissen. De opdrachten en bestanden hier zijn standaardvoorbeelden die we voor dit artikel niet hebben uitgevoerd, dus vergelijk ze met de versies die u installeert.

Het korte antwoord

Docker is een platform waarmee u een applicatie en de bijbehorende afhankelijkheden in een image kunt verpakken en die image vervolgens als container kunt uitvoeren. Het beantwoordt de vraag “hoe zorg ik ervoor dat deze app overal op dezelfde manier werkt?”

Kubernetes, vaak geschreven als K8s, is een containerorkestrator. Het bepaalt waar containers op veel machines draaien, start ze opnieuw op als ze uitvallen en schaalt ze op als er vraag naar is. Het geeft antwoord op de vraag: “Hoe zorg ik ervoor dat honderden containers betrouwbaar blijven draaien?”

Docker versus Kubernetes zij aan zij

Aspect Dokwerker Kubernetes
Hoofdtaak Containers bouwen en uitvoeren Orchestreer containers
Reikwijdte Meestal één gastheer Een cluster van vele knooppunten
Bouwt afbeeldingen? Ja Nee
Basiseenheid Houder Pod (een of meer containers)
Configuratie Dockerfile, compose.yaml YAML-manifesten
Mislukte container Optioneel herstartbeleid op die host Automatisch vervangen, zelfs op een ander knooppunt
Schalen Handmatig, op één host met Compose Declaratief, met opties voor automatisch schalen
Netwerken Bridge-netwerken op een host Clusterbrede services en DNS
Leercurve Zacht Steil
Beste voor Ontwikkeling en kleine implementaties Grote productiesystemen

Wat Docker doet

Vóór containers was “het werkt op mijn machine” een dagelijks probleem, omdat elke server overal verschillende versies van had. Docker bundelt uw code, runtime en bibliotheken in één image. Een actieve kopie van die image is een container en deelt de kernel van de host, zodat deze sneller opstart en minder geheugen gebruikt dan een volledige virtuele machine.

De workflow bestaat uit drie stappen:

  1. Build: a Dockerfile beschrijft hoe je de afbeelding maakt.
  2. Verzenden: duw de afbeelding naar een register, zoals Docker Hub.
  3. Uitvoeren: start containers vanaf die afbeelding op elke compatibele machine.

Om aan de slag te gaan, begint u met onze Docker-tutorial voor beginners en leest u vervolgens onze Dockerfile best practices.

Wat Kubernetes doet

Docker op één server werkt goed totdat die server uitvalt, het verkeer er overheen groeit of je tientallen services moet coördineren. Kubernetes verzorgt deze operationele klussen:

  • Planning: het plaatsen van containers op machines met voldoende vrije capaciteit.
  • Zelfherstel: defecte containers vervangen en werk verplaatsen van defecte knooppunten.
  • Schaal: kopieën toevoegen of verwijderen, handmatig of op basis van statistieken.
  • Servicedetectie: een veranderende groep containers één stabiele naam geven.
  • Doorlopende updates: Nieuwe versies worden geleidelijk uitgebracht, met een simpele rollback.
  • Configuratie: instellingen en geheimen afzonderlijk van afbeeldingen beheren.

Het kernidee is de gewenste toestand. U verklaart dat er drie exemplaren zouden moeten bestaan, en de controleurs blijven dat vergelijken met de werkelijkheid en eventuele verschillen corrigeren. Onze Kubernetes-tutorial voor beginners loopt hier doorheen op een lokaal cluster.

Hoe Docker en Kubernetes samenwerken

Een typisch pad van de laptop van een ontwikkelaar naar productie ziet er als volgt uit:

  1. Een ontwikkelaar schrijft een Dockerfile en test de container lokaal.
  2. Een CI/CD-pijplijn bouwt de image en voert de tests uit.
  3. De pijplijn pusht een versie-image naar een register.
  4. Een Kubernetes-manifest wordt bijgewerkt om die installatiekopieversie te gebruiken.
  5. Kubernetes haalt de afbeelding op en rolt deze uit over het cluster.

De taak van Docker is dus grotendeels klaar voordat Kubernetes begint. De afbeelding is het overdrachtspunt tussen hen.

Eén app, beide kanten op

Hier is een kleine webservice. De afbeelding wordt op dezelfde manier opgebouwd, ongeacht welke tool deze uitvoert:

# Dockerfile
FROM python:3.13-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

Voer het uit met Docker

docker build -t shop-api:1.0 .
docker run -d --name shop -p 8080:8000 --restart unless-stopped shop-api:1.0

Twee commando’s en het draait. Dit is eenvoudig en geschikt voor veel kleine projecten. Maar er staat één exemplaar op één machine, en als de machine het begeeft, gaat de service mee.

Het wordt uitgevoerd met Kubernetes

# shop.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: shop
spec:
  replicas: 3
  selector:
    matchLabels:
      app: shop
  template:
    metadata:
      labels:
        app: shop
    spec:
      containers:
        - name: api
          image: registry.example.com/shop-api:1.0
          ports:
            - containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
  name: shop
spec:
  selector:
    app: shop
  ports:
    - port: 80
      targetPort: 8000
kubectl apply -f shop.yaml
kubectl get pods -l app=shop

Er valt nog veel meer te schrijven, en je hebt een cluster nodig om het uit te voeren. In ruil daarvoor krijgt u drie exemplaren, een stabiel intern adres en automatische vervanging. Die afweging is de hele beslissing in miniatuur: meer complexiteit in ruil voor meer veerkracht.

Wat gebeurt er als een container faalt?

Evenement Docker op één host Kubernetes
App crasht Opnieuw opgestart, als er een herstartbeleid is ingesteld Automatisch opnieuw opgestart
App hangt maar blijft actief Blijft hangen, tenzij u er afhandeling voor toevoegt Een liveness-sonde kan het opnieuw opstarten
De hele server sterft De service is uitgeschakeld totdat iemand iets doet Pods worden opnieuw gemaakt op gezonde knooppunten
Het verkeer verdrievoudigt Je schaalt met de hand, op één host Een autoscaler kan kopieën toevoegen
Een slechte uitgave U implementeert de oude afbeelding met de hand opnieuw kubectl-uitrol ongedaan maken

De dockershim-verwarring

Je hebt misschien gelezen dat “Kubernetes Docker heeft laten vallen”. Dit is in engere zin waar, en het heeft veel mensen onnodig bang gemaakt. Kubernetes voert containers uit via een standaard die de Container Runtime Interface wordt genoemd. Docker Engine implementeerde het niet rechtstreeks, dus voegde Kubernetes een adapter toe genaamd dockershim. Die adapter is verwijderd in versie 1.24.

Clusters gebruiken nu doorgaans runtimes zoals containerd of CRI-O. Afbeeldingen die je met Docker maakt, werken nog steeds, omdat ze de Open Container Initiative (OCI)-imagestandaard volgen. U kunt dus blijven bouwen met Docker en uw cluster voert het resultaat uit met een andere runtime.

Docker Compose versus Swarm versus Kubernetes

De betekenisvollere vergelijking is tussen tools die containers coördineren:

Gereedschap Reikwijdte Installatie inspanning Goed voor
Docker Componeren Eén gastheer Zeer laag Lokale ontwikkeling, kleine apps
Dokwerkerszwerm Klein cluster Laag Eenvoudige configuraties met meerdere servers
Kubernetes Grote clusters Hoog Complexe, grootschalige systemen

Docker Compose start verschillende gerelateerde containers vanuit één bestand, en het is uitstekend geschikt voor een webapp plus een database op een laptop. Swarm is ingebouwd in Docker en is veel gemakkelijker te leren dan Kubernetes, maar het heeft een veel kleiner ecosysteem. Kubernetes heeft de grootste community en tooling, wat een groot deel is van de reden waarom het de standaard werd voor grote implementaties.

Tip: Vergelijk de werkelijke kosten. Kubernetes betekent voortdurende upgrades, beveiligingswerk en monitoring, naast het leren ervan. Een beheerde dienst, zoals Amazon EKS, Google GKE of Azure AKS, vermindert dit werk maar neemt het niet weg.

Welke heb je nodig?

Docker alleen is meestal voldoende als:

  • U ontwikkelt lokaal of draait een kleine app op één server.
  • Je hebt een klein team en geen toegewijd operationeel personeel.
  • Incidentele korte onderbrekingen zijn acceptabel.

Kubernetes begint zinvol te worden wanneer:

  • Je voert veel services uit die verschillende teams zelfstandig inzetten.
  • U hebt een hoge beschikbaarheid nodig voor meerdere machines of zones.
  • Het verkeer varieert zo erg dat automatisch schalen echt geld bespaart.
  • U beschikt over de vaardigheden of het budget om het te bedienen.

Er is ook een middenweg. Beheerde containerplatforms, zoals AWS Fargate, Google Cloud Run of een PaaS, draaien uw Docker-image zonder dat u een cluster hoeft te onderhouden. Voor veel groeiende bedrijven is dat de juiste volgende stap, in plaats van direct naar Kubernetes te springen.

Als je beide om carrièreredenen wilt leren, is de volgorde duidelijk: eerst Docker, dan Kubernetes. U kunt een Pod niet op een comfortabele manier debuggen zonder eerst afbeeldingen, poorten en containerlogboeken te begrijpen.

Veel voorkomende fouten

  • Kubernetes te vroeg adopteren. Het kopiëren van de architectuur van een gigantisch bedrijf kan een klein team in operationeel werk begraven.
  • De tag latest wordt gebruikt in productie. Je kunt niet op betrouwbare wijze zien wat er wordt uitgevoerd of terugdraaien. Gebruik specifieke versietags.
  • Gegevens opslaan in containers. Containers zijn wegwerpbaar, dus gebruik volumes of een beheerde database.
  • Statuschecks overslaan. Zonder tests op gereedheid en liveness kan Kubernetes geen goede beslissingen nemen over uw app.
  • Resourcelimieten vergeten. Eén hebzuchtige container kan al het andere op een node uithongeren.

Tot slot

Docker verpakt uw software en Kubernetes voert deze op schaal uit. In plaats van te vragen wat beter is, kun je beter vragen welk probleem je vandaag hebt. Als het “mijn app is moeilijk te installeren” is, gebruik dan Docker. Als het is “mijn 40 services moeten serverstoringen overleven”, kijk dan naar Kubernetes. Begin met het eenvoudigste hulpmiddel dat uw werkelijke probleem oplost, en ga verder als u de noodzaak ervan inziet.

Veelgestelde vragen

Kan Kubernetes Docker vervangen?

Niet helemaal, aangezien ze verschillende taken uitvoeren. Kubernetes bouwt geen images, dus teams gebruiken daarvoor nog steeds Docker of een soortgelijke tool, en Kubernetes voert de resultaten uit.

Kan ik Kubernetes gebruiken zonder Docker?

Ja. Clusters draaien doorgaans containers met container of CRI-O. Afbeeldingen die met Docker zijn gebouwd, werken nog steeds, omdat ze de OCI-standaard volgen.

Moet ik eerst Docker of Kubernetes leren?

Leer eerst Docker. Kubernetes gaat ervan uit dat u afbeeldingen, containers, poorten en logs al begrijpt, dus deze basisprincipes zullen het veel gemakkelijker maken om te leren.

Is Dockerzwerm dood?

Nee, het is nog steeds beschikbaar en past bij eenvoudige clusters. Het ecosysteem en de acceptatie ervan zijn echter veel kleiner dan die van Kubernetes, dus controleer of het voldoet aan uw langetermijnbehoeften.

Hebben kleine bedrijven Kubernetes nodig?

Meestal niet in eerste instantie. Docker Compose of een beheerd containerplatform komt hen vaak goed van pas, totdat de schaal- of teamstructuur Kubernetes de kosten waard maakt.

Blijf leren

Werk met Stack Quora

Hulp nodig met testen, WordPress of SEO?

We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.

Blijf lezen

Meer handleidingen over testen, AI en moderne ontwikkeling

Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.

Kunstmatige intelligentie

AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen

AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…

Lees artikel →
DevOps

Omgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan

Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…

Lees artikel →
Softwareontwikkeling

API-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten

API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…

Lees artikel →
Testautomatisering

Spotten in Python: unittest.mock, patch en de fouten die tests doen liegen

Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…

Lees artikel →
Softwaretesten

Codedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent

Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…

Lees artikel →
Databases & SQL

DELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken

DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…

Lees artikel →
Databases & SQL

SQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden

SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…

Lees artikel →
Softwareontwikkeling

TypeScript-interface versus type: echte verschillen, getest met de compiler

TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…

Lees artikel →
Softwareontwikkeling

Python *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden

Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…

Lees artikel →
Softwareontwikkeling

Python Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken

Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…

Lees artikel →
Kunstmatige intelligentie

Wat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren

Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…

Lees artikel →
DevOps

Monitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen

Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…

Lees artikel →
DevOps

Docker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier

Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…

Lees artikel →
Testautomatisering

TDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt

TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…

Lees artikel →
Softwaretesten

Gebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden

Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…

Lees artikel →
Databases & SQL

SQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen

SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…

Lees artikel →
Databases & SQL

SQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten

SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…

Lees artikel →
Softwareontwikkeling

Wat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld

Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…

Lees artikel →
Softwareontwikkeling

JavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden

De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…

Lees artikel →
Softwareontwikkeling

Python-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden

Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …

Lees artikel →
Kunstmatige intelligentie

Wat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd

Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…

Lees artikel →
DevOps

Implementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen

Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…

Lees artikel →
Testautomatisering

Schilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen

Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…

Lees artikel →
Softwaretesten

Belastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden

Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …

Lees artikel →
Softwaretesten

Testcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken

Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…

Lees artikel →
Databases & SQL

Optimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing

Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…

Lees artikel →
Databases & SQL

SQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties

SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…

Lees artikel →
Softwareontwikkeling

JavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs

Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…

Lees artikel →
Softwareontwikkeling

Python-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden

Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…

Lees artikel →
Softwareontwikkeling

Python-klassen en -objecten: OOP-zelfstudie met echte voorbeelden

Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…

Lees artikel →
Kunstmatige intelligentie

Wat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype

Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…

Lees artikel →
DevOps

Linux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden

Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…

Lees artikel →
Testautomatisering

Selenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen

Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …

Lees artikel →
Softwaretesten

Equivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden

Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…

Lees artikel →
Softwaretesten

Ernst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden

Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…

Lees artikel →
Databases & SQL

Tutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden

Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …

Lees artikel →
Databases & SQL

SQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus

SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…

Lees artikel →
Softwareontwikkeling

Git Commands Cheat Sheet: de commando's die je daadwerkelijk gebruikt, met voorbeelden

Een spiekbriefje voor Git-opdrachten, gegroepeerd op taak: setup, staging, branches, remotes, stash, geschiedenis en fouten ongedaan maken, met uitv…

Lees artikel →
Softwareontwikkeling

JavaScript-beloften uitgelegd: vervolgens catch, Promise.all en veelvoorkomende fouten

JavaScript-beloften uitgelegd met code die we hebben uitgevoerd: staten, dan en catch-ketens, foutafhandeling, Promise.all, allSettled, race en wat …

Lees artikel →
Softwareontwikkeling

Zelfstudie Python-woordenboek: methoden, voorbeelden en veelvoorkomende patronen

Een Python-woordenboektutorial met code die we hebben uitgevoerd: dictaten, sleutelmethoden, samenvoeg-, begrips-, tel- en groeperingspatronen en ve…

Lees artikel →
Kunstmatige intelligentie

Wat is RAG? Retrieval-Augmented Generation uitgelegd met een werkend voorbeeld

Wat is RAG? Retrieval-augmented generatie stap voor stap uitgelegd: indexeren, chunken, insluiten, ophalen, een klein werkend Python-voorbeeld, eval…

Lees artikel →
DevOps

Terraform-zelfstudie voor beginners: infrastructuur als code van het eerste bestand tot modules

Een Terraform-tutorial voor beginners: begin zonder cloudaccount, leer init, plan en pas toe, vervolgens variabelen, outputs, status, modules en een…

Lees artikel →
DevOps

Docker versus Kubernetes: belangrijkste verschillen, hoe ze samenwerken en welke u nodig heeft

Docker vs Kubernetes legde uit: wat elk doet, dezelfde app draait met beide, Docker Compose en Swarm vergeleken, de dockershim veranderen en hoe je …

Lees artikel →
Testautomatisering

Pytest-tutorial voor beginners: armaturen, parametriseren en echte voorbeelden

Een pytest-tutorial voor beginners met tests die we hebben uitgevoerd op pytest 9.2: beweringen, armaturen, parametrize, conftest, markers, tmp_path…

Lees artikel →
Softwaretesten

Levenscyclus van softwaretests (STLC): 6 fasen, in- en uitgangscriteria, voorbeeld

De levenscyclus van softwaretesten uitgelegd: zes STLC-fasen met in- en uitstapcriteria, deliverables, een voorbeeld van een uitgewerkte inlogfuncti…

Lees artikel →
Softwareontwikkeling

Git merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt

Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.

Lees artikel →
Softwareontwikkeling

Python list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt

Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.

Lees artikel →
Databases & SQL

SQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)

Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.

Lees artikel →