>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Unknown

Roteiro de System Design com 28 Capítulos para Quem Não Quer Ler Dois Volumes de Alex Xu

Lembro que há alguns anos, quando me sentei pela primeira vez para me preparar para uma entrevista de system design. Você abre o popular livro de dois volumes de Alex Xu "System Design Interview" e percebe que ele tem quase mil páginas. Você geralmente tem uma semana, no máximo duas, antes da entrevista, e sua cabeça já está girando com a abundância de diagramas. E recentemente, encontrei o repositório liquidslr/system-design-notes nos meus favoritos.

O autor do projeto fez todo o trabalho rotineiro para nós. Eles pegaram ambas as partes do livro, removeram o conteúdo desnecessário e organizaram 28 tópicos com soluções arquiteturais prontas. O projeto já reuniu quase 15.000 estrelas no GitHub, e há razões claras para isso.

O Que Tem Dentro do Conspecto

Não há discussões abstratas sobre clean architecture aqui. O repositório segue estritamente a estrutura dos livros originais e é dividido em dois grandes grupos de tópicos: blocos de construção básicos e design de serviços específicos.

A primeira parte cobre a mecânica básica sem a qual é impossível projetar qualquer backend confiável:

  • Estimativas aproximadas. A capacidade de calcular RPS de entrada, espaço em disco para terabytes de logs e largura de banda de rede necessária em poucos minutos.
  • Algoritmos de rate limiting para proteger APIs públicas de sobrecargas e spam.
  • Consistent hashing, que salva o dia ao fazer sharding dinâmico de bancos de dados e balanceamento de cache.
  • Gerando IDs únicos em ambiente distribuído sem bloqueios, como o Snowflake do Twitter ou os servidores de tickets do Flickr.

O segundo grupo de tópicos é dedicado à análise de serviços completos. O autor detalha tarefas mais comumente vistas em entrevistas de big tech:

  • Arquitetura de serviço de encurtador de URLs com cálculos de colisão de hash.
  • Chat escalável no nível do Slack ou Discord com conexões WebSocket persistentes.
  • Hospedagem de vídeos como o YouTube com pipeline assíncrono de transcodificação para diferentes resoluções.
  • Gateways de pagamento e carteiras digitais, onde idempotência de operações e commit em duas fases são criticamente importantes.

Artigos de Engenharia Reais em Vez de Teoria Seca

A principal vantagem do repositório nem é o resumo condensado dos capítulos. No final do README, o autor coletou links para artigos técnicos originais e papers das equipes do Discord, Uber, Netflix e Amazon.

Diagramas de livros frequentemente parecem estéreis. No papel, todos os componentes funcionam perfeitamente, filas nunca falham e réplicas de banco de dados sincronizam instantaneamente. A produção real é diferente.

Quando você lê o capítulo sobre sistemas de mensagens, pode imediatamente abrir o artigo dos engenheiros do Discord sobre como eles armazenaram bilhões de mensagens e por que inicialmente escolheram Cassandra, depois reescrevendo o armazenamento para Rust e ScyllaDB. Há também um artigo sobre arquitetura do Flannel pela equipe do Slack, explicando como o cache no nível da aplicação funciona na borda da rede.

A seção sobre busca e autocomplete inclui um link para o Prefixy e materiais sobre Prefix Hash Tree. Para quem está mergulhando em armazenamento de dados distribuído, papers originais sobre Google BigTable e Amazon Dynamo DB estão coletados.

Essa abordagem conecta a teoria do livro com a experiência real de grandes empresas.

Como Ler e Usar Essas Anotações

Os materiais estão disponíveis em dois formatos. Você pode estudar as pastas diretamente no repositório do GitHub, ou abrir a versão web via Pagefy, com um link no início do README. A segunda opção é mais conveniente para leitura em smartphone ou tablet em movimento.

Em cada pasta, você encontrará:

  • Declaração do problema com requisitos funcionais e não-funcionais.
  • Diagrama de componentes de alto nível (balanceadores de carga, caches, bancos de dados, filas).
  • Análise detalhada de gargalos arquiteturais e formas de escalá-los.
  • Conclusões finais e trade-offs da solução escolhida.

Nenhum código é escrito aqui; o foco é especificamente na lógica de fluxo de dados, protocolos de comunicação e escolha de tipos de armazenamento para diferentes padrões de workload.

Dito isso, o repositório tem uma nuance: o projeto ainda está marcado como trabalho em progresso. Alguns capítulos estão formatados em detalhes, com fórmulas e diagramas elegantes, enquanto alguns capítulos atualmente só têm esboços breves. O autor atualiza o conteúdo de vez em quando, mas antes de uma entrevista séria, é melhor verificar adicionalmente os artigos mencionados dos blogs de engenharia.

Para Quem o Projeto Vai Economizar Tempo

Se você está se preparando para uma mudança de emprego para uma posição de nível Middle+ ou Sênior, este repositório vai te economizar dezenas de horas.

As anotações também serão úteis para quem:

  • Está projetando um novo serviço no trabalho e escolhendo entre SQL, NoSQL e armazenamento key-value.
  • Quer entender os detalhes de como serviços de geolocalização funcionam (como encontrar objetos próximos ou amigos no mapa) através de GeoHash e QuadTree.
  • Está escrevendo integrações com sistemas de pagamento e quer evitar cobranças duplicadas durante falhas de rede.
  • Está cansado de tarefas típicas e quer melhorar seu entendimento de sistemas distribuídos em geral.

Se o tempo está curto, recomendo começar com os três primeiros tópicos: escalando de zero a milhões de usuários, cálculos rápidos de estimativas aproximadas e um framework passo a passo para responder perguntas de entrevista de system design. Isso vai criar uma base sólida sobre a qual você pode então sobrepor quaisquer cenários especializados.

Projetos relacionados