AI EducademyAIEducademy
🌳

AI-Fundamenten

🌱
AI Seeds

Begin bij nul

🌿
AI Sprouts

Bouw een fundament

🌳
AI Branches

Pas toe in de praktijk

🏕️
AI Canopy

Ga de diepte in

🌲
AI Forest

Beheers AI

🔨

AI-Meesterschap

✏️
AI Sketch

Begin bij nul

🪨
AI Chisel

Bouw een fundament

⚒️
AI Craft

Pas toe in de praktijk

💎
AI Polish

Ga de diepte in

🏆
AI Masterpiece

Beheers AI

🚀

Carrière Klaar

🚀
Interview Startplatform

Start je reis

🌟
Gedragsinterview Meesterschap

Beheers soft skills

💻
Technische Interviews

Slaag voor de codeerronde

🤖
AI- & ML-interviews

ML-interview meesterschap

🏆
Aanbod & verder

Bemachtig het beste aanbod

Alle programma's bekijken→

Lab

7 experimenten geladen
🧠Neuraal netwerk speeltuin🤖AI of mens?💬Prompt lab🎨Beeldgenerator😊Sentimentanalyse💡Chatbot bouwer⚖️Ethiek simulator
🎯Proef-sollicitatieGa naar het lab→
nav.journeyBlog
🎯
Over ons

AI-onderwijs toegankelijk maken voor iedereen, overal

❓
nav.faq

Common questions answered

✉️
Contact

Get in touch with us

⭐
Open Source

Openbaar gebouwd op GitHub

Begin met leren, het is gratis
AI EducademyAIEducademy

MIT-licentie. Open source

Leren

  • Opleidingen
  • Lessen
  • Lab

Community

  • GitHub
  • Bijdragen
  • Gedragscode
  • Over ons
  • FAQ

Ondersteuning

  • Koop een koffie voor me ☕
  • footer.terms
  • footer.privacy
  • footer.contact
AI & Engineering Opleidingen›⚒️ AI Craft›Lessen›Fundamenten van systeemontwerp
🏗️
AI Craft • Gevorderd⏱️ 20 min leestijd

Fundamenten van systeemontwerp

Waarom System Design ertoe doet

Elke grootschalige applicatie is opgebouwd uit dezelfde fundamentele bouwstenen. Interviewers verwachten niet dat je nieuwe technologie uitvindt - ze willen zien dat je de juiste componenten kunt selecteren en combineren voor een gegeven probleem. Deze les behandelt de toolkit die je in elk design interview nodig hebt.

Client-Server Architecture

In de kern volgt het web een simpel model: clients versturen requests, servers verwerken ze, en responses komen terug. Maar moderne systemen voegen lagen toe tussen deze twee eindpunten om scale, betrouwbaarheid en performance te beheren.

Een typische request kan het volgende pad doorlopen: client → CDN → load balancer → API gateway → application server → cache → database. Elke laag lost een specifiek probleem op, en begrijpen wanneer elke laag nodig is, onderscheidt sterke kandidaten van gemiddelde.

💡

Begin in interviews altijd met het schetsen van de high-level client-server flow voordat je in details duikt. Het toont gestructureerd denken.

Load Balancers: Verkeer verdelen

Een enkele server heeft beperkte capaciteit. Load balancers verdelen inkomende requests over meerdere servers met strategieën zoals:

  • Round-robin - requests worden sequentieel over servers verdeeld
  • Least connections - stuurt naar de server met de minste actieve requests
  • Consistent hashing - koppelt requests aan specifieke servers op basis van een key (handig voor caching)

Load balancers voeren ook health checks uit en verwijderen automatisch ongezonde servers uit de pool. In cloud-omgevingen handelen services zoals AWS ALB of Azure Front Door dit transparant af.

🧠Snelle check

Een social media feed service ontvangt 10x meer reads dan writes. Welke load balancing aanpak zorgt er het best voor dat gebruikers consistent dezelfde cache-warme server bereiken?

Caching: Snelheid op elke laag

Caching slaat veelgebruikte data op dichter bij de consument. Het bestaat op meerdere niveaus:

| Laag | Voorbeeld | Latency | |------|-----------|---------| | Browser cache | Statische assets, API responses | ~0ms | | CDN | Afbeeldingen, CSS, JS bestanden | ~10-50ms | | Application cache | Redis, Memcached | ~1-5ms | | Database cache | Query result cache | ~5-10ms |

Les 1 van 100% voltooid
←Terug naar programma

Discussion

Sign in to join the discussion

lessons.suggestEdit

Cache invalidation staat bekend als een van de moeilijkste problemen in de informatica. Veelgebruikte strategieën zijn TTL (time-to-live), write-through (cache bijwerken bij elke write) en cache-aside (applicatie beheert de cache expliciet).

🤯

Phil Karltons beroemde uitspraak - "Er zijn maar twee moeilijke dingen in Computer Science: cache invalidation en dingen een naam geven" - wordt zo vaak geciteerd dat het praktisch een rite de passage is in system design interviews.

Databases: SQL vs NoSQL

