Pular para o conteúdo principal

Otimização Prática de Custos AWS

Introdução​

A otimização de custos AWS não é um evento pontual, mas um processo contínuo. Este capítulo apresenta técnicas práticas e imediatas para reduzir suas faturas AWS.

Os 7 Alavancas de Otimização​

┌─────────────────────────────────────────────────────────────────┐
│ 7 ALAVANCAS DE OTIMIZAÇÃO AWS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. RIGHTSIZING Ajustar o tamanho dos recursos │
│ 2. SCHEDULING Parar quando não estiver em uso │
│ 3. RESERVED/SAVINGS Compromisso para descontos │
│ 4. SPOT INSTANCES Usar capacidade excedente │
│ 5. STORAGE TIERING Mover para armazenamento mais barato │
│ 6. DATA TRANSFER Otimizar as transferências │
│ 7. ARCHITECTURE Projetar para o custo │
│ │
└─────────────────────────────────────────────────────────────────┘

1. Rightsizing (Dimensionamento)​

Identificar Recursos Superdimensionados​

┌─────────────────────────────────────────────────────────────────┐
│ ANÁLISE RIGHTSIZING │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Instância atual : m5.xlarge (4 vCPU, 16 GB RAM) │
│ Custo : $140/mês │
│ │
│ Utilização observada (30 dias) : │
│ ┌────────────────────────────────────────────┐ │
│ │ CPU ████░░░░░░░░░░░░░░░░ 20% média │ │
│ │ RAM ██████░░░░░░░░░░░░░░ 30% média │ │
│ └────────────────────────────────────────────┘ │
│ │
│ Recomendação : t3.medium (2 vCPU, 4 GB RAM) │
│ Novo custo : $30/mês │
│ Economia : $110/mês (78%) │
│ │
└─────────────────────────────────────────────────────────────────┘

Métricas a Monitorar​

RecursoMétricaLimite de superdimensionamento
EC2CPU média< 40% em 14 dias
EC2Memória< 40% em 14 dias
RDSCPU média< 40% em 14 dias
RDSConexões< 20% do máximo
LambdaMemória usada< 50% alocada

Ações Recomendadas​

Superdimensionado (CPU < 40%)     → Reduzir um tamanho
Bem dimensionado (40-80%) → Manter
Subdimensionado (> 80%) → Aumentar ou Auto Scale

2. Scheduling (Planejamento)​

Ambientes Não-Produtivos​

┌─────────────────────────────────────────────────────────────────┐
│ SCHEDULING NÃO-PROD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Ambiente DEV/TEST : │
│ │
│ Horário comercial : 8h - 18h (10h/dia) │
│ Dias úteis : Segunda - Sexta (5 dias) │
│ │
│ Horas ON : 10h × 5d = 50h/semana │
│ Horas OFF : 168h - 50h = 118h/semana │
│ │
│ Economia potencial : 70%! │
│ │
│ Implementação : │
│ • AWS Instance Scheduler │
│ • Lambda + CloudWatch Events │
│ • Tags : Schedule=office-hours │
│ │
└─────────────────────────────────────────────────────────────────┘

Script de Scheduling Simples​

# Lambda para parar instâncias DEV à noite
import boto3

def lambda_handler(event, context):
ec2 = boto3.client('ec2')

# Encontrar instâncias com tag Environment=dev
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev', 'test']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)

instance_ids = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])

if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"Parou {len(instance_ids)} instâncias")

3. Reserved Instances e Savings Plans​

Comparação das Opções​

┌─────────────────────────────────────────────────────────────────┐
│ OPÇÕES DE COMPROMISSO │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ON-DEMAND (Sem compromisso) │
│ └── Preço cheio, máxima flexibilidade │
│ Ideal para : workloads imprevisíveis │
│ │
│ RESERVED INSTANCES (1 ou 3 anos) │
│ └── Até -72% vs On-Demand │
│ Atrelado a : tipo de instância + região │
│ Ideal para : workloads estáveis e previsíveis │
│ │
│ SAVINGS PLANS (1 ou 3 anos) │
│ └── Até -72% vs On-Demand │
│ Mais flexível que RI │
│ Compute SP : EC2, Fargate, Lambda │
│ EC2 SP : família de instância em uma região │
│ │
│ SPOT INSTANCES │
│ └── Até -90% vs On-Demand │
│ Pode ser interrompido com 2 min de aviso │
│ Ideal para : batch, CI/CD, workloads tolerantes │
│ │
└─────────────────────────────────────────────────────────────────┘

Estratégia de Cobertura​

┌─────────────────────────────────────────────────────────────────┐
│ ESTRATÉGIA DE COBERTURA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Capacidade total necessária : 100 unidades │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │████████████████████████████████████████░░░░░░░░░░░░░░░░░░░│ │
│ │ Reserved/Savings (60%) │ On-Demand │ Spot │ │
│ │ -60% │ (20%) │ (20%) │ │
│ │ Base estável │ Variável │ -90% │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ Economia global : ~50% │
│ │
└─────────────────────────────────────────────────────────────────┘

4. Otimização de Armazenamento​

S3 Storage Classes​

