Lista de leitura
Os livros, artigos, blogs e cursos por trás deste curso. Você não precisa ler tudo: cada item tem uma linha sobre por que vale o seu tempo e a aula que ele apoia, para você escolher o que combina com o assunto que está estudando. Comece pelos cinco primeiros. A maior parte do material está em inglês, a língua de trabalho da área.
Comece aqui: os cinco primeiros
- Designing Data-Intensive Applications (Kleppmann e Riccomini) — os capítulos sobre replicação, particionamento, transações e consistência. A base das aulas 3, 6 e 8.
- System Design Interview, vol. 1 (Alex Xu) — leia um capítulo por semana junto com os estudos de caso para ver o formato da entrevista de ponta a ponta.
- "The Tail at Scale" (Dean e Barroso, 2013) — seis páginas que explicam por que o p99 importa mais que a média. Leia com a Aula 2 · Percentis.
- Site Reliability Engineering, capítulos sobre SLOs, monitoramento e sobrecarga (gratuito online) — a metade "rodando em produção" do system design.
- Os artigos da Amazon Builders' Library sobre timeouts, retries, backoff e jitter — curtos, práticos e exatamente o que a Aula 10 e o Hands-on 9 transformam em código.
Livros
| Livro | Autores | Por que ler | Apoia |
|---|---|---|---|
| Designing Data-Intensive Applications, 2ª ed. | Martin Kleppmann, Chris Riccomini | A explicação mais clara de replicação, particionamento, transações, consistência e streams, a partir dos princípios | 3, 6, 8 |
| System Design Interview, vol. 1 e vol. 2 | Alex Xu (vol. 2 com Sahn Lam) | Problemas clássicos de entrevista resolvidos passo a passo, com estimativas e diagramas | 1, 15 |
| Site Reliability Engineering e The Site Reliability Workbook | Google (Beyer, Jones, Petoff, Murphy, orgs.) | SLOs, orçamentos de erros, alertas, sobrecarga e resposta a incidentes como praticados no Google; gratuitos online | 9, 10 |
| Release It!, 2ª ed. | Michael T. Nygard | Padrões de estabilidade (timeouts, circuit breakers, bulkheads) e antipadrões, contados por meio de quedas reais | 9 |
| Building Microservices, 2ª ed. | Sam Newman | Quando dividir um monolito, fronteiras de serviços, estilos de comunicação e os custos dos microsserviços | 5 |
| Fundamentals of Software Architecture | Mark Richards, Neal Ford | Características de arquitetura ("-idades"), estilos e como raciocinar sobre trade-offs | 1, 5 |
| Software Architecture: The Hard Parts | Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani | Decompor serviços e dados, transações distribuídas e sagas, tudo como análise de trade-offs | 5, 8 |
| Understanding Distributed Systems | Roberto Vitillo | Um passeio curto e acessível por comunicação, coordenação, escalabilidade e resiliência | 3, 4 |
| Database Internals | Alex Petrov | Como os motores de armazenamento (B-trees, LSM-trees) e os bancos distribuídos funcionam por dentro | 6 |
| Systems Performance, 2ª ed. | Brendan Gregg | Metodologia de desempenho (método USE), ferramentas de observabilidade e profiling no Linux | 14 |
| Observability Engineering | Charity Majors, Liz Fong-Jones, George Miranda | Por que eventos de alta cardinalidade e traces valem mais que dashboards de médias; alertas baseados em SLO | 10 |
| Kubernetes: Up and Running | Brendan Burns, Joe Beda, Kelsey Hightower, Lachlan Evenson | Os objetos centrais do Kubernetes explicados por quem o construiu | 12 |
| AI Engineering | Chip Huyen | Construir aplicações sobre modelos de fundação: avaliação, RAG, agentes, latência e custo | 13 |
| Cracking the Coding Interview, 6ª ed. | Gayle Laakmann McDowell | O processo de entrevistas em geral; seu capítulo sobre escalabilidade inspirou os princípios de "como responder" | Apoio › Entrevista |
Artigos clássicos
Artigos são mais curtos que livros e muitas vezes mais claros: foram escritos para convencer especialistas céticos. Leia primeiro o resumo, a introdução e as figuras.
| Artigo | Autores, veículo, ano | Por que ler | Apoia |
|---|---|---|---|
| Time, Clocks, and the Ordering of Events in a Distributed System | Leslie Lamport, Communications of the ACM, 1978 | Introduz a relação "aconteceu antes" e os relógios lógicos: por que "o que aconteceu primeiro" é difícil | 3 · Tempo e relógios |
| Paxos Made Simple | Leslie Lamport, ACM SIGACT News, 2001 | O algoritmo de consenso por trás de décadas de sistemas, em poucas páginas | 3 · Consenso |
| Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services | Seth Gilbert, Nancy Lynch, ACM SIGACT News, 2002 | A prova formal do teorema CAP que Eric Brewer conjecturou na sua palestra no PODC 2000 | 3 · CAP e PACELC |
| The Google File System | Ghemawat, Gobioff, Leung, SOSP 2003 | Projetar armazenamento para máquinas comuns que falham o tempo todo | 6 |
| MapReduce: Simplified Data Processing on Large Clusters | Jeffrey Dean, Sanjay Ghemawat, OSDI 2004 | O modelo de programação que tornou acessível o processamento em lote em grande escala | 6 · Especializados |
| Bigtable: A Distributed Storage System for Structured Data | Chang et al., OSDI 2006 | O modelo de colunas largas por trás do HBase e do modelo de dados do Cassandra | 6 · Modelos |
| The Chubby Lock Service for Loosely-Coupled Distributed Systems | Mike Burrows, OSDI 2006 | Locks de granularidade grossa e eleição de líder como serviço | 5 · Trabalho assíncrono |
| Dynamo: Amazon's Highly Available Key-value Store | DeCandia et al., SOSP 2007 (allthingsdistributed.com) | Hashing consistente, quóruns, hinted handoff e relógios vetoriais num único sistema em produção | 3, 6 · Particionamento |
| ZooKeeper: Wait-free Coordination for Internet-scale Systems | Hunt, Konar, Junqueira, Reed, USENIX ATC 2010 | Um serviço de coordenação do qual muitos sistemas (inclusive o Kafka antigo) dependiam | 3 · Consenso |
| Kafka: a Distributed Messaging System for Log Processing | Jay Kreps, Neha Narkhede, Jun Rao, NetDB 2011 | O design original do broker baseado em log usado ao longo do curso | 8 · Kafka |
| Spanner: Google's Globally-Distributed Database | Corbett et al., OSDI 2012 | Transações com consistência externa no planeta inteiro, usando o TrueTime | 6 · Replicação, 3 |
| Consistency Tradeoffs in Modern Distributed Database System Design | Daniel Abadi, IEEE Computer, 2012 | Introduz o PACELC: o trade-off entre latência e consistência que existe mesmo sem partições | 3 · CAP e PACELC |
| The Tail at Scale | Jeffrey Dean, Luiz André Barroso, Communications of the ACM, 2013 | Por que a latência de cauda domina sistemas com fan-out, e técnicas como hedged requests | 2 · Percentis |
| Scaling Memcache at Facebook | Nishtala et al., NSDI 2013 | Cache em escala enorme: leases contra stampedes, pools regionais, invalidação | 7 |
| TAO: Facebook's Distributed Data Store for the Social Graph | Bronson et al., USENIX ATC 2013 | Um cache de grafo otimizado para leitura na frente do MySQL, atendendo bilhões de leituras por segundo | 7, 15 |
| In Search of an Understandable Consensus Algorithm (Raft) | Diego Ongaro, John Ousterhout, USENIX ATC 2014 (raft.github.io) | Consenso projetado para ser entendido: eleição de líder e replicação do log | 3 · Consenso |
| Large-scale Cluster Management at Google with Borg | Verma et al., EuroSys 2015 | O ancestral do Kubernetes: escalonamento, empacotamento e lições aprendidas | 12 · Kubernetes |
| Attention Is All You Need | Vaswani et al., NeurIPS 2017 | A arquitetura transformer por trás dos LLMs de hoje; leia pelo contexto, não pela matemática | 13 |
| Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks | Lewis et al., NeurIPS 2020 | O artigo que deu nome ao RAG: combinar um recuperador com um gerador | 13 · RAG e memória |
| ReAct: Synergizing Reasoning and Acting in Language Models | Yao et al., ICLR 2023 | O loop raciocinar-agir-observar que a maioria dos frameworks de agentes implementa | 13 · Agentes |
Blogs de engenharia
Sistemas reais, quedas reais, trade-offs reais. Procure neles o assunto da semana.
| Blog | Por que ler | Apoia |
|---|---|---|
| The Amazon Builders' Library | Como a Amazon constrói e opera serviços: timeouts e retries, descarte de carga, cache, deploys | 9, 12 |
| AWS Architecture Blog | Arquiteturas de referência e padrões na AWS | 12 |
| Google Cloud Architecture Center | Arquiteturas de referência, inclusive para sistemas de IA e de dados | 12, 13 |
| Netflix Tech Blog | Engenharia do caos, resiliência, entrega de vídeo e microsserviços em grande escala | 9, 15 |
| Meta Engineering | Cache, infraestrutura de dados e confiabilidade na escala de bilhões de usuários | 6, 7 |
| Uber Engineering | Indexação geoespacial, despacho em tempo real e grandes arquiteturas de microsserviços | 15 |
| Discord Engineering | Guardar trilhões de mensagens, fan-out em tempo real, migrações de banco contadas em detalhe | 6, 15 |
| The Cloudflare Blog | DNS, CDN, mitigação de DDoS e post-mortems honestos de quedas globais | 4, 10 |
| Stripe Engineering | Idempotência, design de APIs e confiabilidade em pagamentos | 5 · Integrações |
| Shopify Engineering | Sobreviver a vendas relâmpago (Black Friday) com um monolito modular | 5, 14 |
| Slack Engineering | Infraestrutura de mensagens em tempo real e relatos de incidentes | 8, 10 |
| Blog de Marc Brooker | Ensaios curtos e rigorosos sobre retries, filas, latência de cauda e sistemas distribuídos | 2, 9 |
| Martin Fowler | Padrões de sistemas distribuídos e de arquitetura corporativa, trade-offs de microsserviços | 5, 8 |
| Brendan Gregg | Metodologia de desempenho, flame graphs e observabilidade no Linux | 14 |
| Jepsen | Análises independentes do que os bancos distribuídos realmente garantem sob falhas | 3 · Consistência |
| High Scalability | Coleção antiga de estudos de caso de arquitetura | 15 |
| ByteByteGo | Explicações visuais, voltadas a entrevistas, de temas de system design | Apoio › Entrevista |
Cursos e recursos gratuitos
| Recurso | Por que usar | Apoia |
|---|---|---|
| MIT 6.5840 Distributed Systems | Aulas, leituras de artigos e laboratórios (Raft, um armazenamento chave-valor particionado) de um dos melhores cursos de sistemas distribuídos | 3 |
| The System Design Primer | Guia de estudo gratuito e organizado, com tópicos, flashcards e problemas resolvidos | Apoio › Entrevista |
| AWS Well-Architected Framework | Seis pilares e perguntas de revisão concretas para fazer a qualquer design | 1, 12 |
| Azure Architecture Center | Catálogo de padrões de design em nuvem (retry, circuit breaker, CQRS, saga…) com diagramas claros | 8, 9 |
| Recursos de SRE do Google | Os livros de SRE e artigos sobre SLOs e resposta a incidentes | 9, 10 |
| CNCF Landscape | Mapa do ecossistema cloud-native: onde cada ferramenta se encaixa | 12 |
| Documentação do OpenTelemetry | Conceitos e guias por linguagem para métricas, logs e traces | 10 · OpenTelemetry |
| Documentação do Kubernetes | A seção de conceitos é um excelente livro-texto gratuito | 12 · Kubernetes |
| Latency numbers every programmer should know | A tabela clássica por trás de toda estimativa | 2 · Números, Referência › Números |
Como ler um artigo em 30 minutos
Leia o título, o resumo e a conclusão; olhe todas as figuras e tabelas; depois leia a introdução e a seção de design. Pule os detalhes da avaliação na primeira passada. Escreva três linhas: o problema, a ideia central e o trade-off que os autores aceitaram. É essa terceira linha que você vai usar numa entrevista.