Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - Custo vs Escalabilidade

#autoscaling#custo#escalabilidade#finops#serverless
video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Custo versus Escalabilidade

O trade-off entre custo e escalabilidade é a tensão entre pagar por capacidade que ainda não
é usada e arriscar indisponibilidade quando a demanda chega. Capacidade provisionada acima
do necessário vira custo ocioso mês após mês; capacidade abaixo do necessário vira erro 503
no pico de vendas, e o prejuízo de um incidente costuma superar a economia de meses. Em
produção, a pergunta certa não é "escalar ou economizar", é o quanto de folga o negócio
precisa, em qual camada, e com qual mecanismo de ajuste automático. A resposta depende da
curva de demanda, do custo de indisponibilidade e da elasticidade de cada componente. Este
arquivo trata das duas extremidades, dos mecanismos de escala e de suas curvas de custo, e
dos instrumentos de FinOps que transformam a decisão em processo contínuo.

Superprovisionamento versus insuficiência

As duas falhas têm naturezas diferentes e exigem métricas diferentes. O superprovisionamento
é desperdício silencioso: instâncias ociosas, réplicas paradas, armazenamento não anexado e
ambientes esquecidos não geram alerta, apenas fatura. A insuficiência é ruído alto: latência
que sobe, fila que cresce, erros de limite e, eventualmente, indisponibilidade, com custo
direto em receita e indireto em confiança. O equilíbrio se estabelece por camada: serviços
críticos de receita operam com folga maior e failover testado, e o restante opera com
utilização alvo mais agressiva.

Referências comuns de mercado situam a utilização média saudável entre cinquenta e setenta
por cento para serviços elásticos, com margem para absorver pico e para sobreviver à perda
de uma zona. O objetivo operacional é utilização estável e monitorada, e não o máximo
teórico, porque utilização acima de oitenta por cento elimina a folga que absorve picos,
reinícios e falhas. Headroom, nesse contexto, não é desperdício; é prêmio de seguro pago por
hora de máquina.

Escala vertical e horizontal

A escala vertical aumenta o recurso da mesma máquina, e ganha pela simplicidade: nenhum
código precisa mudar, e o estado local continua funcionando. O teto, porém, é físico e
econômico, porque instâncias maiores cobram prêmio por capacidade, e a máquina única é ponto
único de falha; redimensionar costuma exigir janela de indisponibilidade. A escala
horizontal adiciona máquinas, e exige que o serviço seja sem estado ou tenha o estado
externalizado em banco e cache distribuído; entram o custo de projeto do balanceamento, da
descoberta de serviço e da gestão de dados particionados.

O custo da escala horizontal não é linear: a cada passo aparecem coordenação, consistência
eventual entre réplicas e operação de mais peças. A política prática usa as duas formas
juntas: vertical até o teto econômico por instância, horizontal conforme a demanda, com
autoscaling baseado em métrica de experiência do usuário, como latência p95, em vez de
apenas CPU. Essa combinação mantém o desenho simples nos limites conhecidos e elástico nos
limites incertos.

As curvas de custo do serverless

Serverless muda a forma da curva: paga-se por invocação e por duração, com custo próximo de
zero em carga baixa ou intermitente, e sem custo de manter servidor ligado. Essa forma é
ideal para carga esporádica, job agendado, endpoint de baixo volume e tráfego de validação
de produto. Em utilização constante e alta, a curva inverte: o custo por unidade de trabalho
do serverless fica acima do custo de capacidade reservada, porque o preço por invocação
embute a margem da elasticidade. O ponto de cruzamento depende da utilização média, e por
isso a análise precisa ser feita com dados reais de tráfego, e não com tarifa isolada.
Custos ocultos também pesam: cold start em cargas sensíveis a latência, transferência de
dados entre serviços e a operação de estado externo, já que funções são sem estado por
natureza. A política comum é serverless nas pontas e nos picos, e capacidade provisionada no
núcleo de tráfego constante.

Modelo Curva de custo Melhor cenário Risco principal
Instância reservada Fixo por período Carga estável e previsível Pagamento por capacidade ociosa
Contêiner com autoscaling Variável com a demanda Carga com padrão conhecido Limites de escala mal calibrados
Serverless Proporcional à invocação Carga esporádica e picos Custo alto em utilização constante
Escala vertical Degraus por tamanho Migração rápida e simples Teto físico e ponto único

Cenários de decisão por carga

