Tem um tipo de fatura que chega com assunto de CFO e tom de CTO. Você já viu. A conta do mês veio maior que a anterior, ninguém mexeu em nada (ou jura que não mexeu), e agora todo mundo quer uma resposta que caiba numa planilha.

Em abril, um cliente nosso (SaaS B2B, ~60 pessoas, São Paulo) pagou USD 47.820 na AWS. Era a terceira vez no ano que a fatura passava a folha do time de engenharia. A gente entrou pra fazer o trabalho chato: explicar o “por quê”, decidir o “o que fica”, e desenhar o “como sai” sem virar religião.

TL;DR
Fatura caiu de USD 47.820 para USD 13.260/mês. Payback em 3.1 meses. 18 meses depois: zero rollback, time SRE cresceu de 3 para 4, MTTR caiu 40%. A virada foi containerizar antes de mover. Isso manteve o botão de “voltar” funcionando.

O que a planilha não te conta

Quando alguém abre um dashboard de custo e diz “EC2 é o problema”, quase sempre está olhando pro lugar errado. O total assusta, mas o que manda é a distribuição. Em geral, 2 ou 3 linhas carregam metade do drama.

Nesse caso, a primeira etapa foi abrir o Cost & Usage Report (CUR) dos últimos 6 meses e cruzar com inventário de workloads. Se você nunca mexeu com CUR, é literalmente a exportação mais completa de custo/uso da AWS. (A própria AWS descreve o CUR e os usos típicos aqui: aws-cost-and-usage-reporting.)

CategoriaUSD/mês% faturaObservação
EC2 (compute)28.14058.8%72% reserved, 28% on-demand
RDS (Postgres)6.42013.4%r6i.2xlarge × 2, multi-AZ
S3 + egress5.89012.3%71% é egress
ELB + NAT GW3.2106.7%NAT GW sozinho: USD 2.840
CloudWatch + logs2.1804.6%retenção de 90 dias em tudo
Outros (Lambda, SQS…)1.9804.2%

O número que mais chamou atenção não foi “EC2”. Foi o NAT Gateway. Ele é um daqueles itens que ninguém otimiza por acidente. E sim, ele tem cobrança por hora e por GB processado (documentação oficial: NAT Gateway pricing).

O que repatriamos (e o que não repatriamos)

A regra que usamos é simples: se o workload tem carga previsível e não exige elasticidade agressiva, ele vai pra infraestrutura privada. No caso, isso cobriu 19 de 23 workloads.

Aqui está o cluster alvo em números (sem “marketing”, só inventário):

# Cluster prod-br-1 · DC parceiro em SP (Tier III)
control_plane:
  nodes: 3
  spec: "AMD EPYC 7313P · 32GB · NVMe 1TB"

workers:
  pool_a:    # compute geral
    nodes: 8
    spec: "AMD EPYC 7543 · 256GB · NVMe 4TB"
  pool_b:    # databases
    nodes: 3
    spec: "AMD EPYC 7443 · 512GB · NVMe 8TB (RAID10)"

networking:
  egress: "2× 10Gbps · BGP multi-homed"

# 14 nós no total · custo all-in: USD 9.840/mês (lease + DC + suporte)

A parte mais importante não foi o hardware. Foi não quebrar o fluxo do time. O deploy continuou igual. O CI continuou igual. A rotina continuou igual. Só a fatura mudou.

— lead SRE no projeto

O que ficou na nuvem (e por quê)

Quatro workloads ficaram na AWS, por um motivo bem prático: repatriar por dogma custa caro.

  • ETL com burst de GPU — roda poucas horas por semana e precisa de pico. Comprar GPU pra usar 2% do tempo é um jeito eficiente de torrar caixa.
  • E-mail transacional — reputação de IP e entregabilidade demoram anos. Não faz sentido recomeçar do zero.
  • DNS + CDN — distribuição global não mora num rack em SP.
  • Disaster recovery — réplica fria do banco numa região externa. Custo baixo, paz alta.

Total que ficou na AWS: USD 3.420/mês. Total Fixx (cluster + gestão + agente IA): USD 9.840/mês. Total combinado: USD 13.260/mês.

Os números, 18 meses depois

O mês 1 engana. O mês 18 diz a verdade. Aqui estão os indicadores que acompanhamos:

MétricaAntes (AWS)Hoje (Fixx)Δ
Custo mensalUSD 47.820USD 13.260−72%
p99 latência (checkout)340ms180ms−47%
MTTR incidente P152 min31 min−40%
Deploys / semana3861+60%
Time SRE (pessoas)34+1
Rollbacks emergenciais2 / mês0 desde mês 4

A latência cair foi efeito colateral. Tinha um hop de rede desnecessário que sumiu no caminho. O MTTR melhorou por um motivo bem menos “mágico”: o time passou a ver o problema antes do usuário abrir ticket.

O que eu faria diferente

  1. Não mexer no Postgres no dia 1. A gente moveu o banco no mês 2. Em retrospecto, teria sido melhor estabilizar apps primeiro e mover banco depois. Banco é onde o estresse aparece.
  2. Comunicar compliance cedo. Alguns clientes corporativos pedem data center nomeado em contrato. Dá pra resolver, mas tem que entrar no cronograma.
  3. Agente IA não substitui SRE. Ele tira barulho do plantão e melhora triagem. O time continua dono do sistema.
FAÇA EM CASA
Quer rodar essa análise na sua fatura? Se você já tem CUR (CSV ou Athena query), manda. A gente devolve em 48h com a planilha completa e o diagnóstico — sem proposta colada. contato@fixx.com.br