>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Unknown

System Design Cheat Sheet met 28 Hoofdstukken voor Wie Niet Twee Delen van Alex Xu Wil Lezen

Ik herinner me een paar jaar geleden toen ik voor het eerst ging zitten om me voor te bereiden op een systeemdesign-interview. Je opent het populaire tweedelige boek van Alex Xu "System Design Interview" en beseft dat het bijna duizend pagina's telt. Je hebt meestal hooguit een week, hooguit twee, voor het interview, en je hoofd draait al van de overvloed aan diagrammen. En onlangs stuitte ik op de liquidslr/system-design-notes repository in mijn bladwijzers.

De auteur van het project heeft al het routinematige werk voor ons gedaan. Ze hebben beide delen van het boek genomen, onnodige ballast verwijderd en 28 onderwerpen georganiseerd met kant-en-klare architecturale oplossingen. Het project heeft inmiddels bijna 15.000 sterren verzameld op GitHub, en daar zijn duidelijke redenen voor.

Wat Zit Er In De Notities

Er zijn hier geen abstracte discussies over schone architectuur. De repository volgt strikt de structuur van de oorspronkelijke boeken en is verdeeld in twee grote groepen onderwerpen: basis bouwstenen en het ontwerpen van specifieke services.

Het eerste deel behandelt de basismechanica zonder welke het onmogelijk is om betrouwbare backends te ontwerpen:

  • Back-of-the-envelope estimatie. Het vermogen om inkomende RPS, schijfruimte voor terabytes aan logs en vereiste netwerkbandbreedte in een paar minuten te berekenen.
  • Rate limiting-algoritmen voor het beschermen van publieke API's tegen overbelasting en spam.
  • Consistent hashing, wat de dag redt bij dynamisch sharden van databases en het balanceren van cache.
  • Unieke ID's genereren in een gedistribueerde omgeving zonder locks, zoals Twitter's Snowflake of Flickr's ticket servers.

De tweede groep onderwerpen is gewijd aan het analyseren van volwaardige services. De auteur breekt taken af die het meest voorkomen in big tech interviews:

  • URL shortener service-architectuur met hash collision-berekeningen.
  • Schaalbare chat op het niveau van Slack of Discord met persistente WebSocket-verbindingen.
  • Videohosting zoals YouTube met een asynchroon transcoding-pipeline voor verschillende resoluties.
  • Payment gateways en digitale wallets, waar operation idempotency en two-phase commit kritiek belangrijk zijn.

Echte Engineering-Artikelen In Plaats Van Droge Theorie

Het grootste voordeel van de repository is niet eens de beknopte hervertelling van hoofdstukken. Aan het einde van de README heeft de auteur links verzameld naar originele technische artikelen en papers van Discord-, Uber-, Netflix- en Amazon-teams.

Boekdiagrammen zien er vaak steriel uit. Op papier werken alle componenten perfect, queues falen nooit en databasereplica's synchroniseren instant. Echte productie is anders.

Wanneer je het hoofdstuk over messaging systems leest, kun je direct het artikel van Discord-engineers openen over hoe ze miljarden berichten opsloegen en waarom ze aanvankelijk voor Cassandra kozen, later de opslag herschrijvend naar Rust en ScyllaDB. Er is ook een artikel over Flannel-architectuur door het Slack-team, dat uitlegt hoe de application-level cache op de netwerk-edge werkt.

De sectie over zoeken en autocomplete bevat een link naar Prefixy en materiaal over Prefix Hash Tree. Voor degenen die zich verdiepen in gedistribueerde data-opslag zijn originele papers over Google BigTable en Amazon Dynamo DB verzameld.

Deze aanpak verbindt boektheorie met echte ervaringen van grote bedrijven.

Hoe Deze Notities Te Lezen En Te Gebruiken

Materiaal is beschikbaar in twee formaten. Je kunt de folders direct in de GitHub-repository bestuderen, of de webversie openen via Pagefy, met een link helemaal aan het begin van de README. De tweede optie is handiger voor lezen op een smartphone of tablet onderweg.

In elke folder vind je:

  • Probleemstelling met functionele en niet-functionele vereisten.
  • High-level component diagram (load balancers, caches, databases, queues).
  • Gedetailleerde analyse van architecturale bottlenecks en manieren om ze te schalen.
  • Eindconclusies en trade-offs van de gekozen oplossing.

Er wordt hier geen code geschreven; de focus ligt specifiek op data flow logica, communicatieprotocollen en het kiezen van opslagtypen voor verschillende workload-patronen.

Dat gezegd hebbende, de repository heeft een nuance: het project is nog steeds gemarkeerd als work in progress. Sommige hoofdstukken zijn gedetailleerd opgemaakt, met formules en netjes diagrammen, terwijl sommige hoofdstukken momenteel alleen beknopte outlines hebben. De auteur werkt de content af en toe bij, maar voor een serieus interview kun je het beste de genoemde artikelen van engineering blogs extra controleren.

Voor Wie Het Project Tijd Zal Besparen

Als je je voorbereidt op een baanwissel naar een Middle+ of Senior niveau, zal deze repository je tientallen uren besparen.

De notities zijn ook nuttig voor degenen die:

  • Een nieuwe service op het werk ontwerpen en kiezen tussen SQL, NoSQL en key-value opslag.
  • De details willen begrijpen van hoe geo services werken (zoals het vinden van nabije objecten of vrienden op een kaart) via GeoHash en QuadTree.
  • Integraties met betaalsystemen schrijven en dubbele kosten tijdens netwerkstoringen willen voorkomen.
  • Moe zijn van typische taken en hun begrip van gedistribueerde systemen in het algemeen willen verbeteren.

Als de tijd krap is, raad ik aan om te beginnen met de eerste drie onderwerpen: schalen van nul naar miljoenen gebruikers, snelle back-of-the-envelope berekeningen, en een stapsgewijs framework voor het beantwoorden van systeemdesign-interviewvragen. Dit creëert een solide fundament waarop je vervolgens elk gespecialiseerd scenario kunt leggen.

Gerelateerde projecten