\n\n\n\n Meus custos de infraestrutura ocultos mataram meu orçamento - AgntMax \n

Meus custos de infraestrutura ocultos mataram meu orçamento

📖 12 min read2,390 wordsUpdated Apr 1, 2026

Olá a todos, Jules Martin aqui, de volta ao agntmax.com. Espero que todos estejam bem. Hoje, quero falar sobre algo que tem me incomodado ultimamente, algo que tenho visto surgir em mais conversas e post-mortems de projetos do que gostaria de admitir: o impacto invisível dos custos de infraestrutura não otimizados. Todos sabemos que é preciso construir rápido, escalar rapidamente e entregar funcionalidades ontem. Mas muitas vezes, nessa pressa, deixamos para trás uma trilha de recursos esquecidos, instâncias superdimensionadas e serviços que operam no piloto automático, acumulando contas que mal olhamos antes da revisão orçamentária trimestral cair como uma tonelada de tijolos.

Portanto, neste artigo, vou me aprofundar em otimização de custos, mas com um ângulo muito específico e oportuno: como parar de perder dinheiro em recursos “sempre ligados” que deveriam ser “sob demanda” ou “ativados por evento.” Estamos em 2026, pessoal. Os dias de provisionamento de servidores à la carte acabaram. Se a sua conta de nuvem ainda se parece com uma lista telefônica, é hora de agir.

O Assassino Silencioso: Sempre Ligado Quando Deveria Estar Sob Demanda

Sejamos realistas. Quando estamos sob pressão para lançar uma nova ferramenta para os agentes ou uma melhoria no atendimento ao cliente, o custo geralmente fica em segundo plano em relação à funcionalidade e à rapidez. Provisionamos uma instância EC2 que é “grande o suficiente”, talvez até “um pouco maior só para garantir.” Lançamos um banco de dados com IOPS provisionados que poderiam gerenciar toda a internet, apenas para que ele fique principalmente ocioso durante as horas de baixo movimento. Esquecemos de configurar políticas adequadas de escalonamento, ou simplesmente deixamos as coisas funcionando 24/7 porque, bem, é mais fácil do que se preocupar com isso.

Eu vi isso com meus próprios olhos há alguns meses com o novo painel de análise interna de um cliente. A equipe, que Deus os abençoe, construiu um sistema fantástico que fornecia aos agentes insights em tempo real das interações com os clientes. Foi uma enorme vitória para o desempenho. Mas quando a primeira conta de nuvem completa chegou, o diretor financeiro quase teve um ataque cardíaco. Eles tinham provisionado um cluster EKS robusto, algumas instâncias RDS de ponta e uma infinidade de funções Lambda com alocações de memória generosas, todas funcionando sem parar. O melhor de tudo? O painel era utilizado principalmente pelos agentes durante o horário comercial, das 9h às 17h, de segunda a sexta. Fora isso, era uma cidade fantasma.

Eles estavam pagando por uma capacidade de nível empresarial para um sistema que estava efetivamente inativo 70% da semana. É como comprar um carro de Fórmula 1 para ir ao supermercado uma vez por semana.

Identifique os Culpados: Para Onde Seu Dinheiro Realmente Está Indo

Antes de poder consertar qualquer coisa, você precisa saber o que está quebrado. A maioria dos provedores de nuvem oferece ferramentas para ajudá-lo a visualizar seus gastos, e você precisa absolutamente utilizá-las. AWS Cost Explorer, Azure Cost Management, Google Cloud Billing reports – não são apenas para finanças. Eles são sua primeira linha de defesa.

Os Suspeitos Habituales

  • Instâncias de Computação (EC2, VMs): Normalmente, são os maiores culpados. Estão superdimensionadas? Funcionam quando não deveriam? Você está usando a família de instâncias correta para sua carga de trabalho?
  • Bancos de Dados (RDS, Azure SQL, Cloud SQL): Assim como no caso das instâncias de computação, os bancos de dados podem ser superprovisionados em IOPS, CPU ou memória. Muitos oferecem agora opções sem servidor que chegam a zero ou a um custo próximo de zero quando estão inativos.
  • Armazenamento (Volumes EBS, Discos Não Anexados): Você já lançou uma instância, a terminou, mas deixou o volume de armazenamento associado para trás? Isso acontece mais frequentemente do que você imagina.
  • Rede (Transferência de Dados, NAT Gateways): Os custos de transferência de dados podem te surpreender, especialmente entre regiões. As NAT Gateways também têm um custo por hora, mesmo que não estejam fazendo nada.
  • Serviços Subutilizados: Você está pagando por um cache Redis dedicado que tem apenas alguns acessos por dia? Um cluster Kafka gerenciado para uma fila de mensagens?

Meu cliente do painel de análise começou examinando seu AWS Cost Explorer. Os maiores itens de despesas eram, previsivelmente, EC2 e RDS. Eles também encontraram alguns volumes EBS anexados a instâncias terminadas e uma NAT Gateway em uma VPC que não estava mais sendo usada para tráfego de produção. Pequenas coisas, mas isso se acumula.

