Cenários de alto desempenho e otimização de custos
Responda a questões de cenário sobre estratégias de cache, otimização de consultas em data lakes, diferenças entre Reserved e Spot e arquiteturas com réplicas de leitura.
Cenários de alto desempenho e otimização de custos é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
Cenário 1: armazenamento em cache para reduzir a carga do banco de dados
Cenário: O banco de dados RDS MySQL de um site de notícias atende a 90% de tráfego de leitura de conteúdo de artigos que muda no máximo uma vez por hora. A CPU do banco de dados tem média de 80%, os custos estão aumentando e a latência é de 200 ms por consulta. Solução: Adicione um cluster ElastiCache Redis na frente do RDS usando o padrão de carregamento lento (cache à parte). A aplicação verifica primeiro o cache — quando encontra o conteúdo no cache, retorna o artigo armazenado em menos de 1 ms. Quando não encontra, consulta o RDS, retorna o resultado e grava-o no cache com um TTL de 1 hora. Resultado esperado: taxa de acerto do cache de 90%, CPU do RDS abaixo de 20% e latência inferior a 5 ms para respostas armazenadas em cache.
import boto3, json
elasticache = boto3.client('elasticache')
redis_client = None # assume redis-py client connected to ElastiCache endpoint
def get_article(article_id):
cache_key = 'article:' + str(article_id)
# Check cache first
cached = redis_client.get(cache_key)
if cached:
return json.loads(cached) # cache hit: <1ms
# Cache miss: query RDS
article = rds_query('SELECT * FROM articles WHERE id = %s', article_id)
# Write to cache with 1-hour TTL
redis_client.setex(cache_key, 3600, json.dumps(article))
return articleCenário 2: CloudFront para entrega de recursos estáticos
Cenário: Usuários da região Ásia-Pacífico enfrentam tempos de carregamento de 2 a 4 segundos para uma aplicação web hospedada no EC2 em us-east-1. A aplicação fornece recursos estáticos grandes (imagens, JS, CSS). Solução: Coloque uma distribuição do CloudFront na frente do ALB. Configure um comportamento de cache para o caminho /static/* com um TTL longo (por exemplo, 1 semana), para que os arquivos estáticos sejam armazenados em cache nos locais de borda do CloudFront próximos aos usuários na Ásia. As solicitações dinâmicas da API ignoram o cache com TTL=0. Os usuários asiáticos carregam os recursos estáticos de um local de borda em Singapura ou Tóquio em menos de 100 ms, em vez de esperar pelas viagens de ida e volta até us-east-1.
# CloudFront origin for ALB + separate behaviour for static assets
aws cloudfront create-distribution --distribution-config '{
'Origins': {
'Quantity': 1,
'Items': [{
'Id': 'alb-origin',
'DomainName': 'my-alb.us-east-1.elb.amazonaws.com',
'CustomOriginConfig': {"HTTPSPort": 443, "OriginProtocolPolicy": "https-only"}
}]
},
'CacheBehaviors': {
'Quantity': 1,
'Items': [{
'PathPattern': '/static/*',
'DefaultTTL': 604800,
'MaxTTL': 604800
}]
},
'DefaultCacheBehavior': {"DefaultTTL": 0}
}'Cenário 3: dimensionamento adequado com Compute Optimizer
Cenário: Uma empresa tem 500 instâncias EC2, muitas provisionadas há 3 anos com tipos de instância grandes. A fatura da AWS é alta, mas a empresa não sabe quais instâncias estão superdimensionadas. Solução: Habilite o AWS Compute Optimizer (gratuito, usa 14 dias de métricas do CloudWatch). O Compute Optimizer analisa a utilização real de CPU, memória, rede e disco de cada instância e fornece recomendações para dimensioná-las corretamente. Uma t3.xlarge com média de 8% de CPU receberia a recomendação de redução para t3.small. Aplicar as recomendações em 500 instâncias normalmente reduz os custos do EC2 em 20% a 40%.
# Enable Compute Optimizer at account level
aws compute-optimizer update-enrollment-status \
--status Active
# Get EC2 instance recommendations
aws compute-optimizer get-ec2-instance-recommendations \
--filters Name=Finding,Values=OVER_PROVISIONED \
--query 'instanceRecommendations[*].{Instance: instanceArn, Current: currentInstanceType, Recommended: recommendationOptions[0].instanceType}' \
--output tableCenário 4: instâncias Spot para processamento em lote
Cenário: Uma empresa de genômica executa trabalhos em lote noturnos que levam 8 horas e podem ser repetidos se forem interrompidos. O custo mensal sob demanda do EC2 para esses trabalhos é de US$ 10.000. Solução: Use EC2 Spot Instances para a frota de processamento em lote. As Spot Instances são capacidade não utilizada do EC2, disponível com descontos de até 90%. Para trabalhos em lote tolerantes a interrupções, use o AWS Batch, que coloca automaticamente na fila novamente os trabalhos Spot com falha e usa uma frota mista (Spot + um fallback mínimo sob demanda). Economia esperada: redução de 70% a 90% nos custos de computação — de US$ 10.000 para US$ 1.000–3.000 por mês.
# AWS Batch compute environment with Spot instances
aws batch create-compute-environment \
--compute-environment-name spot-genomics \
--type MANAGED \
--state ENABLED \
--compute-resources '{
"type": "SPOT",
"bidPercentage": 60,
"minvCpus": 0,
"maxvCpus": 256,
"instanceTypes": ["optimal"],
"subnets": ["subnet-1a", "subnet-1b"],
"securityGroupIds": ["sg-batch"],
"instanceRole": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole",
"spotIamFleetRole": "arn:aws:iam::123456789012:role/AmazonEC2SpotFleetRole"
}' \
--service-role arn:aws:iam::123456789012:role/AWSBatchServiceRoleCenário 5: DynamoDB On-Demand para tráfego variável
Cenário: Um placar de jogos usa o DynamoDB com throughput provisionado. Durante os lançamentos de jogos, o tráfego aumenta 50 vezes e a tabela limita as solicitações. Fora dos lançamentos, o throughput é quase zero — a capacidade provisionada é desperdiçada. Solução: Mude o DynamoDB para o modo de capacidade On-Demand. O On-Demand escala instantaneamente para qualquer throughput sem planejamento manual de capacidade e cobra por solicitação, em vez de cobrar por unidade provisionada. Você paga apenas pelas solicitações realizadas — sem custo de capacidade ociosa entre os lançamentos. O On-Demand troca um custo ligeiramente maior por solicitação pela garantia de não haver limitação de solicitações e pela ausência de gerenciamento de capacidade.
# Switch existing DynamoDB table to On-Demand mode
aws dynamodb update-table \
--table-name Leaderboard \
--billing-mode PAY_PER_REQUEST
# Verify the change
aws dynamodb describe-table \
--table-name Leaderboard \
--query 'Table.BillingModeSummary.BillingMode'Cenário 6: S3 Intelligent-Tiering para acesso imprevisível
Cenário: Uma empresa armazena milhões de imagens geradas por usuários no S3 Standard. Os padrões de acesso variam de forma imprevisível — algumas imagens são acessadas diariamente, enquanto outras não são acessadas por meses. A empresa deseja reduzir os custos de armazenamento sem gerenciar manualmente as políticas de ciclo de vida. Solução: Use o S3 Intelligent-Tiering. Ele move automaticamente os objetos entre níveis com base nos padrões de acesso: acesso frequente (Standard), acesso infrequente (30 dias ou mais sem acesso), acesso instantâneo ao arquivo (90 dias ou mais) e acesso ao arquivo (90 dias ou mais, mediante adesão). Não há taxas de recuperação dentro do Intelligent-Tiering. A cobrança de monitoramento é de US$ 0,0025 por 1.000 objetos por mês — um valor insignificante para grandes conjuntos de dados.
# Move objects to Intelligent-Tiering via lifecycle policy
aws s3api put-bucket-lifecycle-configuration \
--bucket user-images-bucket \
--lifecycle-configuration '{
"Rules": [{
"ID": "AutoTier",
"Status": "Enabled",
"Filter": {},
"Transitions": [{
"Days": 0,
"StorageClass": "INTELLIGENT_TIERING"
}]
}]
}'Cenário 7: Compromisso entre Athena e Redshift
Cenário: Uma startup deseja consultar tabelas de um lago de dados no S3. Ela executa cerca de 10 consultas ad hoc por semana. Um fornecedor propõe o Amazon Redshift com um cluster dc2.large. Solução para uma startup: Comece com o Amazon Athena — custo zero de infraestrutura, pagando apenas pelos dados examinados (cerca de US$ 5/TB). Dez consultas por semana em dados Parquet bem particionados podem custar menos de US$ 5 por mês. O Redshift dc2.large custa cerca de US$ 180 por mês continuamente. O Redshift só se torna economicamente vantajoso quando a concorrência de consultas é alta (50 ou mais consultas por dia) ou quando é necessária uma resposta em menos de um segundo. A expressão-chave “ad hoc, infrequente” aponta claramente para o Athena.
# Athena cost estimate for 10 queries/week:
# Assume each query scans 5 GB of Parquet data
# 10 queries x 5 GB = 50 GB / week = 200 GB / month
# Athena cost: 200 GB x $0.005/GB = $1.00 / month
#
# Redshift dc2.large cost: $0.25/hr x 24hr x 30days = $180/month
#
# For 10 queries/week -> Athena saves $179/month
# Breakeven: when queries scan >36 TB/month or concurrency >50/day -> use RedshiftCenário 8: Seleção do tipo de volume EBS
Cenário: Um servidor de banco de dados relacional exige 64.000 IOPS com baixa latência consistente. O volume EBS gp3 atual está atingindo seu limite de IOPS. Solução: Faça a atualização para o io2 Block Express (tipo de volume EBS desenvolvido para bancos de dados com uso intensivo de E/S). O io2 Block Express é compatível com até 256.000 IOPS por volume e latência inferior a um milissegundo. Ele é mais caro que o gp3 (US$ 0,125/GB + US$ 0,065 por IOPS provisionada/mês), mas é a única opção de EBS que atende aos requisitos de 64.000 ou mais IOPS. Para cargas de trabalho de banco de dados críticas em termos de latência, nas quais o limite de 16.000 IOPS do gp3 é insuficiente, o io2 é a única escolha viável de EBS.
# Create io2 Block Express volume with 64,000 IOPS
aws ec2 create-volume \
--volume-type io2 \
--size 500 \
--iops 64000 \
--availability-zone us-east-1a \
--encrypted
# EBS volume type IOPS limits summary:
# gp3: up to 16,000 IOPS (default 3,000, configurable)
# io1: up to 64,000 IOPS (on Nitro instances)
# io2 Block Express: up to 256,000 IOPS
# st1 (throughput HDD): no IOPS focus, max 500 MB/s throughput
# sc1 (cold HDD): lowest cost, 250 MB/s max, rarely accessed dataCenário 9: Reserved Instances para cargas de trabalho estáveis
Cenário: Uma empresa executa continuamente 20 instâncias r6i.4xlarge do EC2 para um aplicativo de produção e não prevê mudanças nos requisitos durante 3 anos. Os gastos atuais sob demanda são de US$ 80.000 por ano para essas instâncias. Solução: Compre Standard Reserved Instances de 3 anos (ou Compute Savings Plans) com pagamento integral antecipado (All Upfront) para obter o desconto máximo. As Standard Reserved Instances oferecem até 72% de desconto em comparação com o uso sob demanda. As instâncias são executadas 24 horas por dia, 7 dias por semana, com uma carga de trabalho previsível — o perfil clássico para Reserved Instances. Redução de custo esperada: US$ 80.000 × 0,72 = US$ 22.400 por ano em comparação com US$ 80.000 por ano sob demanda — uma economia de US$ 57.600 por ano.
# Reserved Instance purchase decision matrix:
# On-Demand: No commitment, highest price, any workload
# 1-yr RI (All Up): 40% discount, 1-yr commitment, specific instance type
# 3-yr RI (All Up): 60-72% discount, 3-yr commitment, best for stable workloads
# Compute Savings Plan: 66% max discount, flexible instance family/size/Region
# EC2 Spot: 90% discount, interruptible, batch/stateless only
#
# Rule: if usage > 70% of the time for >1 year -> buy RI or Savings Plan
# Rule: if usage < 50% -> stick with On-Demand
# Rule: if usage pattern is steady 3yr -> 3yr RI All Upfront maximises savingsCenário 10: Custo do Lambda versus EC2 para tráfego variável
Cenário: Uma empresa executa uma API REST em uma instância t3.micro do EC2 que custa US$ 8 por mês. A API recebe 1 milhão de solicitações por mês, e cada uma leva 100 ms para ser processada. A equipe pergunta se o Lambda seria mais barato. Análise: Preços do Lambda: 1.000.000 de solicitações × US$ 0,0000002 = US$ 0,20 (custo das solicitações) + 1.000.000 × 0,1 s × memória de 128 MB × tarifa = cerca de US$ 1,67 (custo computacional) = cerca de US$ 1,87 por mês. O Lambda é mais barato que o EC2 para essa API de baixo tráfego. À medida que o tráfego ultrapassa cerca de 40 milhões de solicitações por mês, o EC2 se torna mais barato. Use a Calculadora de custos do Lambda para encontrar o ponto de equilíbrio de cada carga de trabalho.
# Lambda vs EC2 cost rough break-even calculation:
# Lambda costs: $0.20 per 1M requests + $0.0000166667 per GB-second
# At 128 MB memory, 100ms duration:
# GB-seconds per request = 0.128 GB x 0.1s = 0.0128 GB-s
# Cost per request = $0.0000166667 x 0.0128 = $0.000000213 compute
# + $0.0000002 request fee = $0.000000413 total per request
#
# EC2 t3.micro: $0.0104/hr x 720 hrs = $7.49/month
# Break-even: $7.49 / $0.000000413 = ~18 million requests/month
# Below 18M requests/month -> Lambda cheaper
# Above 18M requests/month -> EC2 cheaper (if utilisation is high)Cenário 11: Global Accelerator para APIs dinâmicas
Cenário: Uma API global que atende usuários na Europa, nos US e na Ásia apresenta latência inconsistente porque o tráfego percorre caminhos imprevisíveis na internet. O CloudFront foi considerado, mas as respostas da API são dinâmicas e não podem ser armazenadas em cache. Solução: Use o AWS Global Accelerator. Ele fornece dois endereços IP anycast estáticos globalmente. O tráfego do usuário entra na rede global da AWS pelo local de borda da AWS mais próximo e percorre a rede privada da AWS até a origem na Region de destino, evitando o trecho intermediário congestionado da internet pública. O Global Accelerator melhora o tempo de resposta de APIs dinâmicas em 20% a 60% e fornece failover imediato quando um Endpoint de uma Region fica não íntegro.
# Create a Global Accelerator for an ALB
aws globalaccelerator create-accelerator \
--name my-api-accelerator \
--ip-address-type IPV4 \
--enabled
# Add a listener and endpoint group pointing to ALB
aws globalaccelerator create-listener \
--accelerator-arn arn:aws:globalaccelerator::123:accelerator/abc \
--protocol TCP \
--port-ranges '[{"FromPort": 443, "ToPort": 443}]'
# Endpoint group in us-east-1 with ALB
aws globalaccelerator create-endpoint-group \
--listener-arn arn:aws:globalaccelerator::123:listener/xyz \
--endpoint-group-region us-east-1 \
--endpoint-configurations '[{"EndpointId": "arn:aws:elasticloadbalancing:...", "Weight": 100}]'Verificação rápida
Teste sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) abordados nesta lição.
Recapitulação da lição
Nesta lição, você trabalhou com cenários que abordaram: carregamento lento do ElastiCache para reduzir o uso de CPU do RDS de 80% para 20%, Spot Instances e AWS Batch para economizar de 70% a 90% nos custos de trabalhos em lote, Athena para consultas ad hoc infrequentes em comparação com Redshift para análises com alta concorrência e S3 Intelligent-Tiering para padrões de acesso imprevisíveis sem taxas de recuperação. A seguir, temos o projeto final: um mini exame cronometrado com domínios variados para medir seu nível de preparação.
Aprenda AWS Solutions Architect com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Cenários de alto desempenho e otimização de custos” é grátis?
Sim — o texto completo de “Cenários de alto desempenho e otimização de custos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “Cenários de alto desempenho e otimização de custos”?
Responda a questões de cenário sobre estratégias de cache, otimização de consultas em data lakes, diferenças entre Reserved e Spot e arquiteturas com réplicas de leitura. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Cenários de alto desempenho e otimização de custos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Cenários de arquitetura segura
- Cenários de arquiteturas resilientes e altamente disponíveis
- Cenários de alto desempenho e otimização de custos
- Mini exame completo com domínios mistos