Pular para o conteúdo

Design clássico · Júnior

De zero a milhões de usuários

Projeto de entrevista clássico. Pontos centrais: estimativa de capacidade.

11 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: estimativa de capacidade. Este caso não tem um produto específico: a pergunta é como um sistema cresce de poucos usuários para muitos, e o que muda a cada degrau. Em entrevista, a resposta boa não pula para a arquitetura final; ela parte do mais simples e só adiciona uma peça quando consegue dizer qual…

01 · CONTEXTO

Começar simples: tudo em um servidor

Este caso não tem um produto específico: a pergunta é como um sistema cresce de poucos usuários para muitos, e o que muda a cada degrau. Em entrevista, a resposta boa não pula para a arquitetura final; ela parte do mais simples e só adiciona uma peça quando consegue dizer qual gargalo ela resolve.

O ponto de partida é um único servidor rodando tudo: aplicação web, banco de dados e cache. Quando o tráfego cresce, o primeiro passo é separar a camada web da camada de dados, o que permite escalar cada uma de forma independente.

  1. No começo, o cliente fala com um único servidor que concentra a aplicação e os dados; é simples de operar, mas qualquer limite dele é o limite do sistema.

    Diagrama da arquitetura: Do servidor único à camada de dados separada
    CLUsuário
    CPServidor webtudo junto
    DBBanco de dados
  2. O banco sai para o próprio servidor: agora a camada web e a camada de dados crescem em ritmos diferentes, cada uma com os recursos de que precisa.

    Diagrama da arquitetura: Do servidor único à camada de dados separada
    CLUsuário
    CPServidor web
    DBBanco de dadosdados separados

02 · ESCALA

Vertical, horizontal e a camada web sem estado

Há duas formas de dar mais capacidade. A escala vertical coloca mais CPU e memória na mesma máquina; é simples, mas tem um limite rígido, e uma única máquina também é um ponto único de falha. A escala horizontal adiciona mais servidores e é o que sustenta sistemas grandes.

Com mais de um servidor web, alguém precisa repartir o tráfego. É o papel do balanceador de carga, que distribui as requisições de entrada entre os servidores do conjunto. Os clientes passam a falar só com o balanceador, e os servidores web deixam de ser acessados diretamente.

Para qualquer servidor poder atender qualquer requisição, o estado de sessão sai dos servidores web e vai para um armazenamento compartilhado. Um sistema sem estado é mais simples, mais robusto e mais escalável, e é isso que permite adicionar ou remover servidores web conforme a carga.

03 · DADOS E LEITURA

Replicação, cache e CDN

Na camada de dados, a replicação separa os papéis: o banco principal só aceita escritas, e as réplicas recebem cópias dos dados e atendem as leituras. Isso ajuda a desempenho e disponibilidade. Se o principal cai, uma réplica é promovida a novo principal e uma nova réplica entra no lugar; em produção, essa promoção é mais complicada do que parece.

Duas peças tiram carga do banco e da aplicação. O cache guarda em memória o que é lido com frequência e modificado raramente. A CDN é uma rede de servidores geograficamente dispersos que entrega conteúdo estático, como imagens, vídeos, CSS e JavaScript, a partir de um ponto próximo do usuário.

  1. O balanceador reparte as requisições entre os servidores web; nenhum deles é o ponto de entrada único.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDN
    NWBalanceador de carga
    CPServidor web A
    CPServidor web B
    CHCache
    DBBanco principal
    DBRéplica do banco
  2. Os servidores web não guardam estado de sessão; por isso qualquer um deles atende qualquer requisição e é possível acrescentar ou retirar instâncias.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDN
    NWBalanceador de carga
    CPServidor web Asem estado
    CPServidor web Bsem estado
    CHCache
    DBBanco principal
    DBRéplica do banco
  3. O conteúdo estático é entregue pela CDN, de perto do usuário, e nem chega aos servidores web.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDNestáticos
    NWBalanceador de carga
    CPServidor web A
    CPServidor web B
    CHCache
    DBBanco principal
    DBRéplica do banco
  4. O que é muito lido e pouco alterado fica no cache; os servidores web consultam o cache antes de ir ao banco.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDN
    NWBalanceador de carga
    CPServidor web A
    CPServidor web B
    CHCacheleituras quentes
    DBBanco principal
    DBRéplica do banco
  5. As escritas vão ao banco principal e as leituras vão à réplica, que recebe cópias dos dados do principal.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDN
    NWBalanceador de carga
    CPServidor web A
    CPServidor web B
    CHCache
    DBBanco principal
    DBRéplica do bancoleituras
  6. Se o banco principal cai, a réplica é promovida a novo principal e o sistema segue operando.

    Diagrama da arquitetura: Camada web escalada com balanceador, cache, CDN e réplica
    CLUsuários
    EDGCDN
    NWBalanceador de carga
    CPServidor web A
    CPServidor web B
    CHCache
    DBBanco principalfora do ar
    DBRéplica do bancopromovida
