VapVup👤
← Voltar
📈

Escalabilidade

Escalabilidade é a capacidade de um sistema crescer para atender mais usuários e carga sem perder performance. Existem duas estratégias principais: escalar verticalmente ou horizontalmente.

🍴Analogia

O Restaurante Lotado

Quando o restaurante lota, você tem duas opções: colocar mesas maiores (escala vertical — máquina mais potente) ou abrir mais filiais (escala horizontal — mais instâncias). Mesas maiores têm limite físico; filiais podem crescer indefinidamente.

💡Conceito

Horizontal vs Vertical

Escala vertical é aumentar CPU/RAM de um servidor — simples mas limitado. Escala horizontal é adicionar mais servidores — mais complexo mas praticamente ilimitado. Sistemas modernos preferem escala horizontal.

💡Conceito

Sharding (Particionamento)

Sharding divide os dados entre múltiplos bancos. Exemplo: clientes A-M vão para o banco 1, N-Z para o banco 2. Cada banco processa menos dados, e o sistema escala adicionando mais shards.

🔧Exemplo

Cache de Produtos

Ao invés de consultar o banco a cada requisição, guardamos produtos em cache. Isso reduz a carga no banco e acelera as respostas drasticamente.

const cache = new Map<string, { data: Produto; expiraEm: number }>();

async function buscarProduto(id: string): Promise<Produto> {
  const cached = cache.get(id);
  if (cached && cached.expiraEm > Date.now()) {
    return cached.data; // resposta instantânea
  }

  const produto = await db.produtos.findById(id);
  cache.set(id, {
    data: produto,
    expiraEm: Date.now() + 5 * 60 * 1000 // 5 minutos
  });
  return produto;
}
💡Conceito

Load Balancing

O load balancer distribui requisições entre múltiplas instâncias do servidor. Algoritmos comuns: round-robin (reveza), least connections (envia para o menos ocupado), ou weighted (servidores mais fortes recebem mais).

🛒Analogia

O Caixa do Supermercado

Quando a fila do supermercado cresce, abrem mais caixas (escala horizontal). O fiscal que direciona clientes para caixas vazios é o load balancer. Se um caixa quebra, os outros continuam atendendo normalmente.