Pular para o conteúdo principal

Escalabilidade

Escalabilidade é a capacidade de absorver crescimento adicionando recursos. Não é a mesma coisa que desempenho, e confundir as duas leva a otimizar a coisa errada com competência.

O problema desta seção

Desempenho é quanto tempo uma operação leva com a carga atual. Escalabilidade é como esse tempo se comporta quando a carga multiplica. Um sistema pode ser rápido e não escalar; pode escalar bem e ser lento.

A confusão produz um padrão previsível: alguém otimiza uma consulta, ganha 30%, e o sistema cai de novo três meses depois — porque o problema nunca foi a consulta, e sim o fato de que toda requisição passa por um recurso que não se multiplica.

O trabalho arquitetural aqui é identificar qual dimensão cresce — usuários, dados, escritas, leituras, conexões simultâneas, tamanho de payload — e qual recurso satura primeiro nessa dimensão. Escalar sem essa análise é caro e frequentemente ineficaz.

O que você vai encontrar aqui

As duas direções. Escala vertical e horizontal, com o ponto em que a primeira deixa de ser a resposta certa — que é mais tarde do que se costuma supor.

A precondição. Ausência de estado no processamento. É o que torna a escala horizontal possível; sem isso, o resto não se aplica.

Distribuição de carga. Balanceamento de carga, particionamento e replicação sob a ótica de crescimento.

Absorção. Cache, processamento assíncrono e escala baseada em fila. Como converter picos em atraso em vez de em falha.

O ponto difícil. Escala de banco de dados e hotspots. O banco é o gargalo final da maior parte dos sistemas, e hotspot é o motivo pelo qual particionar nem sempre resolve.

Antecipação. Planejamento de capacidade e a distinção entre desempenho e escalabilidade.

Ordem de leitura

Leia desempenho versus escalabilidade primeiro. É curto e reorganiza tudo o que vem depois.

Depois planejamento de capacidade e hotspots, nessa ordem — a análise antes das soluções. Cache e fila são fáceis de aplicar e por isso são aplicados antes da análise com frequência demais.

Ao terminar

Você identifica o gargalo real de um sistema com um argumento quantitativo, e não pela intuição de onde "parece lento". Escolhe entre cache, fila, particionamento e réplica a partir da dimensão que cresce.

E reconhece o caso em que a resposta correta é reduzir a carga em vez de aumentar a capacidade.

Relacionado

Confiabilidade — sistemas escalam até o ponto em que falham, e o que acontece nesse ponto é decisão de projeto.