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.