Estratégias para Transformar Sempre Ligado em Sob Demanda (ou Fora do Pico)

Ok, você identificou os áreas onde está gastando demais. Vamos para a parte divertida: consertar isso. O objetivo não é apenas economizar dinheiro, mas construir um sistema mais resiliente e eficiente que consome recursos apenas quando realmente precisa.

1. Programe o Início/Parada das Instâncias

Esse é provavelmente o fruto mais fácil para muitas aplicações. Se suas ferramentas internas ou ambientes de staging só são usados durante o horário comercial, não há razão para que funcionem 24/7. A maioria dos provedores de nuvem oferece maneiras nativas de programar ciclos de energia das instâncias, ou você pode criar sua própria solução com funções sem servidor.

Exemplo Prático: Agendador EC2 AWS com Lambda

Você pode criar uma função Lambda simples acionada por eventos do CloudWatch (expressões CRON) para parar e iniciar instâncias EC2 com base em tags. Aqui está uma versão simplificada do código da função Lambda (Python):


import boto3

def lambda_handler(event, context):
 ec2 = boto3.client('ec2')
 
 # Definir tags para identificar as instâncias a parar/iniciar
 # Por exemplo, 'Schedule': 'business-hours'
 
 # Recuperar todas as instâncias em execução com a tag 'Schedule' definida como 'business-hours'
 running_instances = ec2.describe_instances(
 Filters=[
 {'Name': 'instance-state-name', 'Values': ['running']},
 {'Name': 'tag:Schedule', 'Values': ['business-hours']}
 ]
 )
 
 stop_instance_ids = []
 for reservation in running_instances['Reservations']:
 for instance in reservation['Instances']:
 stop_instance_ids.append(instance['InstanceId'])
 
 if stop_instance_ids:
 print(f"Parando instâncias: {stop_instance_ids}")
 ec2.stop_instances(InstanceIds=stop_instance_ids)
 else:
 print("Nenhuma instância para parar.")
 
 # --- Lógica similar para iniciar instâncias em outro momento ---
 # Você teria outra função Lambda/Eventos CloudWatch para iniciar,
 # ou combinar a lógica com uma tag 'start'.
 
 return {
 'statusCode': 200,
 'body': 'Agendamento das instâncias EC2 concluído.'
 }

Você deve configurar duas regras de eventos do CloudWatch: uma para acionar esta Lambda, digamos, às 18h UTC para parar as instâncias, e outra às 7h UTC para iniciá-las. Isso pode, por si só, reduzir os custos de computação em mais de 70% para esses recursos específicos.

2. Adote o Sem Servidor e a Orquestração de Contêineres

Se sua carga de trabalho é realmente esporádica ou acionada por eventos, o sem servidor é seu melhor aliado. AWS Lambda, Azure Functions, Google Cloud Functions – elas chegam a zero quando não estão sendo usadas, o que significa que você paga apenas pelo processamento quando seu código realmente está em execução. Isso é uma enorme mudança em relação ao paradigma “sempre ligado”.

Para aplicações mais complexas que ainda requerem serviços persistentes mas têm demanda fluctuante, as plataformas de orquestração de contêineres como Kubernetes (EKS, AKS, GKE) combinadas com escalonamento inteligente são poderosas. Os Horizontal Pod Autoscalers (HPA) podem ajustar o tamanho dos seus pods de aplicação com base no uso de CPU ou em métricas personalizadas. Os Cluster Autoscalers podem até adicionar ou remover nós do seu cluster conforme a demanda muda.

Meu cliente refatorou partes de seu painel de análise para usar Lambda para gerar alguns relatórios que só eram solicitados algumas vezes por dia. Em vez de uma instância EC2 dedicada executando um cron job, uma função Lambda era acionada por um evento S3 (novos arquivos carregados) ou uma solicitação da API Gateway. As economias foram imediatas e significativas.

3. Dimensione Corretamente Seus Bancos de Dados com o Sem Servidor ou Auto-Escalabilidade

Os bancos de dados muitas vezes são problemáticos, pois a persistência de dados é crítica. No entanto, muitos bancos de dados modernos oferecem opções sem servidor ou de auto-escalabilidade que não estavam amplamente disponíveis há alguns anos.

  • AWS Aurora Serverless v2 : É uma mudança significativa. Ele ajusta a capacidade com base no uso real, variando de frações de um ACU (Unidade de Capacidade Aurora) até centenas, e você paga apenas pelo que usa. Não há mais necessidade de provisionar uma capacidade de pico enquanto a maior parte do tempo você opera com carga de base.
  • Azure SQL Database Serverless : Semelhante ao Aurora Serverless, ele se adapta automaticamente à capacidade de computação e faz uma pausa quando está inativo, resultando em economias significativas para cargas de trabalho intermitentes.
  • DynamoDB On-Demand : Para cargas de trabalho NoSQL, o modo de capacidade sob demanda do DynamoDB significa que você paga por consulta, sem ter que provisionar unidades de capacidade de leitura/escrita. Perfeito para padrões de tráfego imprevisíveis.

