PerfectScale

Qual o compromisso certo em AWS Savings Plans? O problema do dimensionamento — e como parar de chutar

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Jul 27, 202615 min read
Mohammad Reza Saleh Sedghpour

About Mohammad Reza Saleh Sedghpour

Mohammad Reza Saleh Sedghpour is a Senior Software Engineer II at DoiT and a Cloud Engineer and Researcher with over a decade of experience in cloud computing and distributed systems. He holds a Ph.D. in Computer Science, specializing in resiliency patterns for microservices, and is an active open-source contributor who regularly publishes research and presents at international conferences. At DoiT, he works on the automation behind cloud cost-optimization tooling, including commitment management — helping businesses use cloud technologies for optimal performance, resilience, and cost.

My personal page

Toda conversa sobre custos de AWS que já tive acaba chegando à mesma pergunta. Alguém do financeiro, um líder de engenharia ou um fundador se inclina e pergunta: "Então, com quanto devemos nos comprometer?"

É o instinto certo com o enquadramento errado. As pessoas perguntam como quem quer saber em quantos graus deixar o termostato — como se existisse um único número correto e o trabalho fosse encontrá-lo uma vez e pronto.

Não existe. O compromisso certo de Savings Plans não é um número que você descobre. É um alvo em movimento que você precisa continuar acertando, mês após mês, enquanto seu uso muda debaixo dos seus pés.

E o custo de errar esse alvo é assimétrico — é isso que torna a decisão estressante. Comprometa-se de menos e você deixa dinheiro real na mesa: os Compute Savings Plans, por exemplo, oferecem descontos de até ~66% sobre as tarifas on-demand, então cada hora sem cobertura é uma hora paga a mais. Comprometa-se demais e é pior: você assinou um contrato de um ou três anos para pagar por capacidade que talvez não use. Um Savings Plan ocioso não desperdiça apenas dinheiro. Ele pode custar mais do que o uso on-demand que deveria substituir.

Coloque isso em números. Digamos que sua base durável — a computação que realmente roda 24 horas por dia — fique em torno de US$ 60/hora, e você se compromete com US$ 70. Esses US$ 10/hora extras são cerca de US$ 7.200/mês pagos por nada. E, diferentemente de uma instância superprovisionada que você pode desligar hoje à tarde, um Savings Plan oferece apenas uma janela de correção muito estreita; depois disso, em geral não dá para cancelar, reduzir ou redimensionar o compromisso. Esses US$ 10/hora são seus pelo resto do prazo. Em um plano de três anos, um único erro de dimensionamento como esses US$ 10/hora se acumula até virar um passivo de um quarto de milhão de dólares antes mesmo da sua primeira revisão.

Essa é a armadilha. O ganho é limitado ao desconto. O prejuízo é um passivo de vários anos do qual você praticamente não escapa. Então a maioria dos times faz o que é racional sob incerteza: se compromete de menos, faz hedge e paga a mais em silêncio por anos.

Este artigo é sobre por que esse número é genuinamente difícil de acertar, por que o processo manual quase garante que você vai trabalhar com dados defasados e como um modelo mental melhor, somado à automação, permite acertar o alvo continuamente em vez de chutar a cada trimestre. (Se você ainda está decidindo qual instrumento de compromisso usar, comece pelo nosso guia de decisão Savings Plans vs. Reserved Instances e pelo nosso resumo de 7 erros comuns em commitments na AWS. Este post parte do princípio de que você já escolheu Savings Plans e está encarando a pergunta do "quanto".)

A resposta curta

Se você levar uma coisa deste post: comprometa-se com a sua base durável — a computação que está genuinamente ligada 24 horas por dia — e não com a semana média, nem com o pico. Transforme isso em uma política de cobertura que você consiga defender (quanto do seu gasto quer ter sob compromisso, mais um teto que você não vai ultrapassar) e, depois, adicione compromisso em pequenos passos rumo a essa meta, em vez de fazer uma única compra grande.

Tudo o que vem a seguir explica por que essa é a resposta certa, por que o processo tradicional dificulta e como executar isso continuamente sem ficar de babá de planilha.

Por que "quanto" é genuinamente difícil