Três cargas típicas ilustram a escolha. A carga estável de núcleo de negócio, com tráfego
previsível de dia útil, encaixa em contêineres com dimensionamento fixo e compromisso de
uso, porque previsibilidade compra desconto. A carga esporádica, como processamento de
upload e endpoints de integração raramente chamados, encaixa em serverless, porque pagar por
invocação é mais barato que manter máquina acesa. A carga explosiva e sazonal, como campanha
de vendas, encaixa em autoscaling agressivo com fila amortecendo o pico, porque provisionar
o pico permanente seria inviável.

O erro comum é aplicar um único modelo a toda a carga por simplicidade de operação. A
inconsistência de modelos tem custo administrativo real, e a decisão de padronizar deve ser
consciente e registrada, preferindo padronizar por domínio de carga, e não pela empresa
inteira de uma vez.

Custo total de propriedade

A fatura de infraestrutura é apenas parte do custo real, e a comparação honesta usa TCO. Um
serviço autogerenciado parece mais barato na planilha até incluir o custo das pessoas que o
operam: plantão, patches, upgrade de versão, backup testado e resposta a incidente. Serviço
gerenciado cobra prêmio e transfere esse trabalho; a troca costuma ser vantajosa quando o
time é pequeno e o custo de mão de obra domina a conta. TCO também inclui licenças,
treinamento, risco de indisponibilidade e o custo de oportunidade do time, que deixa de
entregar feature enquanto opera infraestrutura.

Custos invisíveis de nuvem merecem atenção específica: transferência de dados entre zonas e
provedores, crescimento de log e armazenamento, snapshots acumulados e ambientes de teste
ligados fora do horário útil. A regra de decisão é comparar o custo total mensal dos dois
caminhos com o mesmo nível de confiabilidade exigido, e não o preço de tabela do componente
isolado.

FinOps na prática

FinOps é a disciplina que conecta engenharia, finanças e negócio no ciclo de decisão de
custo, com três fases consagradas. Informar: alocar cada centavo a um serviço e a um time
por meio de tags consistentes, e publicar showback ou chargeback regular, para que o custo
tenha dono. Otimizar: rightsizing com base em utilização real, descontos por compromisso de
uso, eliminação de recursos órfãos, arquivamento de armazenamento frio e revisão de
arquitetura nos maiores itens da fatura. Operar: metas de custo por unidade de negócio, como
custo por mil requisições ou por cliente ativo, alertas de orçamento antes do estouro e
revisão de custo em toda decisão arquitetural relevante.

A unidade econômica é a métrica que aproxima engenharia do negócio. Sabendo o custo por
requisição, fica evidente quando uma otimização paga, quando um recurso gerenciado justifica
o prêmio e quando um recurso novo ameaça a margem. Cultura é o ponto de partida: engenheiro
que escolhe arquitetura precisa enxergar a fatura que ela gera, e a fatura precisa chegar
segmentada por serviço e por time.

Exemplo prático: autoscaling com limites econômicos

# Política de autoscaling com limites econômicos explícitos
autoscaling:
  min_replicas: 2           # sobrevive à perda de uma zona
  max_replicas: 12          # teto de custo aprovado no orçamento
  metrica: p95_latency_ms   # escala por experiência, e não por CPU
  alvo: 350
  cooldown_segundos: 600    # evita oscilação de réplicas e custo ping-pong
alertas:
  custo_diario_usd: 850     # aviso antes de estourar o teto mensal
  utilizacao_media: 0.75    # acima disso, revisar capacidade provisionada
tags_obrigatorias: [servico, time, ambiente, centro_de_custo]

A política torna explícito o compromisso entre custo e disponibilidade: o mínimo garante
sobrevivência a falha de zona, o máximo protege o orçamento, e a métrica de escala segue a
experiência real do usuário em vez de um proxy genérico. As tags obrigatórias fecham o ciclo
de FinOps, porque sem alocação por serviço não existe showback confiável.

Erros comuns e boas práticas

  • Dimensionar para o pico anual com capacidade fixa: provisione para o padrão comum e absorva o pico com autoscaling e fila.
  • Autoscaling apenas por CPU: métricas de negócio e latência refletem a experiência real, e CPU engana em serviços de I/O.
  • Comparar modelos só pelo preço de tabela: inclua TCO, cold start, transferência de dados e custo de operação das pessoas.
  • Fatura sem dono: sem tags e alocação por time, ninguém otimiza nada; showback regular cria responsabilidade.
  • Compromisso de uso longo sem histórico: reserve apenas a fração estável da carga, com base em utilização real de meses.
  • Cortar capacidade para economizar sem validar: cada corte precisa de teste de carga e de alerta de saturação próximo.