Marcio Cunha

Escala automática falhou no ECS? Como ajustar o target tracking

Entenda por que a escala automática do AWS ECS falha em picos de tráfego e aprenda o ajuste fino de políticas baseadas em métricas de latência.

Marcio Cunha•3 min
Também disponível em:EnglishEspañol
Resumo
  • A métrica padrão de uso de CPU no ECS frequentemente reage tarde demais para evitar picos de latência.
  • O target tracking ajusta dinamicamente a frota de contêineres buscando manter um valor fixo de referência.
  • Métricas customizadas enviadas ao CloudWatch permitem disparar o redimensionamento baseado na experiência real do usuário.
  • Intervalos de cooldown inadequados criam um efeito sanfona que desperdiça recursos e degrada o serviço.
  • Testes de carga controlados são indispensáveis para validar se o limite de alarme escolhido reflete a capacidade real.

Por que a escala automática padrão do AWS ECS falha no mundo real

Gerenciar a capacidade de um sistema em nuvem parece simples no papel: quando o uso de processamento sobe, adicionamos mais servidores. Na prática, a escala automática gerenciada pelo AWS ECS (Elastic Container Service, o sistema da Amazon para rodar aplicativos empacotados em contêineres) costuma desapontar em momentos críticos. O principal motivo é a dependência excessiva de métricas tradicionais, como a porcentagem de uso de CPU.

Quando um pico repentino de acessos atinge sua aplicação, a CPU dispara, o alarme é acionado, a Amazon provisiona novas máquinas virtuais, o ECS baixa a imagem do sistema e inicia novos contêineres. Esse processo inteiro leva vários minutos. Enquanto isso, seus usuários enfrentam lentidão severa ou erros de conexão. Resolver esse problema exige abandonar o foco exclusivo em processador e migrar para políticas inteligentes que olham diretamente para o comportamento da rede e o tempo de resposta, assim como fazemos quando investigamos gargalos operacionais em ambientes como o controle de recursos de CPU em contêineres Docker.

Entendendo o funcionamento do target tracking no ECS

O conceito de Target Tracking (rastreamento de alvo) funciona de forma muito parecida com o termostato de um ar-condicionado. Em vez de definir regras complexas de subida e descida de capacidade, você diz apenas qual é o número ideal que o sistema deve manter, como duzentos milissegundos de latência média ou setenta por cento de uso de memória.

A própria ferramenta da Amazon calcula nos bastidores quando precisa adicionar ou remover instâncias para fazer o ponteiro voltar ao valor desejado. Na prática, isso elimina a necessidade de adivinhar fórmulas matemáticas complexas de ajuste. Contudo, se o alvo escolhido for baseado numa métrica que demora a refletir a realidade, todo o mecanismo perde a utilidade e o sistema continua vulnerável a falhas de performance.

Como configurar métricas customizadas de latência no CloudWatch

Para que o dimensionamento automático aconteça antes que o usuário perceba a lentidão, precisamos enviar dados personalizados para o CloudWatch, que é o painel de monitoramento e métricas da nuvem AWS. Em vez de esperar a máquina ficar sem fôlego, medimos o tempo que o balanceador de carga leva para responder às requisições HTTP.

Você pode configurar sua aplicação para emitir métricas personalizadas através de SDKs ou usar diretamente as métricas nativas do Application Load Balancer, como o TargetResponseTime. O segredo técnico está em calcular a média móvel desse tempo de resposta em janelas curtas de tempo, garantindo que qualquer oscilação anômala seja imediatamente capturada pelo sistema de monitoramento sem disparar alarmes falsos por causa de ruídos pontuais na rede.

Ajustando o período de avaliação e o cooldown para evitar o efeito sanfona

Um dos erros mais comuns ao configurar políticas de escala automática é o chamado efeito sanfona, onde o sistema cria dezenas de contêineres porque a latência subiu, e em seguida os destrói logo no minuto seguinte, criando um ciclo vicioso de instabilidade. Isso acontece porque o período de avaliação e o tempo de descanso (conhecido como cooldown) estão configurados com valores muito curtos.

Na prática, você deve estender o período de avaliação para pelo menos três ou quatro ciclos consecutivos de monitoramento antes de autorizar a remoção de instâncias. Da mesma forma, garantir um tempo de espera generoso após a criação de novos contêineres dá tempo para que o tráfego se estabilize e o aplicativo aqueça seus caches internos, evitando decisões precipitadas tomadas por algoritmos automáticos.

Testando e validando sua nova estratégia de escala

Depois de ajustar as políticas de rastreamento de alvo e integrar métricas de latência, o passo mais importante é simular tráfego real para verificar se o sistema reage no tempo correto. Ferramentas de teste de carga ajudam a injetar milhares de acessos simultâneos enquanto você observa o comportamento do ECS em tempo real.

Se notar que os contêineres demoram a nascer, reduza o limite do alvo de latência para que o redimensionamento ocorra de forma preventiva. Manter essa disciplina de testes evita surpresas desagradáveis durante eventos de grande tráfego, garantindo que sua infraestrutura escale com suavidade e mantenha a aplicação sempre disponível para os usuários.