Comece com as duas palavras que as pessoas usam como sinônimos e não deveriam: cobertura e utilização.

  • Cobertura é quanto do seu gasto on-demand elegível está sob um compromisso. Se você roda cerca de US$ 80/hora em computação elegível para Savings Plans e US$ 60/hora estão cobertos, você está com 75% de cobertura.
  • Utilização é quanto do compromisso que você comprou é de fato usado. Se você se compromete com US$ 70/hora e só aparecem US$ 60/hora de uso correspondente, você está com ~86% de utilização — e continua pagando a tarifa comprometida pelos 14% que ficaram ociosos.

Aqui está a parte desconfortável: essas duas métricas se movem em direções opostas quando você força uma delas. Persiga uma cobertura maior e você compra mais compromisso, o que facilita a queda da utilização se o uso diminuir. Proteja a utilização comprando de forma conservadora e sua cobertura — e sua economia — fica baixa. Dimensionar um compromisso é o ato de escolher onde se posicionar nessa gangorra. A maioria dos times nunca faz essa escolha de forma explícita; eles apenas reagem.

media

Depois, há as alavancas — e cada uma muda a conta:

Escolha Opções O trade-off
Prazo 1 ano vs. 3 anos O prazo de 3 anos aprofunda o desconto, mas triplica o lock-in da sua aposta.
Pagamento Sem adiantamento / Parcial / Total adiantado Pagar mais antecipadamente garante uma tarifa um pouco melhor, mas prende caixa e aumenta o custo de errar.
Tipo de plano Compute SP vs. EC2 Instance SP O Compute SP (até ~66% de desconto) é flexível entre famílias de instância, tamanhos, regiões, SO, tenancy e até Fargate/Lambda. O EC2 Instance SP (até ~72% de desconto) rende um desconto um pouco maior, mas prende você a uma família de instância em uma região. Flexibilidade vs. desconto, de novo.

Para ver quanto essas escolhas valem, veja o que elas fazem com o preço de uma única instância — a mesma c6a.8xlarge, uma região, precificada em diferentes prazos e opções de pagamento de Compute Savings Plan (mais on-demand):

media

A diferença é enorme: a mesma máquina vai de cerca de US$ 1,22/hora no on-demand a ~US$ 0,54/hora em um Compute Savings Plan de três anos — uma variação de ~56% decidida inteiramente por como você compra. E os deltas não são igualmente espaçados: passar de um prazo de 1 ano para 3 anos praticamente reduz a tarifa pela metade, enquanto a escolha do adiantamento (Nenhum / Parcial / Total) mexe só uns poucos pontos percentuais. A alavanca que parece letra miúda — a duração do prazo — é a que realmente movimenta o dinheiro.

Cada uma dessas escolhas assume que você sabe como seu workload vai se comportar ao longo do prazo inteiro. Em um plano EC2 Instance de três anos com pagamento total antecipado, você não está dimensionando um compromisso — está fazendo uma previsão sobre sua arquitetura em 2028. Essa é a dificuldade real. O número não é difícil de calcular. Difícil é conhecer o futuro do qual ele depende.

As cinco forças que não param de mover o alvo

Se seu uso fosse uma linha reta, isso seria um exercício de planilha. Nunca é. Cinco forças continuam arrastando o número "certo" depois que você se comprometeu.

media

1. O uso não é constante. O gasto real com computação oscila de semana em semana — jobs em lote, lançamentos, tráfego sazonal, o onboarding de um cliente grande. Um compromisso dimensionado para uma semana boa vira compromisso excessivo em uma semana calma. Dimensione para uma semana movimentada a US$ 70/hora quando sua base durável é, na verdade, US$ 60/hora, e no momento em que as coisas acalmarem os US$ 10/hora extras viram compromisso ocioso — cerca de US$ 87.600 por ano pagos por capacidade que você não está usando. O desconto que você perseguia é menor que o desperdício que você criou.

2. Right-sizing e migrações encolhem a base. Essa é a força que mais deixa dinheiro encalhado, em silêncio. Você se compromete com o uso de hoje, e então seu time faz o próprio trabalho: aplica right-sizing nas instâncias superprovisionadas, move um serviço para Graviton, refatora um monólito. Seu uso cai — e seu compromisso, não. Você se compromete com sua base de US$ 60/hora, aí seu time migra para Graviton e a base se estabiliza em US$ 50/hora. Da noite para o dia, esses ~US$ 10/hora de compromisso ficam sem ter onde pousar — com cerca de dois anos restantes em um plano de três anos, algo em torno de US$ 175 mil encalhados. Você fez a coisa certa do ponto de vista de engenharia e foi punido por isso. O movimento correto é a ordem inversa: primeiro o right-sizing, depois o compromisso com o estado estável mais enxuto. Quase ninguém faz assim, porque o compromisso e o right-sizing vivem nos backlogs de times diferentes.

