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
| Recurso | Métrica | Limite de superdimensionamento |
|---|---|---|
| EC2 | CPU média | < 40% em 14 dias |
| EC2 | Memória | < 40% em 14 dias |
| RDS | CPU média | < 40% em 14 dias |
| RDS | Conexões | < 20% do máximo |
| Lambda | Memó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ção | Economia potencial | Esforço |
|---|---|---|
| Excluir recursos não utilizados | 10-30% | Baixo |
| Parar instâncias DEV à noite/fim de semana | 70% em DEV | Baixo |
| Excluir volumes EBS órfãos | Variável | Baixo |
| Excluir snapshots antigos | Variável | Baixo |
| Migrar gp2 para gp3 | 20% em EBS | Médio |
Ações de Médio Prazo
| Ação | Economia potencial | Esforço |
|---|---|---|
| Rightsizing EC2/RDS | 20-50% | Médio |
| Reserved Instances/Savings Plans | 30-60% | Médio |
| S3 Lifecycle Policies | 50-90% em armazenamento | Médio |
| Spot Instances para batch | 60-90% | Médio |
Ações de Longo Prazo
| Ação | Economia potencial | Esforço |
|---|---|---|
| Arquitetura serverless | 30-70% | Alto |
| Multi-região otimizada | Variável | Alto |
| 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 :
-
Scheduling DEV/TEST : 5 instâncias × 70% OFF = -$490/mês
-
Rightsizing PROD : m5.xlarge → m5.large = -$350/mês
-
Reserved Instances PROD : 5 instâncias 1 ano = -$280/mês
-
EBS órfãos : Excluir 100 GB = -$10/mês
-
gp2 → gp3 : 500 GB = -$10/mês
-
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