┌─────────────────────────────────────────────────────────────────┐
│ CLASSES DE ARMAZENAMENTO S3 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ S3 STANDARD $0.023/GB Acesso frequente │
│ ↓ após 30 dias │
│ S3 INFREQUENT ACCESS $0.0125/GB Acesso < 1x/mês │
│ ↓ após 90 dias │
│ S3 GLACIER IR $0.004/GB Arquivo, acesso rápido │
│ ↓ após 180 dias │
│ S3 GLACIER DA $0.00099/GB Arquivo longo prazo │
│ │
│ Economia : Até 95% com lifecycle policies │
│ │
└─────────────────────────────────────────────────────────────────┘

EBS Optimization​

Problemas comuns :
• Volumes não anexados (órfãos) → Excluir
• Snapshots antigos → Lifecycle policy
• gp2 ao invés de gp3 → Migração (20% mais barato)
• Volumes superdimensionados → Reduzir

5. Otimização Lambda​

┌─────────────────────────────────────────────────────────────────┐
│ OTIMIZAÇÃO LAMBDA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ANTES : 1024 MB, 500ms média │
│ Custo : 1M invocações × 0.5s × 1GB = $8.33/mês │
│ │
│ DEPOIS : 512 MB, 600ms média (CPU mais lento) │
│ Custo : 1M invocações × 0.6s × 0.5GB = $5.00/mês │
│ │
│ Economia : 40% │
│ │
│ OU │
│ │
│ DEPOIS : 2048 MB, 200ms média (CPU mais rápido) │
│ Custo : 1M invocações × 0.2s × 2GB = $6.67/mês │
│ │
│ Economia : 20% + melhor performance │
│ │
│ → Teste diferentes configurações! │
│ │
└─────────────────────────────────────────────────────────────────┘

6. Checklist de Otimização Rápida​

Ações Imediatas (Quick Wins)​

AçãoEconomia potencialEsforço
Excluir recursos não utilizados10-30%Baixo
Parar instâncias DEV à noite/fim de semana70% em DEVBaixo
Excluir volumes EBS órfãosVariávelBaixo
Excluir snapshots antigosVariávelBaixo
Migrar gp2 para gp320% em EBSMédio

Ações de Médio Prazo​

AçãoEconomia potencialEsforço
Rightsizing EC2/RDS20-50%Médio
Reserved Instances/Savings Plans30-60%Médio
S3 Lifecycle Policies50-90% em armazenamentoMédio
Spot Instances para batch60-90%Médio

Ações de Longo Prazo​

AçãoEconomia potencialEsforço
Arquitetura serverless30-70%Alto
Multi-região otimizadaVariávelAlto
Containerização (Fargate)20-40%Alto

7. Ferramentas AWS para Otimização​

┌─────────────────────────────────────────────────────────────────┐
│ FERRAMENTAS AWS FINOPS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AWS COST EXPLORER │
│ └── Visualização de custos, tendências, previsões │
│ │
│ AWS BUDGETS │
│ └── Alertas quando orçamento excede │
│ │
│ AWS TRUSTED ADVISOR │
│ └── Recomendações automáticas │
│ │
│ AWS COMPUTE OPTIMIZER │
│ └── Rightsizing EC2, Lambda, EBS │
│ │
│ AWS COST ANOMALY DETECTION │
│ └── Detecção automática de anomalias │
│ │
│ SAVINGS PLANS RECOMMENDATIONS │
│ └── Recomendações de compromisso │
│ │
└─────────────────────────────────────────────────────────────────┘

Exercício Prático​

Cenário : Otimize esta fatura​

Fatura mensal atual : $5.000

Distribuição :
• EC2 (10 instâncias m5.xlarge 24/7) : $1.400
• RDS (db.r5.large Multi-AZ) : $400
• EBS (500 GB gp2) : $50
• S3 (10 TB Standard) : $230
• Data Transfer (500 GB) : $45
• Lambda (50M invocações) : $100
• Outros : $2.775

Observações :
• 5 instâncias EC2 são para DEV/TEST
• CPU média EC2 PROD : 35%
• 3 TB de dados S3 têm > 1 ano
• 100 GB EBS não anexados
Ver recomendações

Otimizações recomendadas :

  1. Scheduling DEV/TEST : 5 instâncias × 70% OFF = -$490/mês

  2. Rightsizing PROD : m5.xlarge → m5.large = -$350/mês

  3. Reserved Instances PROD : 5 instâncias 1 ano = -$280/mês

  4. EBS órfãos : Excluir 100 GB = -$10/mês

  5. gp2 → gp3 : 500 GB = -$10/mês

  6. S3 Lifecycle : 3 TB para Glacier = -$60/mês

Total economizado : ~$1.200/mês (24%)

Nova fatura : ~$3.800/mês

Resumo​

  • Rightsizing : Ajustar os recursos ao uso real
  • Scheduling : Parar recursos não-produtivos
  • Compromisso : Reserved Instances ou Savings Plans para cargas estáveis
  • Spot : Usar para workloads tolerantes a interrupções
  • Armazenamento : Lifecycle policies para S3, excluir órfãos
  • Monitoramento : Usar as ferramentas AWS (Cost Explorer, Trusted Advisor)

Próxima seção : Quiz de Validação