Uma das maiores promessas da cloud é a elasticidade: a capacidade de aumentar ou diminuir recursos automaticamente conforme a demanda. Em teoria, você paga apenas pelo que usa e nunca fica sem capacidade.
Na prática, elasticidade efetiva exige muito mais do que habilitar autoscaling. Este artigo explora o que é elasticidade, como ela funciona, e os cuidados necessários para aproveitá-la de verdade.
Elasticidade não é mágica. É engenharia bem aplicada.
O que é Elasticidade
Elasticidade é a capacidade de um sistema adaptar seus recursos automaticamente em resposta a mudanças na demanda.
Diferente de escalabilidade (que é a capacidade de crescer), elasticidade inclui também a capacidade de encolher — liberando recursos quando não são mais necessários.
Elasticidade vs Escalabilidade
| Conceito | Definição |
|---|---|
| Escalabilidade | Capacidade de crescer para atender mais demanda |
| Elasticidade | Capacidade de crescer E encolher dinamicamente |
Um sistema pode ser escalável sem ser elástico (cresce, mas não encolhe automaticamente). Elasticidade implica escalabilidade, mas o inverso não é verdade.
Como a Elasticidade Funciona
Componentes básicos
- Métricas de monitoramento — CPU, memória, requisições, latência
- Regras de escala — condições que disparam aumento ou redução
- Orquestrador — componente que adiciona/remove instâncias
- Load balancer — distribui tráfego entre instâncias
Fluxo típico
Demanda aumenta
↓
Métrica ultrapassa threshold (ex: CPU > 70%)
↓
Orquestrador inicia novas instâncias
↓
Load balancer inclui novas instâncias
↓
Carga é redistribuída
↓
Métricas normalizam
O processo inverso acontece quando a demanda cai.
Tipos de Elasticidade
Elasticidade reativa
Responde a mudanças após elas acontecerem. É o modelo mais comum.
Vantagens:
- Simples de implementar
- Baseada em métricas reais
Desvantagens:
- Delay entre demanda e resposta
- Pode não ser rápida o suficiente para picos abruptos
Elasticidade preditiva
Usa dados históricos e machine learning para antecipar mudanças de demanda.
Vantagens:
- Prepara recursos antes do pico
- Melhor experiência do usuário
Desvantagens:
- Mais complexa de implementar
- Depende de padrões previsíveis
Elasticidade programada
Escala baseada em horários conhecidos (ex: mais recursos durante horário comercial).
Vantagens:
- Previsível e controlável
- Não depende de métricas em tempo real
Desvantagens:
- Não responde a variações inesperadas
- Pode desperdiçar recursos
Desafios da Elasticidade
1. Tempo de inicialização (cold start)
Novas instâncias precisam de tempo para iniciar. Se esse tempo for longo, a elasticidade perde efetividade.
Mitigações:
- Otimizar tempo de boot da aplicação
- Manter pool mínimo de instâncias quentes
- Usar containers leves
2. Estado da aplicação
Aplicações stateful são difíceis de escalar elasticamente. Sessões, cache local e estado em memória complicam a adição/remoção de instâncias.
Mitigações:
- Externalizar estado (Redis, banco de dados)
- Design stateless
- Sticky sessions (com cuidado)
3. Conexões persistentes
Bancos de dados, filas e serviços externos têm limites de conexão. Escalar instâncias pode esgotar esses limites.
Mitigações:
- Connection pooling
- Limites por instância
- Serviços gerenciados com escala própria
4. Custos inesperados
Elasticidade mal configurada pode gerar custos altíssimos — especialmente em cenários de loop de escala ou ataques.
Mitigações:
- Limites máximos de instâncias
- Alertas de custo
- Rate limiting na aplicação
5. Thrashing (oscilação)
Sistema fica alternando entre escalar e desescalar rapidamente, gerando instabilidade.
Mitigações:
- Cooldown periods entre ações de escala
- Thresholds com histerese (valores diferentes para subir e descer)
- Escala em steps maiores
Métricas para Elasticidade
Métricas de entrada (quando escalar)
- CPU utilization — simples, mas pode ser enganosa
- Request rate — mais direta para aplicações web
- Queue depth — excelente para workers
- Response time — escala baseada na experiência do usuário
- Custom metrics — específicas do negócio
Métricas de saída (quando desescalar)
Geralmente as mesmas métricas, mas com thresholds mais conservadores para evitar thrashing.
Elasticidade na Prática
Exemplo: E-commerce na Black Friday
Dias normais: 10 instâncias
Pré-Black Friday: escala programada para 50 instâncias
Durante: elasticidade reativa permite chegar a 200 instâncias
Pós-pico: volta gradualmente para 10 instâncias
Exemplo: SaaS B2B
Noite/madrugada: 2 instâncias (mínimo)
Horário comercial: 5-10 instâncias (elasticidade reativa)
Final de mês (fechamento): picos de 15-20 instâncias
Boas Práticas
- Defina limites máximos — proteja-se de custos descontrolados
- Teste a elasticidade — simule picos e valide o comportamento
- Monitore o tempo de escala — saiba quanto tempo leva para reagir
- Use múltiplas métricas — CPU sozinha raramente conta a história toda
- Planeje o mínimo — quantas instâncias você precisa mesmo sem carga?
- Considere reservas — instâncias reservadas para baseline, on-demand para picos
Conclusão
Elasticidade é uma capacidade poderosa da cloud, mas não é automática nem gratuita. Ela exige:
- Aplicações preparadas (stateless, boot rápido)
- Configuração cuidadosa de thresholds e limites
- Monitoramento contínuo do comportamento
- Testes regulares dos cenários de escala
Quando bem implementada, elasticidade transforma custos fixos em variáveis e garante que seu sistema responda à demanda real — sem desperdício e sem surpresas.
A cloud promete elasticidade. Cabe a você garantir que seu sistema está pronto para aproveitá-la.