System design-interview: Ontwerp Twitter

"Ontwerp Twitter" is het klassieke feed-generatieprobleem. Het lijkt simpel — een tweet plaatsen, een tijdlijn lezen — maar het interessante deel is het genereren van de starttijdlijn van elke gebruiker op schaal, waarbij het juiste antwoord een hybride fan-out-strategie is. De interviewer wil zien dat je ontdekt dat beide naïeve benaderingen falen, en redeneert tot aan de mix.

Werk het doelbewust uit: verhelder de vereisten, schat de lees-/schrijfverhouding, ontwerp de tweetopslag, en dan de tijdlijn — vergelijk fan-out-on-write met fan-out-on-read en kom tot de hybride die het beroemdheden-probleem aanpakt. De onderstaande gids volgt dat pad.

1. Vereisten verhelderen

Beperk je tot het kernprobleem van de feed. Gebruikers plaatsen tweets, volgen anderen, en lezen een starttijdlijn die tweets van iedereen die ze volgen samenvoegt, nieuwste eerst.

  • Functioneel: een tweet plaatsen, volgen/ontvolgen, starttijdlijn (mensen die je volgt), gebruikerstijdlijn (één auteur); basiszoeken buiten scope tenzij gevraagd.
  • Niet-functioneel: zeer leeszwaar, tijdlijnleesacties met lage latentie, hoge beschikbaarheid; eventuele consistentie voor de tijdlijn is acceptabel.
  • Te verhelderen: media, antwoorden/threads en ranking — benoem ze, en bepaal een chronologische feed voor deze ronde.

2. Schaal en de lees-/schrijfverhouding inschatten

Deze verhouding stuurt het hele ontwerp. Leesacties overtreffen schrijfacties ruimschoots — gebruikers scrollen door hun tijdlijn veel vaker dan ze posten. Met honderden miljoenen gebruikers moet het systeem tijdlijnleesacties goedkoop maken, zelfs als dat schrijfacties duurder maakt. Die ene observatie wijst naar het voorberekenen van tijdlijnen.

3. Tweetopslag

Tweets zelf zijn eenvoudige, append-zware data. Sla ze op in een horizontaal gepartitioneerde opslag, gesleuteld op tweet-ID (met een tijd-sorteerbare ID zoals een Snowflake ID, zodat volgorde ingebakken is). Een afzonderlijke social-graph-opslag houdt follower-/following-relaties bij.

  • Tweets: gedistribueerde opslag, gesplitst op tweet-ID; tijd-sorteerbare ID's geven goedkope chronologische volgorde.
  • Social graph: wie-volgt-wie, geoptimaliseerd voor 'alle volgers van X ophalen' en 'alle gevolgden van X ophalen'.
  • Een cache (Redis) bevat hot data — recente tweets en voorberekende tijdlijnen.

4. Tijdlijngeneratie: fan-out bij schrijven vs lezen

Dit is de kern van het probleem. Fan-out-on-write (push) voegt elke nieuwe tweet op het moment van posten toe aan de voorberekende tijdlijnlijst van elke volger — tijdlijnleesacties worden een goedkope cache-lookup, maar een post van iemand met miljoenen volgers triggert miljoenen schrijfacties. Fan-out-on-read (pull) bouwt de tijdlijn op het moment van lezen door recente tweets van iedereen die je volgt samen te voegen — goedkope schrijfacties, maar duurdere, trage leesacties voor gebruikers die veel accounts volgen.

  • Fan-out-on-write: snelle leesacties, duurdere schrijfacties; geweldig voor normale gebruikers.
  • Fan-out-on-read: goedkope schrijfacties, duurdere leesacties; nodig voor accounts met enorme aantallen volgers.

5. Het beroemdheden-probleem en de hybride

Geen zuivere benadering wint, dus combineer ze. Gebruik fan-out-on-write voor de grote meerderheid van gebruikers, maar voor 'beroemdheden'-accounts met zeer grote aantallen volgers, fan-out je hun tweets NIET bij het schrijven. In plaats daarvan voeg je op het moment van lezen de voorberekende tijdlijn van een volger samen met een live pull van de paar beroemdheden die ze volgen. Dit beperkt de schrijfversterking terwijl leesacties snel blijven — het antwoord waar interviewers naar luisteren.

6. Trade-offs om te benoemen

Sluit af met de spanningen: schrijfversterking versus leeslatentie (de hele fan-out-beslissing), de opslagkosten van voorberekende tijdlijnen versus deze herberekenen, en consistentie — een vertraging van een paar seconden voordat een tweet in de tijdlijnen van volgers verschijnt is acceptabel, zodat eventuele consistentie je laat schalen. De drempel van de hybride expliciet benoemen (hoe je een 'beroemdheid' classificeert) toont senior inzicht.

Oefen het systeemontwerp van Twitter met realtime hulp

De system design-interviewassistent van Natively kan je gestructureerd houden tijdens een live ronde — door de volgende dimensie te suggereren en trade-offs in realtime te laten zien, allemaal op je eigen apparaat.

Put it on your own machine.

A live-conversation assistant that runs locally. Nothing leaves your machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Source-available under the Natively Personal Use Source License v1.0 · IP geolocation by DB-IP