Roadmap de System Design
Este é um guia de tópicos para estudar e para conduzir um design de sistema do começo ao fim, organizado em dez áreas na ordem em que elas costumam aparecer: primeiro entender o que o sistema faz e quem o usa, depois modelar os dados, expor APIs, dimensionar servidores, aproximar do usuário, proteger contra falhas, acelerar com cache e desacoplar com mensageria.
Cada tópico aponta para a nota deste lab que o explica. Quando o tópico ainda não tem nota própria, aparece como “Em breve”. Para a ordem de raciocínio de um design completo, veja Como Estruturar um System Design.
01. Features
Seção intitulada “01. Features”O que o sistema precisa fazer, e sob quais condições. É a área que define o peso de todas as outras.
| Tópico | Onde estudar |
|---|---|
| Requisitos funcionais | System Design: Fundamentos |
| Requisitos não funcionais | System Design: Fundamentos |
| Trade-offs (consistency vs availability) | Trade-offs Arquiteturais e Teorema de CAP |
| Constraints (ex: baixa latência) | Latência, Throughput e Performance |
| Read-heavy vs write-heavy | Stateless, Particionamento e Sharding |
02. Usuários
Seção intitulada “02. Usuários”Quem usa o sistema, quando e com que frequência. Esses números viram a carga que o sistema precisa aguentar.
| Tópico | Onde estudar |
|---|---|
| Tipos de usuário, roles e demografia | Em breve |
| Picos (horário do dia, dias do ano) | Capacity Planning e Capacity Math |
| Frequência de uso e duração média | Capacity Planning e Capacity Math |
| Web vs mobile | API Gateway (BFF por tipo de cliente) |
03. Modelo de dados
Seção intitulada “03. Modelo de dados”Como os dados são organizados, armazenados e escalados.
| Tópico | Onde estudar |
|---|---|
| Relacional: ACID e indexação | ACID e Índices e Planos de Execução |
| Relacional: normalização | Normalização de Banco de Dados |
| NoSQL (document, column-oriented, key-value, graph) | NoSQL |
| Armazenamento distribuído (S3, blob storage) | Categorias de Serviço em Nuvem (object storage). HDFS ainda não tem nota própria |
| Escala horizontal vs sharding | Escalabilidade e Stateless, Particionamento e Sharding |
| Write master + read replicas | Replicação e Escalabilidade do Banco de Dados |
| Spark (consulta distribuída) | Em breve |
Para escolher entre as opções acima num caso real, veja também Escolha de Banco de Dados na Prática.
04. APIs e segurança
Seção intitulada “04. APIs e segurança”Como o sistema conversa com o mundo e como se protege.
| Tópico | Onde estudar |
|---|---|
| SOAP | Classificação de APIs por Público |
| REST | HTTP, APIs e REST |
| gRPC e GraphQL | Estilos de Comunicação de API |
| Rate limiting | Rate Limiting |
| Ataques: DoS e MITM | Segurança e Evolução de APIs (Ameaças comuns) |
| Ataques: DDoS e XSS | Em breve |
| Autenticação vs autorização, JWT | Segurança e Evolução de APIs e SSO, OAuth 2.0, OIDC e SAML |
| TLS/HTTPS e certificados | Segurança e Evolução de APIs (HTTPS e mTLS) |
| CRUD e métodos HTTP | HTTP, APIs e REST |
| Paginação | Paginação |
05. Capacidade do servidor
Seção intitulada “05. Capacidade do servidor”Quanto cada máquina aguenta e quando é hora de escalar.
| Tópico | Onde estudar |
|---|---|
| CPU, RAM e storage | Capacity Planning e Capacity Math |
| Escala vertical | Escalabilidade |
| Requests por segundo e QPS | Capacity Planning e Capacity Math |
| Largura de banda de rede | Capacity Planning e Capacity Math |
| Paralelização e threads | Em breve |
06. Geografia e latência
Seção intitulada “06. Geografia e latência”Onde o sistema roda em relação a quem o usa, e o que a distância custa.
| Tópico | Onde estudar |
|---|---|
| Regiões | Disponibilidade (multi-região e disaster recovery) |
| CDN | CDN |
| Distância e RTT | CDN e Latência, Throughput e Performance |
| Latência de rede | Latência, Throughput e Performance |
07. Proxies
Seção intitulada “07. Proxies”O que fica entre o cliente e os servidores.
| Tópico | Onde estudar |
|---|---|
| Reverse proxy (API Gateway, application gateway) | Reverse Proxy, API Gateway |
| Forward proxy | Em breve |
| Load balancers e estratégias | Load Balancer |
| Layer 4 vs layer 7 | Load Balancer |
08. Disponibilidade e microsserviços
Seção intitulada “08. Disponibilidade e microsserviços”Como o sistema continua de pé quando algo falha. A arquitetura de microsserviços em si está na seção Microsserviços.
| Tópico | Onde estudar |
|---|---|
| Redundância | Disponibilidade |
| Tolerância a falhas e circuit breakers | Timeout, Retry, Circuit Breaker e Bulkhead |
| Eleição de líder | Eleição de Líder |
| Orquestração de containers | Kubernetes |
| Observabilidade (logs, métricas, tracing distribuído, alertas) | Observabilidade: Logs, Metrics e Traces e Ferramentas de Observabilidade |
09. Cache
Seção intitulada “09. Cache”Como evitar trabalho repetido e proteger o banco.
| Tópico | Onde estudar |
|---|---|
| Write-through e write-behind | Cache e Redis (Estratégias de cache) |
| Algoritmos de hash | Consistent Hashing e Gossip |
| Políticas de eviction (LRU e outras) | Cache e Redis (Políticas de eviction) |
| Cache hit e miss | Cache e Redis |
10. Mensageria
Seção intitulada “10. Mensageria”Como partes do sistema se comunicam sem esperar umas pelas outras.
| Tópico | Onde estudar |
|---|---|
| TCP vs UDP | Em breve |
| Síncrono vs assíncrono | Comunicação entre Serviços e Filas e Mensageria |
| Filas (FIFO, ordenação) | Filas e Mensageria e Garantias de Entrega |
| Pull vs push | Kafka (consumer com poll) e RabbitMQ (entrega push-based) |
| WebSockets | Estilos de Comunicação de API |
| Publish-subscribe | Arquitetura Orientada a Eventos |
Por onde começar em cada problema
Seção intitulada “Por onde começar em cada problema”Decorar dezenas de conceitos não ajuda quando aparece um problema novo. O caminho é outro: entender o problema, reconhecer qual das áreas abaixo ele toca, escolher o conceito certo e raciocinar sobre os trade-offs da escolha. A tabela reúne as mesmas áreas por tipo de dor, para você saber em qual nota começar.
| Se o problema é… | Comece por | Notas do lab |
|---|---|---|
| Muita carga ou risco de queda | Escalabilidade e confiabilidade | Load Balancer, Cache e Redis, Replicação de Banco de Dados, Stateless e Particionamento, Rate Limiting, Timeout, Retry, Circuit Breaker e Bulkhead |
| Como as partes conversam | Rede e comunicação | HTTP, APIs e REST, Estilos de Comunicação de API, Filas e Mensageria, Arquitetura Orientada a Eventos |
| Onde e como guardar os dados | Dados e sistemas distribuídos | SQL, NoSQL, Índices e Planos de Execução, ACID, Teorema de CAP |
| Quem pode acessar e como enxergar o que acontece | Segurança e observabilidade | Segurança e Evolução de APIs, SSO, OAuth 2.0, OIDC e SAML, Logs, Metrics e Traces |
| Como organizar o código e os serviços | Arquitetura e design de API | Fundamentos de Microsserviços, API Gateway, Service Discovery |
| Como colocar no ar e recuperar | Infraestrutura e deployment | CI/CD para Microsserviços, Infraestrutura como Código, Docker, Kubernetes, Categorias de Serviço em Nuvem, Disponibilidade e Disaster Recovery |
Ordem de grandeza. Guarde a escala do sistema em potências de 10 (10⁶ usuários, 10⁹ requisições por dia): é esse número que indica se uma arquitetura simples basta ou se precisa de cache, sharding e filas. O passo a passo dessas contas está em Capacity Planning e Capacity Math.
Componentes interligados. As dez áreas não são independentes: a decisão em uma muda a pressão sobre as outras. Um pico de usuários vira QPS nos servidores, que vira leitura no cache e no banco, e o que o cache não segura vira fila na mensageria. O diagrama mostra como elas se conectam, e a arquitetura completa está em Arquitetura de uma Aplicação Distribuída.
flowchart TB
F[Features: requisitos, trade-offs, restrições] -.define a escala.-> U
U[Usuários: perfis, picos, plataforma] --> G[Geografia e latência: regiões, CDN]
G --> P[Proxies: gateway e load balancer]
P --> A[APIs e segurança]
A --> S[Servidores: CPU, RAM, QPS]
S --> C[Cache]
C --> D[(Modelo de dados)]
S --> M[Mensageria]
M --> D
V[Disponibilidade e observabilidade] -.cobre todos os componentes.-> S