Escalando Containers

Escala horizontal vs vertical

Quando escalar com replicas e quando aumentar recursos.

Avançado 25 min 25 pontos Leitura 0%

Nesta aula você vai

  • Comparar escala vertical e horizontal no stack de 5 microsservicos
  • Escolher estrategia por perfil de carga e estado
  • Planejar escala com base em metricas, nao em tentativa e erro

Escala horizontal vs vertical

Objetivos

  • Comparar aumento de recursos e aumento de réplicas
  • Escolher estratégia por característica de serviço
  • Evitar escala ineficiente em componentes stateful

Pré-requisitos

  • Docker Compose e scripts de carga funcionando.
  • Prometheus ja coletando latencia e consumo de CPU.
  • Fluxo principal do e-commerce funcional.

Conceito

Escala vertical aumenta CPU/memoria de uma instancia. Escala horizontal adiciona novas instancias para dividir carga.

Servicos stateless (APIs e consumers) tendem a escalar melhor horizontalmente. Servicos stateful exigem coordenacao adicional e estrategia de consistencia.

Estrutura de arquivos

  • infra/docker-compose.scale.yml
  • docs/architecture/scaling.md
  • services/order-service/README.md
  • services/payment-service/README.md

Passo a passo com codigo

  1. Defina limite de recursos para teste vertical:
payment-service:
  deploy:
    resources:
      limits:
        cpus: "1.5"
        memory: 768M
  1. Execute carga baseline:
python scripts/load/run_checkout_load.py --rps 30 --seconds 120
  1. Teste escala horizontal:
docker compose up -d --scale payment-service=3
  1. Compare p95 e throughput em cada estrategia.

Como testar

  1. Colete metricas com 1 instancia (baseline).
  2. Repita com escala vertical.
  3. Repita com escala horizontal.
  4. Registre ganho de throughput e impacto de latencia.
  5. Documente decisao no docs/architecture/scaling.md.

Dicas

  • Sempre compare com baseline antes de escalar.
  • Escala horizontal exige observabilidade por replica.
  • Evite escalar stateful sem estrategia de dados.
  • Alinhe escala com custo e SLO.

Erros comuns

  • Escalar horizontal sem balanceamento adequado
  • Escalar vertical além do limite da máquina local
  • Ignorar custo de coordenação entre réplicas
  • Não validar impacto em latência p95

Resumo

Escala vertical e horizontal resolvem gargalos diferentes. A decisao correta vem de metricas reais de carga, latencia e uso de recursos no seu ambiente.