EIVUS

Estratégias de escalabilidade com o crescimento

De um servidor a distribuído: quando e como escalar.

Voltar ao blog

Comece com um servidor; monitore e escale verticalmente até limites ou custo. Depois adicione mais nós e balanceamento. Separe DB e app; use cache e filas assíncronas. Planeje servidores de app stateless para escalar horizontalmente.

Fase de servidor único

  • Uma caixa: App, DB e cache na mesma máquina. Simples e barato para tráfego baixo.
  • Monitorar: CPU, memória, I/O de disco e banda. Quando a utilização for consistentemente alta ou atingir limites, planeje escalar.
  • Vertical primeiro: Suba para mais CPU, RAM ou disco melhor antes de adicionar mais servidores. Muitas vezes o ganho mais rápido.

Adicionar camadas e escala horizontal

  • Separar DB: Mova o banco para seu próprio servidor (ou serviço gerenciado). Servidores de app conectam a ele. DB pode ser escalado independentemente (réplicas, instância maior).
  • Múltiplos servidores de app: Coloque dois ou mais servidores de app atrás de um balanceador. Exige app stateless ou store de sessão compartilhado (Redis, DB).
  • Cache: Redis ou Memcached para sessão e cache de resposta; reduz carga no DB e acelera respostas.
  • Filas assíncronas: Descarregue trabalho lento ou em lote para workers (e-mail, relatórios, imports). Mantém o caminho da requisição rápido e permite escalar workers separadamente.

Stateless e automação

  • App stateless: Sem sessão local ou estado em arquivo que prenda o usuário a um servidor. Permite escala horizontal e substituição fácil de nós.
  • Automação: Use gestão de configuração e CI/CD para adicionar um novo servidor de app ser repetível e rápido. Auto-scaling groups se o provedor suportar.

Resumo

Comece com um servidor; escale verticalmente depois adicione camada de DB e vários servidores de app atrás de um balanceador. Use cache e filas; mantenha servidores de app stateless. Automatize para que escalar seja repetível.

Clientes que confiam na gente