System Design Interview — guia de leitura

Em uma frase

Projetar um sistema é um processo repetível: entender o escopo, propor um desenho de alto nível, aprofundar onde dói e fechar com os trade-offs; o livro treina esse processo em dezenas de problemas.

Para quem é e quando ler

Os dois volumes de System Design Interview: An Insider’s Guide, de Alex Xu (o volume 2 com Sahn Lam), foram escritos para quem vai encarar a entrevista de system design, a etapa em que pedem para você desenhar um sistema inteiro (um encurtador de URL, um chat) em cerca de 45 minutos. Mas servem bem além disso: para o dev júnior ou pleno que quer entender como as peças de um sistema grande se encaixam e por que cada uma existe.

Leia depois de ter alguma experiência construindo uma aplicação web com banco de dados. Não é preciso ter operado sistemas distribuídos; o livro parte do servidor único. Se você quiser entender por que as técnicas funcionam (como a replicação garante consistência, o que exatamente um quorum promete), leia em paralelo ou depois o Designing Data-Intensive Applications, que é o aprofundamento teórico deste.

O que o livro NÃO é

  • Não é um livro de teoria de sistemas distribuídos. Ele apresenta técnicas (consistent hashing, vector clocks, gossip) em poucas páginas cada, o suficiente para usar num desenho, não para implementar ou provar.
  • Não é uma coleção de “respostas certas”. Cada problema mostra uma solução razoável. O valor está no raciocínio, e decorar desenhos é a forma mais rápida de travar quando um requisito muda.
  • Não é atual em tudo. Alguns números (latências, preços) e produtos citados envelheceram; as páginas deste guia avisam onde isso importa.

Como o livro está organizado

Os três primeiros capítulos do volume 1 são a base: o vocabulário de escala, as contas de ordem de grandeza e o método de 4 passos. Todo o resto são problemas, cada um resolvido com o mesmo método. Este guia reordena a base para começar pelo método e cobre os dez primeiros problemas do volume 1; os demais estão na lista do fim.

flowchart TB
    M["1 · Método de 4 passos"] --> E["2 · Escalar de zero a milhões"]
    E --> N["3 · Estimativas"]
    N --> RL["P1. Rate limiter"]
    N --> CH["P2. Consistent hashing"]
    CH --> KV["P3. Key-value store"]
    N --> ID["P4. Gerador de IDs únicos"]
    ID --> URL["P5. Encurtador de URL"]
    N --> WC["P6. Web crawler"]
    N --> NT["P7. Notificações"]
    NT --> NF["P8. News feed"]
    NF --> CT["P9. Chat"]
    N --> AC["P10. Autocomplete de busca"]
    CT -.-> V["Demais problemas dos dois volumes"]
    KV -.-> V

As setas indicam “ajuda ter lido antes”: o key-value store usa consistent hashing; o encurtador de URL usa o gerador de IDs; o news feed e o chat reaproveitam ideias de notificações (fila, entrega assíncrona, conexões com o cliente).

Como ler

  1. Leia as três páginas de base em ordem. Elas dão o vocabulário de todas as outras.
  2. Nos problemas, siga a ordem numérica na primeira leitura, porque a dificuldade cresce e cada um reaproveita ideias dos anteriores.
  3. Antes de ler cada problema, tente resolvê-lo. Dê a si mesmo 20 minutos e um papel: escreva requisitos, desenhe o alto nível, escolha onde aprofundar. Depois compare com a página. É o jeito de treinar o método, não só de conhecer a resposta.
  4. Ritmo: uma página por sessão de estudo é suficiente. Na primeira passada, pode pular os detalhes de algoritmos (vector clocks, Merkle trees) e voltar a eles depois.

O que você leva ao terminar

  • Um roteiro para atacar qualquer problema de design, em entrevista ou no trabalho.
  • O vocabulário de componentes de sistemas grandes (balanceador, cache, CDN, réplica, shard, fila) e o problema que cada um resolve.
  • Contas de ordem de grandeza para decidir se algo cabe numa máquina ou exige uma frota.
  • Dez desenhos clássicos com seus pontos difíceis e trade-offs, que se combinam para resolver problemas novos.

Capítulos

Base

Problemas

Os demais problemas dos dois volumes

Os problemas abaixo não viraram página neste guia. Cada link leva às notas públicas do capítulo no repositório booknotes, listado em fontes (o repositório numera os capítulos com um a mais que o livro impresso); o repositório system-design-notes, também listado lá, tem uma pasta por problema com os mesmos nomes.

Volume 1:

  • YouTube (cap. 14): upload, transcodificação e streaming de vídeo com CDN.
  • Google Drive (cap. 15): armazenamento e sincronização de arquivos entre dispositivos, com blocos e conflitos.

Volume 2:

Fontes públicas para acompanhar

Todas as fontes verificadas estão em fontes.md: notas por capítulo dos dois volumes, o capítulo 1 gratuito publicado pelo autor e o system-design-primer como referência complementar.