3. Compromissos expiram — e as expirações chegam em blocos. Um Savings Plan comprado há um ano vence em um dia específico. Se você comprou vários de uma vez, eles expiram de uma vez, e sua cobertura despenca da noite para o dia. Renovar significa refazer todo o exercício de dimensionamento, exatamente no momento em que você tem menos chance de estar prestando atenção. Deixe passar e você volta a pagar a tarifa on-demand cheia pela fatia que expirou.

4. Uma meta de cobertura não é um resultado de utilização. Você pode mirar 80% de cobertura e ainda assim acabar com utilização ruim se o uso enfraquecer depois da compra. Metas são definidas com base no histórico; a utilização se realiza no futuro. A diferença entre elas é desperdício puro — e você só vê quando a fatura chega.

5. O próprio tempo. Cada dia que você espera por "certeza suficiente" para se comprometer é um dia pagando tarifas on-demand. Times adiam compromissos por meses em busca de uma confiança que nunca chega, e o desconto que eles adiam se perde para sempre. Como dissemos no post sobre erros em commitments: mesmo durante migrações e incertezas, comprometer alguma parte é melhor do que não comprometer nada.

Repare que nada disso é falha de planejamento. É só a realidade. É esperado que sua infraestrutura mude. O problema não é o alvo se mover — é que a maioria dos processos de compromisso é construída como se ele não se movesse.

Por que a abordagem manual quebra

Veja como o dimensionamento costuma acontecer na prática.

Uma vez por trimestre, alguém abre a recomendação de compra de Savings Plans da AWS. A AWS olha para trás em uma janela — você pode escolher 7, 30 ou até 60 dias — e entrega um único compromisso horário sugerido, otimizado para a economia máxima. Alguém bate o olho, talvez reduza o valor "por segurança", consegue uma aprovação e compra.

Há três problemas embutidos nesse fluxo.

Primeiro, é um único número tirado de uma única janela retrospectiva. Recomendações de economia máxima assumem que seu passado recente é seu futuro e empurram a cobertura para cima. Ótimo quando o uso é estável; caro no momento em que deixa de ser.

Segundo, é uma compra "big bang". Você pega a decisão de compromisso de um trimestre inteiro e a executa em uma única transação, em um único dia. Se esse dia por acaso cair no topo de um pico de uso, você acabou de ancorar um ano de compromisso a um pico.

Terceiro, ela já nasce defasada. Quando a recomendação é revisada, aprovada e comprada, dias ou semanas se passaram e o uso mudou. Você não está se comprometendo com a sua realidade atual — está se comprometendo com o retrato de uma realidade que já ficou para trás.

O problema mais profundo é a cadência. O uso muda continuamente; o processo manual dispara trimestralmente. Você está amostrando um sinal em movimento quatro vezes por ano e agindo sobre cada amostra com semanas de atraso. Nenhum rigor de planilha resolve um problema de taxa de amostragem.

Um modelo mental melhor: dimensione pela base e escalone até ela

A correção envolve, na verdade, dois trabalhos distintos — e ajuda dar nome a eles: dimensionamento (escolher o número certo) e escalonamento (chegar lá com segurança). São duas mudanças na forma de pensar cada um.

Mudança um — dimensionamento: ancore na base durável. Esse é o trabalho de escolher o número. Em vez de "qual é o valor certo em dólares", decida quanto do seu gasto elegível você quer ter coberto — ancorado na base durável, a parte que roda 24 horas por dia — e deixe o valor em dólares decorrer disso. Isso transforma um chute sem limites em uma política sobre a qual dá para raciocinar:

  • Conservadora (~65% de cobertura). Você protege a utilização e mantém flexibilidade. Deixa parte da economia na mesa de propósito. Boa para uso volátil ou em mudança rápida.
  • Equilibrada (~80% de cobertura). O padrão para a maioria dos workloads de produção estáveis: economia significativa com uma folga confortável contra quedas.
  • Agressiva (~90% de cobertura). Economia máxima, folga mínima. Só faz sentido quando sua base é genuinamente estável e previsível.

