Tipos de Instâncias EC2
Entendendo os Tipos de Instância
O tipo de instância determina os recursos de hardware (CPU, RAM, rede, armazenamento) disponíveis para seu servidor virtual. A AWS oferece mais de 500 tipos de instâncias!
┌─────────────────────────────────────────────────────────────┐
│ NOMENCLATURA DAS INSTÂNCIAS │
├─────────────────────────────────────────────────────────────┤
│ │
│ t3.large │
│ │ │ │
│ │ └── Tamanho (nano, micro, small, │
│ │ medium, large, xlarge, 2xlarge) │
│ │ │
│ └── Família + Geração │
│ (t=burstable, 3=3ª geração) │
│ │
│ Exemplos: │
│ • t3.micro = Burstable, 3ª gen, muito pequena │
│ • m5.xlarge = General purpose, 5ª gen, extra large │
│ • c6i.2xlarge = Compute otimizada, 6ª gen Intel │
│ • r5.4xlarge = Memory otimizada, 5ª gen │
│ │
└─────────────────────────────────────────────────────────────┘
As Famílias de Instâncias
Visão Geral
┌─────────────────────────────────────────────────────────────┐
│ FAMÍLIAS DE INSTÂNCIAS EC2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🎯 GENERAL PURPOSE (T, M) │
│ Equilíbrio CPU/RAM, uso geral │
│ │
│ ⚡ COMPUTE OTIMIZADA (C) │
│ Mais CPU, cálculo intensivo │
│ │
│ 🧠 MEMORY OTIMIZADA (R, X) │
│ Mais RAM, bancos de dados │
│ │
│ 💾 STORAGE OTIMIZADA (I, D, H) │
│ I/O elevado, big data │
│ │
│ 🎮 ACCELERATED COMPUTING (P, G, Inf) │
│ GPU, machine learning │
│ │
└─────────────────────────────────────────────────────────────┘
Família T - Burstable (Uso Geral)
┌─────────────────────────────────────────────────────────────┐
│ FAMÍLIA T (Burstable) │
├─────────────────────────────────────────────────────────────┤
│ │
│ Características: │
│ • Capacidade de "burst" além do baseline │
│ • Acumula créditos de CPU quando inativa │
│ • Econômica para cargas variáveis │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ CPU Usage │ │
│ │ │ │
│ │ 100%| ████ │ │
│ │ | ████ Burst (usa créditos) │ │
│ │ 40%|──────────████─────────────── Baseline │ │
│ │ | ████ ████ │ │
│ │ 0%| ████ ████ │ │
│ │ └──────────────────────────────────► Tempo │ │
│ │ Acumula Usa Acumula │ │
│ │ créditos créditos créditos │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Casos de uso: │
│ ✅ Servidores web com tráfego variável │
│ ✅ Ambientes de desenvolvimento │
│ ✅ Pequenos bancos de dados │
│ ✅ Micro-serviços leves │
│ │
│ ❌ Evite se a carga de CPU for constante > baseline │
│ │
└─────────────────────────────────────────────────────────────┘
Tipos T Comuns:
| Tipo | vCPU | RAM | Baseline CPU | Preço/h (us-east-1) |
|---|---|---|---|---|
| t3.nano | 2 | 0.5 GiB | 5% | $0.0052 |
| t3.micro | 2 | 1 GiB | 10% | $0.0104 |
| t3.small | 2 | 2 GiB | 20% | $0.0208 |
| t3.medium | 2 | 4 GiB | 20% | $0.0416 |
| t3.large | 2 | 8 GiB | 30% | $0.0832 |
Família M - General Purpose
┌─────────────────────────────────────────────────────────────┐
│ FAMÍLIA M (General Purpose) │
├─────────────────────────────────────────────────────────────┤
│ │
│ Características: │
│ • Equilíbrio CPU/RAM │
│ • Sem burst (performance constante) │
│ • Workloads estáveis │
│ │
│ Proporção: ~4 GiB RAM por vCPU │
│ │
│ Casos de uso: │
│ ✅ Aplicações de negócio │
│ ✅ Servidores de aplicação │
│ ✅ Backends corporativos │
│ ✅ Servidores de jogos │
│ ✅ Bancos de dados médios │
│ │
└─────────────────────────────────────────────────────────────┘
Tipos M Comuns:
| Tipo | vCPU | RAM | Preço/h |
|---|---|---|---|
| m5.large | 2 | 8 GiB | $0.096 |
| m5.xlarge | 4 | 16 GiB | $0.192 |
| m5.2xlarge | 8 | 32 GiB | $0.384 |
| m6i.large | 2 | 8 GiB | $0.096 |
Família C - Compute Otimizada
┌─────────────────────────────────────────────────────────────┐
│ FAMÍLIA C (Compute Otimizada) │
├─────────────────────────────────────────────────────────────┤
│ │
│ Características: │
│ • Proporção CPU/RAM alta │
│ • Processadores de alta frequência │
│ • Ideal para cálculo intensivo │
│ │
│ Proporção: ~2 GiB RAM por vCPU │
│ │
│ Casos de uso: │
│ ✅ Processamento em lote (batch) │
│ ✅ Codificação de vídeo │
│ ✅ Servidores de jogos de alta performance │
│ ✅ Modelagem científica │
│ ✅ Machine learning (inferência) │
│ │
└─────────────────────────────────────────────────────────────┘
Tipos C Comuns:
| Tipo | vCPU | RAM | Preço/h |
|---|---|---|---|
| c5.large | 2 | 4 GiB | $0.085 |
| c5.xlarge | 4 | 8 GiB | $0.170 |
| c6i.2xlarge | 8 | 16 GiB | $0.340 |
Família R - Memory Otimizada
┌─────────────────────────────────────────────────────────────┐
│ FAMÍLIA R (Memory Otimizada) │
├─────────────────────────────────────────────────────────────┤
│ │
│ Características: │
│ • Muita RAM │
│ • Ideal para dados em memória │
│ • Bancos de dados de alta performance │
│ │
│ Proporção: ~8 GiB RAM por vCPU │
│ │
│ Casos de uso: │
│ ✅ Bancos de dados relacionais │
│ ✅ Cache distribuído (Redis, Memcached) │
│ ✅ Análise em tempo real │
│ ✅ Apache Spark │
│ ✅ SAP HANA │
│ │
└─────────────────────────────────────────────────────────────┘
Tipos R Comuns:
| Tipo | vCPU | RAM | Preço/h |
|---|---|---|---|
| r5.large | 2 | 16 GiB | $0.126 |
| r5.xlarge | 4 | 32 GiB | $0.252 |
| r5.2xlarge | 8 | 64 GiB | $0.504 |
Tabela de Seleção Rápida
┌─────────────────────────────────────────────────────────────┐
│ GUIA DE SELEÇÃO DE INSTÂNCIA │
├─────────────────────────────────────────────────────────────┤
│ │
│ Sua necessidade → Família recomendada │
│ ────────────────────────────────────────────────────── │
│ │
│ 💡 Orçamento apertado, carga variável → T3 (burstable) │
│ 🏢 Aplicação padrão → M5/M6i │
│ ⚡ Cálculo CPU intensivo → C5/C6i │
│ 🧠 Banco de dados, cache → R5/R6i │
│ 💾 Big Data, data warehouse → I3/D2 │
│ 🎮 Machine Learning, GPU → P4/G4 │
│ │
│ Tamanho inicial recomendado: │
│ • Dev/Test : .micro ou .small │
│ • Produção : .large ou .xlarge │
│ • Scale up conforme necessário │
│ │
└─────────────────────────────────────────────────────────────┘
Processadores e Gerações
Sufixos de Geração
| Sufixo | Significado |
|---|---|
| (nada) | Intel |
| a | AMD (geralmente mais barato) |
| g | AWS Graviton (ARM, econômico) |
| i | Intel última geração |
| d | Armazenamento NVMe local |
| n | Rede aprimorada |
Exemplos:
m5.large= Intelm5a.large= AMD (10-20% mais barato)m6g.large= Graviton (40% mais barato, ARM)m5d.large= Com armazenamento NVMe local
AWS Graviton
┌─────────────────────────────────────────────────────────────┐
│ AWS GRAVITON │
├─────────────────────────────────────────────────────────────┤
│ │
│ Processadores ARM desenvolvidos pela AWS │
│ │
│ Vantagens: │
│ ✅ Até 40% mais barato que Intel │
│ ✅ Melhor relação performance/preço │
│ ✅ Eficiência energética │
│ │
│ Restrições: │
│ ⚠️ Aplicações devem suportar ARM │
│ ⚠️ Alguns softwares não compatíveis │
│ │
│ Compatível: │
│ ✅ Linux, containers, Node.js, Python, Java │
│ ❌ Windows, alguns softwares legados │
│ │
└─────────────────────────────────────────────────────────────┘
Exercício Prático: Escolhendo o Tipo Certo
Cenário 1: Site WordPress
Contexto:
- Site institucional de PME
- 500 visitantes/dia
- Picos ocasionais (promoções)
- Orçamento limitado
Análise:
- Carga variável → Burstable
- Baixo tráfego → Tipo pequeno
- Orçamento → Econômico
✅ Recomendação: t3.micro ou t3.small
Justificativa: Créditos burst cobrem os picos,
custo mínimo para carga baixa
Cenário 2: Banco de Dados PostgreSQL
Contexto:
- Aplicação de negócio
- 50 usuários simultâneos
- Base de 100 GB
- Consultas complexas
Análise:
- Precisa de RAM para cache → Memory
- Carga constante → Sem burst
- Produção → Performance estável
✅ Recomendação: r5.large ou r5.xlarge
Justificativa: 16-32 GB RAM para cache do PostgreSQL,
performance constante
Cenário 3: Servidor de Jogo Minecraft
Contexto:
- 20 jogadores máx
- Mundo com mods
- Alta responsividade
Análise:
- CPU intensivo → Compute
- Mods = RAM → Médio
- Responsividade → Frequência de CPU alta
✅ Recomendação: c5.large ou m5.large
Justificativa: Bom equilíbrio CPU/RAM,
frequência de CPU alta para responsividade
Boas Práticas
1. Comece Pequeno
DEV → TESTE → STAGING → PRODUÇÃO
t3.micro t3.small t3.medium m5.large
Monitore as métricas e ajuste conforme necessário.
2. Use as Métricas
Métricas do CloudWatch para monitorar:
CPU Utilization
├── < 20% constantemente → Muito grande, reduza
├── 40-70% → Ótimo
└── > 80% constantemente → Muito pequena, aumente
Memory Utilization
├── < 50% → Talvez RAM em excesso
└── > 80% → Risco de swap, aumente
3. Considere Graviton
Se sua aplicação for:
✅ Linux
✅ Containerizada ou interpretada (Python, Node, Java)
✅ Open source
→ Teste instâncias Graviton (g) para economizar!
Resumo
| Família | Característica | Caso de Uso |
|---|---|---|
| T | Burstable | Dev, sites variáveis |
| M | Equilibrado | Aplicações gerais |
| C | CPU forte | Cálculo, codificação |
| R | RAM forte | Banco de dados, cache |
| I/D | Storage forte | Big Data |
| P/G | GPU | ML, gráficos |
Quiz de Validação
- O que significa "t3.large"?
- Qual família para um banco de dados em memória?
- O que é "burst" na família T?
- Qual sufixo indica um processador AMD?
- Por que escolher Graviton?
- Por qual tamanho começar em um novo projeto?
Próxima seção: Autenticação e Pares de Chaves