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

  1. Home
  2. Blog
  3. DevOps

DevOps

Terraform-tutorial voor beginners: Infrastructuur als code, van eerste bestand tot modules

Leer Terraform zonder cloudaccount of verrassingsrekening. Begin met lokale bestanden om inzicht te krijgen in plannen, toepassen en statussen, en ga vervolgens over op echte cloudbronnen, modules en een workflow die veilig is voor teams.

10 min leestijd
Terraform-tutorial voor beginners: infrastructuur als code van eerste bestand tot modules

Belangrijkste punten

  • Terraform maakt en wijzigt infrastructuur op basis van tekstbestanden die u in Git kunt bewaren.
  • De kernworkflow is init, plan, apply en plan toont veranderingen voordat ze plaatsvinden.
  • In het statusbestand wordt vastgelegd wat Terraform beheert. Bescherm het, en commit het nooit aan Git.
  • Gebruik modules om patronen opnieuw te gebruiken en een externe status met vergrendeling wanneer u in teamverband werkt.

Rondklikken op een cloudconsole is prima voor één server. Het mislukt als je dezelfde configuratie nodig hebt voor staging en productie, of als iemand vraagt ​​wie afgelopen maart een firewallregel heeft gewijzigd. Deze Terraform-tutorial voor beginners laat je een betere manier zien: beschrijf je infrastructuur in code en laat een tool deze werkelijkheid maken.

De meeste tutorials beginnen met een cloudaccount, wat het factureringsrisico met zich meebrengt voordat u iets heeft geleerd. We beginnen met de provider local van Terraform, die alleen maar bestanden op uw computer aanmaakt, zodat fouten niets kosten. Deze voorbeelden en de voorbeelduitvoer zijn standaardillustraties die we niet voor dit artikel hebben uitgevoerd, en de exacte bewoording verschilt per versie.

Wat is Terraform?

Terraform is een infrastructuur als code (IaC)-tool van HashiCorp. Je schrijft configuratiebestanden in HCL, de HashiCorp Configuration Language, waarin je het gewenste eindresultaat beschrijft. Terraform bedenkt vervolgens wat er moet worden gemaakt, gewijzigd of verwijderd om daar te komen.

Het communiceert met platforms via plug-ins die providers worden genoemd. Er zijn providers voor AWS, Azure, Google Cloud, Kubernetes, GitHub, Cloudflare en vele anderen, zodat u één workflow voor allemaal kunt gebruiken.

Eén ding om te weten: in 2023 heeft HashiCorp Terraform overgezet naar de Business Source-licentie. De community heeft vervolgens OpenTofu gemaakt, een open-source fork die zeer vergelijkbare opdrachten en configuraties gebruikt. Wat je hier leert, geldt grotendeels voor beide.

Waarom infrastructuur als code?

Vraag Handmatig consolewerk Terraform
Wie heeft wat veranderd? Moeilijk te achterhalen Git-geschiedenis
Kunnen we de staging naar de productie kopiëren? Voorzichtig klikken Hergebruik de code
Wat zal deze verandering doen? Daar kom je achteraf achter terraform plan laat het je eerst zien
Kan iemand het reviewen? Niet gemakkelijk Een normaal pull-verzoek
Herstel na een ramp Hangt af van het geheugen van mensen Maak opnieuw op basis van code, plus gegevensback-ups

Terraform is ook declaratief. U zegt “er moeten drie servers zijn”, niet “driemaal een server maken”. Als er al twee bestaan, wordt er één toegevoegd. Een script dat simpelweg zijn stappen herhaalt, zou er uiteindelijk nog drie kunnen creëren.

Installeer Terraform

Installeer het met behulp van de officiële HashiCorp-instructies voor uw besturingssysteem en bevestig vervolgens dat het werkt:

terraform -version

Maak een lege map voor het project. Terraform leest elk .tf bestand in de huidige map, dus één map is gelijk aan één configuratie.

Uw eerste configuratie

Maak een bestand met de naam main.tf:

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "~> 2.5"
    }
  }
}

resource "local_file" "greeting" {
  filename = "${path.module}/hello.txt"
  content  = "Hello from Terraform\n"
}

Kijk naar blok resource, aangezien bijna alles wat je schrijft deze vorm volgt. local_file is het resourcetype en greeting is uw eigen naam ervoor binnen de configuratie. Samen vormen ze het adres: local_file.greeting. De argumenten binnenin beschrijven wat u wilt.

De workflow: initiëren, plannen, toepassen

terraform init