Por que não escolher sempre a agressiva? Porque a cobertura tem retornos decrescentes, e a última fatia é a perigosa. O fundo do seu uso — a parte que está ligada 24/7/365 — é o mais seguro de cobrir, e ali o desconto é praticamente dinheiro de graça. À medida que você empurra a cobertura para cima, começa a se comprometer com o topo variável do seu uso: as horas que só existem durante picos. Esse gasto marginal é exatamente o mais propenso a desaparecer, o que significa que a cobertura adicionada acima de ~80% carrega a maior parte do risco de compromisso excessivo enquanto agrega a economia menos confiável. A postura certa não é "cubra tudo". É "cubra a base estável com agressividade e o topo volátil com cautela".

Mudança dois — escalonamento: chegue lá em pequenos passos. Esse é um trabalho diferente: não quanto comprometer, mas como chegar lá. Em vez de uma compra grande, divida a distância até a meta em uma série de compromissos pequenos e escalonados ao longo do tempo. O escalonamento resolve várias das cinco forças de uma vez:

  • Passos pequenos e frequentes significam que nenhuma compra isolada fica ancorada a um pico. Você entra no compromisso fazendo média, como faria com preço médio em uma posição de investimento.
  • Datas de início escalonadas significam expirações escalonadas — sem abismo de renovação, porque seus planos vencem poucos de cada vez, e não todos juntos.
  • Comprometer-se gradualmente significa poder parar ou desacelerar no momento em que o uso enfraquecer, em vez de descobrir o compromisso excessivo um ano depois, com o contrato travado.

media

Mas mantenha os dois trabalhos separados. O escalonamento gerencia o timing — concentração de compras e abismos de expiração —, não o dimensionamento. Ele não salva uma meta agressiva demais: escalone devagar rumo ao número errado e você ainda termina supercomprometido, só que algumas semanas depois. Acerte a base primeiro; escalone até ela depois.

O porém: dimensionar com base em uma linha em movimento, reconferir a cobertura toda semana, ajustar para expirações e pausar nas quedas é um trabalho genuinamente contínuo. Feito à mão, é um trabalho de meio período que ninguém tem. É exatamente essa lacuna que a automação foi construída para preencher.

Como o PerfectScale for Commitments automatiza isso

O PerfectScale for Commitments é a resposta da DoiT para o problema do dimensionamento. Ele executa a versão contínua de tudo o que foi descrito acima — dimensionamento, escalonamento e compra. Assim, você obtém a cobertura de uma estratégia agressiva com a segurança de uma conservadora, sem que ninguém precise ficar de babá de planilha. Veja como ele responde a cada desafio.

Um mecanismo de recomendações que se mantém atualizado. Em vez de um retrato trimestral, o PerfectScale for Commitments atualiza a análise continuamente com base no seu uso recente. Ele deliberadamente exclui gastos já tratados em outro lugar, como cobertura existente e planos prestes a expirar, para dimensionar sua verdadeira necessidade líquida nova, sem contagem dupla.

Perfis de risco que são simplesmente metas de cobertura. O enquadramento conservador / equilibrado / agressivo descrito acima já vem embutido como perfis selecionáveis (Conservador ≈ 65%, Equilibrado ≈ 80%, Economia Máxima ≈ 90%). Você escolhe sua postura; o mecanismo a traduz em um compromisso-alvo e calibra as compras para atingi-lo. Equilibrado é o padrão porque é a resposta certa para a maioria dos workloads de produção.

Escalonamento executado semanalmente, em que só o próximo passo é efetivo. O PerfectScale for Commitments transforma sua meta em um cronograma de pequenos passos semanais. O ponto crucial: ele só efetiva o próximo passo — o resto da escada é uma projeção, e o plano é recalculado a cada ciclo com dados de uso recentes. Se o uso sobe, a escada fica mais íngreme; se cai, a escada fica mais suave. Você nunca fica preso a um plano desenhado semanas atrás.

Uma proteção contra comprar durante uma queda. Se seu gasto elegível cair de uma semana para outra além de um limite, o PerfectScale for Commitments pula a compra daquele ciclo em vez de se comprometer em plena queda. Essa é a forma mais comum de os times se supercomprometerem manualmente — e ela é tratada automaticamente.

Renovações automáticas — sem abismo. Planos que estão expirando são detectados com antecedência e renovados como compras agendadas próprias, para que a cobertura não caia quando um plano vence. A renovação é dimensionada proporcionalmente ao que está expirando, e não montada em cima de um chute novo.

