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.
- 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:
- Build: a
Dockerfilebeschrijft hoe je de afbeelding maakt. - Verzenden: duw de afbeelding naar een register, zoals Docker Hub.
- 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:
- Een ontwikkelaar schrijft een
Dockerfileen test de container lokaal. - Een CI/CD-pijplijn bouwt de image en voert de tests uit.
- De pijplijn pusht een versie-image naar een register.
- Een Kubernetes-manifest wordt bijgewerkt om die installatiekopieversie te gebruiken.
- 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
latestwordt 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
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.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
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 →DevOpsOmgevingsvariabelen 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 →SoftwareontwikkelingAPI-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 →TestautomatiseringSpotten 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 →SoftwaretestenCodedekking 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 & SQLDELETE 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 & SQLSQL-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 →SoftwareontwikkelingTypeScript-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 →SoftwareontwikkelingPython *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 →SoftwareontwikkelingPython 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 intelligentieWat 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 →DevOpsMonitoring 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 →DevOpsDocker-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 →TestautomatiseringTDD 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 →SoftwaretestenGebruikersacceptatietesten (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 & SQLSQL 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 & SQLSQL 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 →SoftwareontwikkelingWat 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 →SoftwareontwikkelingJavaScript-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsImplementatie 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 →TestautomatiseringSchilferige 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 →SoftwaretestenBelastingtesten 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 →SoftwaretestenTestcase 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 & SQLOptimalisatie 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 & SQLSQL 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 →SoftwareontwikkelingJavaScript 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 →SoftwareontwikkelingPython-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 →SoftwareontwikkelingPython-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 intelligentieWat 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 →DevOpsLinux-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 →TestautomatiseringSelenium 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 →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst 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 & SQLTutorial 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 & SQLSQL-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 →SoftwareontwikkelingGit 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 →SoftwareontwikkelingJavaScript-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 →SoftwareontwikkelingZelfstudie 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 intelligentieWat 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 →DevOpsTerraform-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 →DevOpsDocker 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 →TestautomatiseringPytest-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 →SoftwaretestenLevenscyclus 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 →SoftwareontwikkelingGit 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 →SoftwareontwikkelingPython 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 & SQLSQL 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 →