Hiermee wordt de map voorbereid en worden de providers gedownload waar u om hebt gevraagd. Voer het één keer uit aan het begin en opnieuw wanneer u een provider of module toevoegt. Er wordt ook een .terraform.lock.hcl-bestand gemaakt, waarin de exacte providerversies worden vastgelegd. Commit dat bestand naar Git.

terraform init

terraform plan

Dit vergelijkt uw code met wat er bestaat en toont de geplande wijzigingen, zonder iets aan te raken:

terraform plan

# local_file.greeting will be created
+ resource "local_file" "greeting" {
    + content  = "Hello from Terraform\n"
    + filename = "./hello.txt"
  }

Plan: 1 to add, 0 to change, 0 to destroy.

Leer de symbolen, want je leest veel plannen:

Symbool Betekenis
+ Creëer
~ Update op zijn plaats
- Vernietig
-/+ Vernietigen en opnieuw creëren

terraform van toepassing

Deze toont het plan opnieuw, vraagt om bevestiging en voert de wijzigingen door:

terraform apply

Type yes en hello.txt verschijnen. Voer nu terraform plan opnieuw uit. Het zou geen wijzigingen moeten rapporteren, omdat de werkelijkheid al overeenkomt met uw code. Deze eigenschap, waarbij het herhaaldelijk uitvoeren ervan geen verdere verandering teweegbrengt, wordt idempotence genoemd.

Veranderen en vernietigen

Bewerk de regel content en voer terraform plan uit. Terraform ziet het verschil en stelt een verandering voor. Voor deze bron vervangt het het bestand. Besteed aandacht aan vervangingen op de echte infrastructuur, aangezien het opnieuw aanmaken van een database kan betekenen dat gegevens verloren gaan.

Verwijder vervolgens hello.txt handmatig en plan opnieuw. Terraform merkt dat het ontbreekt en biedt aan om het opnieuw te maken. Een verschil tussen uw code en de werkelijkheid wordt drift genoemd, en het detecteren ervan is een van de belangrijkste voordelen van de tool.

Om alles wat deze configuratie beheert te verwijderen, voert u het volgende uit:

terraform destroy

Variabelen en uitgangen

Hardgecodeerde waarden zorgen ervoor dat u code niet opnieuw kunt gebruiken. Invoervariabelen maken een configuratie flexibel, en uitvoer rapporteert nuttige waarden terug:

# variables.tf
variable "environment" {
  type        = string
  description = "Deployment environment"
  default     = "dev"

  validation {
    condition     = contains(["dev", "staging", "prod"], var.environment)
    error_message = "Use dev, staging or prod."
  }
}

# main.tf
resource "local_file" "config" {
  filename = "${path.module}/${var.environment}.txt"
  content  = "environment=${var.environment}\n"
}

# outputs.tf
output "config_path" {
  value = local_file.config.filename
}

Stel waarden in op de opdrachtregel, of bewaar ze in een bestand met de naam terraform.tfvars, dat automatisch wordt geladen:

terraform apply -var="environment=staging"

Het gebruik van local_file.config.filename in de uitvoer geeft ook aan hoe bronnen naar elkaar verwijzen. Terraform leest deze verwijzingen om de juiste volgorde te bepalen waarin dingen moeten worden gemaakt.

Terraforme staat

Na aanmelding vindt u een bestand met de naam terraform.tfstate. Dit is Terraform’s verslag van wat het beheert, waarbij uw code wordt toegewezen aan echte objecten. Zonder dit zou Terraform niet weten dat local_file.greeting dat specifieke bestand is.

Drie regels zijn hier van belang:

  1. Geef nooit een status door aan Git. Het kan wachtwoorden en andere geheimen in platte tekst bevatten.
  2. Bewerk het niet met de hand. Gebruik opdrachten zoals terraform state list en terraform state mv.
  3. Gebruik een externe backend voor teamprojecten. Een gedeelde backend slaat de status centraal op en vergrendelt deze, zodat twee mensen niet tegelijk een aanvraag kunnen indienen.

Hier is een typische backend die Amazon S3 gebruikt, met een bucket die je vooraf maakt:

terraform {
  backend "s3" {
    bucket       = "my-company-terraform-state"
    key          = "shop/prod/terraform.tfstate"
    region       = "ap-south-1"
    encrypt      = true
    use_lockfile = true
  }
}

Tip: Begin elk project met een .gitignore, waarbij de bestanden .terraform/, *.tfstate, *.tfstate.* en alle *.tfvars bestanden die geheimen bevatten, worden uitgesloten.

Een echte cloudbron