Monitoramento de desperdício depois da compra. O dimensionamento não termina na compra. O PerfectScale for Commitments observa a utilização e sinaliza qualquer queda significativa, para que um compromisso excessivo apareça como um alerta em dias — e não como uma linha da fatura que você só percebe na renovação.

Você continua no controle. Por padrão, o PerfectScale for Commitments roda no modo com aprovação obrigatória: ele prepara cada compra e pergunta antes de executar, de modo que nada acontece sem um "sim" humano. Times que preferem uma operação totalmente automática podem mudar para o modo autônomo (em breve). Nos dois casos, você define um teto máximo de compromisso que o sistema nunca vai ultrapassar, pode pausar e retomar a qualquer momento, e qualquer passo que empurraria seu total além de um nível de compromisso já aprovado dispara uma nova aprovação em vez de passar despercebido.

Toda compra automatizada passa por uma etapa de validação antes de ser executada: precisa corresponder ao prazo, à opção de pagamento e ao teto que você escolheu, cair dentro da sua janela de compra permitida — e não dispara enquanto outra compra de compromisso já estiver na fila fora do sistema, para você não acabar com compras duplicadas acidentais se acumulando. Cada plano criado pelo PerfectScale for Commitments é marcado como tal, de modo que seu inventário mostra sempre exatamente quais commitments foram automatizados e quais você comprou por conta própria. Quando uma compra é feita ou precisa da sua aprovação, você é notificado.

O efeito final: a decisão de dimensionamento deixa de ser um evento trimestral estressante e vira uma política mantida continuamente. Você escolhe uma postura de cobertura e um teto uma única vez; o sistema faz o trabalho semanal de acertar o alvo, desviar das quedas e renovar as expirações com segurança — e com uma trilha de auditoria completa.

Como é fazer bem-feito: um framework rápido de decisão

Você não precisa de automação para pensar corretamente sobre dimensionamento. Precisa dela para agir corretamente toda semana. Veja como eu combinaria postura e situação:

Sua situação Postura de cobertura Automatizar?
Base estável e previsível; workload maduro Agressiva (~90%) Sim — o ganho é real e o risco é baixo, mas só a automação sustenta cobertura alta de forma confiável sem passar do ponto.
Produção estável com variação normal de semana em semana Equilibrada (~80%) Sim — é o ponto ideal; o escalonamento suaviza a variação.
Uso com picos, sazonal ou em crescimento acelerado Conservadora (~65%), escalonada Com certeza — é aqui que o alvo se move mais rápido, então é aqui que o dimensionamento manual fica mais defasado.
Em plena migração ou right-sizing ativo Conservadora, passos pequenos, right-sizing primeiro Sim — comprometa-se gradualmente com a base que encolhe; nunca em big bang.
Gasto pequeno/estável em que um chute errado sai barato Qualquer uma Opcional — o esforço pode ainda não compensar.

O fio condutor: quanto mais seu uso se move, mais você se beneficia de se comprometer (a economia é grande) e mais difícil é dimensionar à mão (o alvo não fica parado). Essa combinação de alto valor e alta dificuldade é exatamente onde a automação se paga.

TL;DR

  • O compromisso "certo" é um alvo em movimento, não um número fixo. Seu uso muda de propósito; seu processo de dimensionamento precisa mudar junto.
  • Comprometa-se com a base durável — a computação que está ligada 24 horas por dia, não a semana média nem o pico. Expresse isso como uma política de cobertura com um teto.
  • Cobertura e utilização são métricas diferentes que se contrapõem. Dimensionar é escolher onde ficar entre "deixar economia na mesa" e "pagar por compromisso ocioso".
  • Dimensionamento e escalonamento são dois trabalhos. O dimensionamento escolhe o número certo; o escalonamento chega a ele em pequenos passos para reduzir o risco de timing e os abismos de expiração. O escalonamento não conserta uma meta agressiva demais.
  • Escalone rumo à base em vez de chutar um valor em dólares e deixe a automação, como o PerfectScale for Commitments, cuidar do trabalho semanal: dimensionamento contínuo, escalonamento sensível a quedas, renovações automáticas, monitoramento de desperdício e um teto rígido de compromisso sob seu controle.

Pronto para parar de chutar?

Se você dimensiona AWS Savings Plans à mão a cada trimestre, quase certamente está deixando economia na mesa ou carregando compromisso que não usa — geralmente os dois, em cantos diferentes da fatura. O PerfectScale for Commitments transforma isso em uma política que você define uma vez e em um sistema que a mantém, com você no controle do teto e das aprovações.