Skip to content
Latchkey

O Que É Escala Horizontal? Adicionando Mais Máquinas

Escala horizontal, ou scaling out, lida com mais carga adicionando mais instâncias de um serviço em vez de tornar uma instância maior.

Quando a demanda cresce, você pode dar mais potência a uma máquina (scale up) ou rodar mais máquinas (scale out). A escala horizontal é a abordagem de scale out: subir instâncias idênticas adicionais atrás de um load balancer. É a fundação da elasticidade em nuvem, e empurra você em direção a serviços stateless e substituíveis.

Mais instâncias, não maiores

Em vez de atualizar para um servidor maior, você roda muitas cópias do mesmo serviço e espalha requisições entre elas. A capacidade cresce adicionando instâncias, e você pode removê-las quando a demanda cai.

Por que é atraente

  • Capacidade quase linear adicionando instâncias comuns.
  • Elasticidade: escale para cima em picos, para baixo para economizar dinheiro.
  • Resiliência: perder uma instância deixa o restante servindo.
  • Sem teto rígido do tamanho máximo de uma única máquina.

O requisito de statelessness

A escala horizontal funciona de forma limpa apenas quando as instâncias são intercambiáveis. Qualquer requisição pode atingir qualquer instância, então o estado por usuário tem que viver fora da instância, em um banco de dados, cache ou session store, e não na memória local.

O que exige do CI/CD

Instâncias idênticas significam que você faz deploy de um artifact imutável em muitas máquinas. Pipelines constroem esse artifact uma vez e o distribuem, com health checks controlando cada instância. Builds reproduzíveis e independentes de ambiente são o que faz muitas instâncias idênticas se comportarem da mesma forma.

Deploys rolling se encaixam naturalmente

Com muitas instâncias, você pode substituí-las algumas de cada vez, mantendo o serviço no ar o tempo todo. O pipeline drena, atualiza e faz health check de cada lote, o que só funciona se a nova versão permanecer retrocompatível com a antiga ainda rodando.

Escalando horizontalmente o próprio CI

A mesma ideia se aplica à capacidade de build: mais runners paralelos limpam um backlog de jobs mais rápido do que um runner grande. Frotas de runners gerenciados (como o Latchkey) escalam horizontalmente de forma automática para que uma rajada de jobs de pipeline rode em paralelo em vez de enfileirar.

Principais conclusões

  • Escala horizontal adiciona mais instâncias idênticas em vez de maiores.
  • Ela requer serviços stateless e intercambiáveis para funcionar de forma limpa.
  • Deploys distribuem um artifact imutável por muitas instâncias, lote por lote.

Guias relacionados