De workflow verandert niet als u naar een cloud verhuist. Hier is een S3-bucket op AWS. Controleer eerst de prijzen en vernietig alles wat je maakt tijdens het oefenen:

provider "aws" {
  region = "ap-south-1"
}

resource "aws_s3_bucket" "reports" {
  bucket = "my-unique-reports-bucket-2026"

  tags = {
    Environment = var.environment
    ManagedBy   = "terraform"
  }
}

Terraform haalt inloggegevens op van uw AWS CLI-installatie- of omgevingsvariabelen. Schrijf nooit toegangssleutels in een .tf-bestand.

Modules

Een module is eenvoudigweg een map met Terraform-bestanden die u met verschillende invoer kunt oproepen. Het werkt ongeveer als een functie, waarbij u een patroon één keer kunt definiëren en opnieuw kunt gebruiken:

project/
  main.tf
  modules/
    reports_bucket/
      main.tf
      variables.tf
      outputs.tf
module "staging_reports" {
  source      = "./modules/reports_bucket"
  environment = "staging"
}

module "prod_reports" {
  source      = "./modules/reports_bucket"
  environment = "prod"
}

Het openbare Terraform Registry heeft ook kant-en-klare modules, maar lees deze voordat u erop vertrouwt en pin de versie. Bouw modules niet te vroeg. Wacht tot je een patroon minimaal twee keer hebt herhaald.

Een veilige teamworkflow

  1. Maak een vertakking en wijzig de .tf bestanden. Bekijk onze Git-tutorial voor beginners als je een opfriscursus nodig hebt.
  2. Voer terraform fmt en terraform validate uit.
  3. Open een pull-aanvraag, met de uitvoer van terraform plan ter beoordeling bijgevoegd.
  4. Pas na goedkeuring het opgeslagen plan toe vanaf één gecontroleerde plek, idealiter een pijpleiding.

Als u het plan opslaat, weet u zeker dat u precies toepast wat is beoordeeld:

terraform plan -out=tfplan
terraform apply tfplan

Dit past natuurlijk in CI/CD en GitHub-acties. Terraform levert meestal het cluster, en tools als Kubernetes voeren er vervolgens applicaties op uit.

Veel voorkomende fouten

  • Aanvragen zonder het plan te lezen. Eén -/+ in een database kan een erg dure verrassing zijn.
  • Status bijhouden op één laptop. Als u die laptop kwijtraakt, verliest Terraform uw infrastructuur uit het oog.
  • Handmatige wijzigingen aan de console aanbrengen. Ze veroorzaken drift en de volgende toepassing kan deze ongedaan maken.
  • Niet-vastgezette versies gebruiken. Pin provider- en moduleversies vast, zodat upgrades expres plaatsvinden.
  • Het gebruik van één grote configuratie. Door op te splitsen per omgeving of systeem wordt de schade van fouten beperkt.

Tot slot

Je hebt nu de ideeën achter bijna al het Terraform-werk gezien: grondstoffen declareren, het plan herzien, het toepassen en de staat beschermen. Oefen met de local provider totdat de workflow natuurlijk aanvoelt en beheer vervolgens een kleine echte bron in een gratis account. Schakel de externe status en modules in zodra er meer dan één persoon of meer dan één omgeving bij betrokken is.

Veelgestelde vragen

Waar wordt Terraform voor gebruikt?

Terraform wordt gebruikt voor het creëren en beheren van infrastructuur, zoals servers, netwerken, databases en DNS, door deze in code te beschrijven in plaats van deze met de hand te configureren.

Is Terraform gratis?

De Terraform CLI is gratis te gebruiken onder de Business Source-licentie, hoewel de voorwaarden bepaalde concurrerende commerciële toepassingen beperken. HCP Terraform heeft betaalde niveaus en OpenTofu is open source.

Wat is het verschil tussen Terraform en Ansible?

Terraform levert infrastructuur voornamelijk declaratief. Ansible configureert software voornamelijk op bestaande machines. Veel teams gebruiken beide, eerst Terraform en daarna Ansible.

Wat is een Terraform-statusbestand?

Het is een record dat uw configuratie in kaart brengt met echte bronnen. Terraform gebruikt het om wijzigingen uit te werken. Het kan geheimen bevatten, dus bewaar het veilig en houd het buiten Git.

Moet ik programmeren kennen om Terraform te leren?

Niet echt. HCL is eenvoudig en declaratief. Het begrijpen van het platform dat u beheert, zoals AWS-netwerken, is meestal moeilijker dan de taal zelf.

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 →