PeçaO que resolveQuando usar
Balanceador de cargaReparte o tráfego entre servidores webQuando há mais de um servidor web
Réplicas do bancoLeituras saem do principalQuando as leituras dominam o banco
CacheEvita ir ao bancoDado lido com frequência e pouco modificado
CDNEntrega estáticos perto do usuárioImagens, vídeos, CSS e JavaScript

04 · ASSÍNCRONO E OPERAÇÃO

Filas, vários data centers e observabilidade

Trabalho lento não precisa bloquear a resposta. Com uma fila de mensagens, o produtor publica a mensagem e os consumidores a processam depois, em seu próprio ritmo. Esse desacoplamento permite escalar produtores e consumidores de forma independente, e é por isso que a fila é uma arquitetura preferida para aplicações escaláveis e confiáveis.

Para atender usuários em regiões distantes e sobreviver a uma queda de site, o sistema pode rodar em mais de um data center. Numa queda significativa, todo o tráfego é direcionado a um data center saudável. À medida que o sistema cresce, também ficam essenciais os logs, as métricas e a automação: monitorar logs de erro ajuda a identificar problemas no sistema.

  1. O servidor web publica a tarefa na fila e responde sem esperar o resultado; a fila desacopla quem produz de quem consome.

    Diagrama da arquitetura: Trabalho assíncrono com fila, consumidores e monitoramento
    CPServidor web
    QFila de mensagensdesacopla
    CPConsumidor
    DBBanco particionado
    NWLogs e métricas
  2. Os consumidores retiram as mensagens da fila no próprio ritmo; se a fila encher, basta acrescentar consumidores.

    Diagrama da arquitetura: Trabalho assíncrono com fila, consumidores e monitoramento
    CPServidor web
    QFila de mensagens
    CPConsumidor
    DBBanco particionado
    NWLogs e métricas
  3. Servidores web e consumidores enviam logs e métricas a um ponto central, onde os erros podem ser pesquisados.

    Diagrama da arquitetura: Trabalho assíncrono com fila, consumidores e monitoramento
    CPServidor web
    QFila de mensagens
    CPConsumidor
    DBBanco particionado
    NWLogs e métricaslogs e métricas

05 · SHARDING

Quando um banco só não basta

Quando os dados crescem além do que um banco aguenta, a escala horizontal da camada de dados é o sharding: adicionar mais servidores e dividir os dados entre eles. O custo está em novos problemas, como o problema da celebridade, também chamado de chave quente: acesso excessivo a um shard específico pode sobrecarregá-lo.

Perguntas frequentes

O que é De zero a milhões de usuários?

Projeto de entrevista clássico. Pontos centrais: estimativa de capacidade.

O que o design de De zero a milhões de usuários cobre?

Ele está organizado nestas seções: Começar simples: tudo em um servidor, Vertical, horizontal e a camada web sem estado, Replicação, cache e CDN, Filas, vários data centers e observabilidade e Quando um banco só não basta.

Quanto tempo leva De zero a milhões de usuários e qual é o nível?

Leva cerca de 11 minutos para ler e tem nível Júnior.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.