O painel de análises usava originalmente uma instância RDS PostgreSQL grande com IOPS provisionadas. Após a migração para o Aurora Serverless v2, os custos de banco de dados deles caíram quase 60%, simplesmente porque não funcionava mais em plena capacidade durante os horários de menor movimento.

4. Limpe os Armazenamentos Não Anexados e os Snapshots

Isso pode parecer básico, mas é uma fonte constante de desperdício de dinheiro. Quando você encerra uma instância EC2, seu volume EBS associado nem sempre é excluído por padrão, especialmente se era um volume não raiz. O mesmo se aplica aos snapshots – eles se acumulam rapidamente e podem se tornar caros.

Exemplo Prático: Encontrar e Excluir Volumes EBS Não Anexados (AWS CLI)

Você pode usar a AWS CLI para encontrar volumes não anexados e excluí-los. É uma tarefa comum de limpeza.


# Listar todos os volumes não anexados
aws ec2 describe-volumes --filters Name=status,Values=available --query 'Volumes[*].[VolumeId,Size,CreateTime]' --output table

# Para excluir um volume específico (CUIDADO, É IRREVERSÍVEL)
# Substitua 'vol-xxxxxxxxxxxxxxxxx' pelo ID do volume real
# aws ec2 delete-volume --volume-id vol-xxxxxxxxxxxxxxxxx

Automatize isso com uma função Lambda programada se você cria e exclui ambientes frequentemente. O cliente descobriu vários terabytes de antigos volumes EBS não anexados e centenas de snapshots obsoletos. Excluí-los resultou em economias de algumas centenas de dólares na fatura mensal – não é muito, mas cada pequena ação conta.

5. Otimize os Custos de Rede

As NAT Gateways são fantásticas para permitir que instâncias em sub-redes privadas acessem a Internet, mas geram taxas horárias e taxas de processamento de dados. Se você tem várias NAT Gateways em diferentes zonas de disponibilidade, mas apenas uma está sendo usada ativamente, você está pagando por redundâncias.

  • Consolide as NAT Gateways: Se sua arquitetura permitir, consolide para menos NAT Gateways.
  • Endpoints VPC: Para acessar serviços AWS como S3 ou DynamoDB a partir do seu VPC, use Endpoints VPC. O tráfego flui de maneira privada dentro da rede AWS, evitando os custos das NAT Gateways e oferecendo melhor segurança.

Observamos que o cliente tinha uma NAT Gateway em cada AZ, mesmo que sua aplicação principal funcionasse apenas em duas. Eles puderam consolidar e realizar economias por isso, e depois implementaram Endpoints VPC para acesso ao S3, o que reduziu os custos de processamento de dados através da NAT Gateway.

Ações a serem Tomadas para Seu Próximo Sprint

Não se trata apenas de redução de custos; trata-se de construir sistemas mais inteligentes e eficientes, intrinsicamente conscientes dos custos. Aqui está o que você pode começar a fazer a partir de hoje:

  1. Audite Regularmente Sua Fatura de Nuvem: Torne isso um hábito. Use as ferramentas de gestão de custos do seu provedor de nuvem. Não deixe isso apenas nas mãos das finanças. Entenda para onde vai cada dólar.
  2. Marque Tudo: Isso não é negociável. Marque os recursos por projeto, proprietário, ambiente (dev, staging, prod) e se podem ser programados para desligamento. Isso facilita imensamente a identificação e a automação.
  3. Priorize a Programação para Ambientes Não Produtivos: Os ambientes de staging, dev, QA são candidatos ideais para desligamentos programados fora do horário comercial. Geralmente, essa é a economia mais fácil e rápida.
  4. Avalie o Serverless para Novas Cargas de Trabalho: Se você está construindo algo novo, especialmente microserviços baseados em eventos ou tarefas em segundo plano, sempre considere o serverless primeiro.
  5. Reavalie Suas Escolhas de Banco de Dados: Se você tem bancos de dados que funcionam 24/7 com cargas muito variáveis, examine as opções serverless ou de autoescalonamento para sua tecnologia de banco de dados específica.
  6. Automatize a Limpeza: Implemente scripts automatizados ou funções serverless para identificar e excluir volumes de armazenamento não anexados, snapshots antigos e outros recursos órfãos.
  7. Eduque Sua Equipe: Promova uma cultura de conscientização sobre custos. Certifique-se de que os desenvolvedores compreendam as implicações financeiras de suas escolhas de provisionamento. Isso não é mais apenas um problema de operações.

Parar as perdas relacionadas a recursos “sempre ativos” não é uma solução pontual; é uma disciplina contínua. Mas trazendo essas mudanças, você não só economizará uma quantia significativa de dinheiro para sua empresa, como também construirá uma infraestrutura mais ágil, resiliente e pronta para o futuro. E, francamente, isso faz de você um jogador melhor no cenário tecnológico.

Isso é tudo por minha parte desta vez. Continue construindo com inteligência, e nos veremos na próxima!

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: benchmarks | gpu | inference | optimization | performance
Scroll to Top