Definição e contexto
Escalabilidade é a capacidade de um sistema de aumentar sua capacidade de processamento para atender à crescente demanda. O conceito parece simples, mas na prática envolve decisões de arquitetura que têm implicações de custo, complexidade e disponibilidade.
Existem dois modelos fundamentais de escalabilidade — e escolher o certo para cada cenário faz toda a diferença.
Escalabilidade vertical (scale up)
Escalar verticalmente significa aumentar os recursos do servidor existente: mais CPU, mais RAM, disco mais rápido.
Exemplo de scale up: Antes: 4 vCPUs, 8GB RAM → Depois: 8 vCPUs, 16GB RAM
Vantagens
- Simplicidade: sem mudança de arquitetura
- Sem necessidade de reescrever a aplicação
- Funciona para qualquer tipo de workload, incluindo banco de dados com estado
Limitações
- Tem limite: existe um tamanho máximo de servidor, e o custo cresce exponencialmente
- Ponto único de falha: um servidor maior ainda é um servidor único
- Requer reinicialização em muitos casos (on-premise)
Escalabilidade horizontal (scale out)
Escalar horizontalmente significa adicionar mais servidores que dividem a carga entre si.
Exemplo de scale out: 1 servidor com 16 vCPUs → 4 servidores com 4 vCPUs cada (mesma capacidade total, mas distribuída)
Vantagens
- Sem limite prático de escalabilidade — adicione quantos nós precisar
- Alta disponibilidade natural — falha de um nó não derruba o serviço
- Custo pode ser menor em cloud (instâncias menores são mais baratas proporcionalmente)
Requisitos
- A aplicação precisa ser stateless (sem estado local) ou gerenciar estado externamente (Redis, banco de dados centralizado)
- Exige load balancer para distribuir tráfego
- Mais complexidade operacional
Quando usar cada uma
Use escalabilidade vertical quando:
- O workload tem estado difícil de distribuir (banco de dados primário)
- A aplicação não foi projetada para rodar em múltiplas instâncias
- O crescimento esperado é linear e tem teto conhecido
- O custo de refatorar para horizontal não se justifica
Use escalabilidade horizontal quando:
- A demanda tem picos imprevisíveis (escalabilidade automática — autoscaling)
- Alta disponibilidade é requisito
- A aplicação é stateless (APIs, workers de fila, servidores web)
- O crescimento esperado é exponencial
Como planejar escalabilidade
O erro mais comum é planejar escalabilidade pensando em capacidade atual ao invés de crescimento projetado. Algumas boas práticas:
- Monitore tendências, não apenas picos: o crescimento mensal de uso de CPU, memória e disco é o dado mais útil para planejar escalabilidade.
- Planeje com 12 meses de antecedência: se o disco cresce 5GB/mês e tem 80GB livres, você tem ~16 meses antes do problema — planeje agora.
- Identifique o gargalo antes de escalar: nem sempre mais CPU resolve. O gargalo pode ser disco, rede, banco de dados ou a aplicação.
- Teste de carga: antes de um evento de pico, simule a carga esperada e observe onde o sistema satura.
Conclusão
Escalabilidade não é sobre ter a maior infraestrutura — é sobre ter a infraestrutura certa para o momento atual com um caminho claro para crescimento. Comece simples, monitore o comportamento real, e escale baseado em dados. A WSUL ajuda a identificar o ponto de saturação antes que ele se torne um problema.