De juiste database kiezen is een van de meest impactvolle designbeslissingen:

SQL databases (PostgreSQL, MySQL) bieden ACID transactions, strong consistency en gestructureerde schemas. Ze excelleren wanneer data duidelijke relaties heeft en je complexe queries met joins nodig hebt.

NoSQL databases komen in verschillende varianten:

  • Document stores (MongoDB) - flexibele schemas, ideaal voor gevarieerde datastructuren
  • Key-value stores (DynamoDB, Redis) - razendsnelle lookups op key
  • Wide-column stores (Cassandra) - enorme write throughput, distributed by design
  • Graph databases (Neo4j) - data met veel relaties zoals sociale netwerken
🧠Snelle check

Je ontwerpt een systeem dat gebruikersprofielen opslaat met veelveranderende, semi-gestructureerde data (verschillende velden per gebruikerstype). Welk database type past het beste?

Message Queues: Asynchrone verwerking

Niet elke operatie vereist een onmiddellijk antwoord. Message queues (RabbitMQ, Apache Kafka, AWS SQS) ontkoppelen producers van consumers, wat het volgende mogelijk maakt:

  • Asynchrone verwerking - een e-mail versturen na registratie zonder de response te blokkeren
  • Load levelling - verkeerspieken opvangen door requests te bufferen
  • Fault tolerance - als een consumer crasht, wachten berichten in de queue

Kafka verdient speciale vermelding: het is niet zomaar een queue maar een distributed event log, dat event-driven architecturen mogelijk maakt waarin meerdere consumers onafhankelijk dezelfde stroom events kunnen verwerken.

Architecture diagram showing client, load balancer, application servers, cache layer, database, and message queue
De fundamentele bouwstenen van een schaalbaar systeem - elke laag richt zich op een specifiek aandachtspunt.

Microservices vs Monolith

| Aspect | Monolith | Microservices | |--------|----------|---------------| | Deployment | Enkele eenheid | Onafhankelijke services | | Scaling | Alles samen schalen | Individuele services schalen | | Complexiteit | Eenvoudiger om te beginnen | Operationele overhead | | Data | Gedeelde database | Database per service |

Begin met een monolith, extraheer microservices wanneer nodig. De meeste interviewers waarderen kandidaten die erkennen dat microservices complexiteit van gedistribueerde systemen met zich meebrengen (netwerkfouten, dataconsistentie, deployment-orchestratie) en niet altijd de juiste keuze zijn.

🤔
Think about it:

Netflix migreerde over meerdere jaren van een monolith naar microservices. Maar Shopify - dat miljarden aan transacties verwerkt - draait nog steeds een modulaire monolith. Welke factoren zouden de ene aanpak beter maken dan de andere voor een bepaald bedrijf?

CAP Theorem vereenvoudigd

Het CAP theorem stelt dat een gedistribueerd systeem slechts twee van de drie eigenschappen tegelijk kan garanderen:

  • Consistency - elke read retourneert de meest recente write
  • Availability - elke request krijgt een response
  • Partition tolerance - het systeem blijft werken ondanks netwerkfouten

Aangezien network partitions onvermijdelijk zijn in gedistribueerde systemen, is de echte keuze tussen CP (consistency boven availability) en AP (availability boven consistency).

  • CP systems (bijv. HBase, MongoDB met majority reads) - geven fouten terug in plaats van verouderde data
  • AP systems (bijv. Cassandra, DynamoDB) - reageren altijd, maar data kan licht verouderd zijn
🧠Snelle check

Je ontwerpt een banktransactiesysteem waarbij onjuiste saldi tot financieel verlies kunnen leiden. Welke CAP-afweging moet je prioriteren?

Het interviewframework

Volg bij een system design interview deze structuur:

  1. Requirements - verduidelijk functionele en niet-functionele eisen (5 min)
  2. API design - definieer de belangrijkste endpoints of interfaces (5 min)
  3. Data model - kies databases en definieer schemas (5 min)
  4. High-level architecture - schets het systeem met de bouwstenen van vandaag (10 min)
  5. Deep dives - schaal bottlenecks, behandel fouten, optimaliseer (15 min)
🤔
Think about it:

Denk aan een systeem dat je dagelijks gebruikt - Instagram, Uber of Spotify. Kun je identificeren welke bouwstenen uit deze les het waarschijnlijk gebruikt? Waar zou de load balancer zitten? Wat zou gecached worden? Welk database type past bij het datamodel?

Belangrijkste punten

  • Elk schaalbaar systeem gebruikt dezelfde kernbouwstenen - leer ze één keer, pas ze overal toe
  • Load balancers, caches en message queues lossen elk afzonderlijke schaalproblemen op
  • De keuze van database (SQL vs NoSQL) hangt af van de datavorm, consistency-behoeften en access patterns
  • Het CAP theorem dwingt afwegingen af - weet welke kant jouw systeem moet kiezen
  • Volg het gestructureerde interviewframework: requirements → API → data → architecture → deep dives

Volgende les: we passen deze fundamenten toe om een URL shortener vanaf nul te ontwerpen.