System Design
System design é a habilidade de transformar uma necessidade (“10 milhões de pessoas usando ao mesmo tempo, sem cair”) em uma arquitetura: quais componentes, como os dados fluem, quais trade-offs são aceitáveis.
Livros
- Designing Data-Intensive Applications (Martin Kleppmann) — o fundamento. Explica o que acontece dentro de bancos, filas e sistemas distribuídos, e por que eles falham do jeito que falham.
- System Design Interview (Alex Xu) — a prática. Um método de 4 passos e dezenas de problemas clássicos resolvidos passo a passo.
Leia o Kleppmann primeiro se quiser entender; o Alex Xu primeiro se precisar projetar algo na semana que vem. No guia principal, esta área corresponde aos módulos 5 a 9 de Fundamentos de Software Engineering.