Guia

O que é System Design?

System Design é o processo de desenhar a arquitetura de um sistema de software para atender requisitos de escala, disponibilidade e desempenho — decidindo como componentes como servidores, bancos de dados, caches e filas se conectam e se comportam sob carga real.

Requisitos funcionais e não funcionais

Todo desenho de arquitetura parte de duas perguntas diferentes. Requisitos funcionais definem o que o sistema precisa fazer (ex.: "criar um pedido", "autenticar um usuário"). Requisitos não funcionais definem como ele precisa se comportar sob pressão: quantas requisições por segundo, qual latência máxima aceitável, qual taxa de erro tolerável, e o que acontece quando um componente falha.

Os quatro pilares

  • Escalabilidade — a capacidade de atender mais carga adicionando réplicas (horizontal) ou aumentando a capacidade de uma instância (vertical).
  • Disponibilidade — o sistema continuar respondendo mesmo quando parte dele falha, evitando pontos únicos de falha (single point of failure).
  • Latência — quanto tempo uma requisição leva para ser respondida.
  • Throughput — quantas requisições o sistema processa por unidade de tempo.

Latência e throughput costumam entrar em conflito com custo e complexidade — não existe arquitetura "perfeita", só arquiteturas com trade-offs diferentes para requisitos diferentes.

Componentes comuns de uma arquitetura

Na prática, a maioria dos sistemas distribuídos é composta por uma combinação destes blocos:

Componente Papel
Load BalancerDistribui requisições entre múltiplas réplicas de um serviço.
API GatewayPonto de entrada único para roteamento, autenticação e agregação.
CDNServe conteúdo estático e cacheável perto do usuário.
CacheAbsorve leituras repetidas e reduz pressão no banco de dados.
Fila / WorkerProcessa tarefas de forma assíncrona, desacoplando produtor e consumidor.
Banco SQLEscala leitura por réplicas; escrita passa por uma primária.
Banco NoSQLEscala leitura e escrita distribuindo dados em shards.

Veja em detalhe como o Cache funciona e como ele é modelado em uma simulação real.

Como praticar

A forma mais rápida de internalizar esses conceitos não é decorá-los — é ver o efeito de cada decisão. O que acontece com a latência quando você tira um cache do caminho? O que acontece com a taxa de erro quando uma réplica cai sob carga sustentada?

O Simulador de System Design deixa você montar esses componentes por drag-and-drop, gerar carga real e observar latência, erros e saúde de cada peça ao vivo — direto no navegador, sem instalar nada.

Abrir o simulador