Desempenho de computação
Projetar computação de alto desempenho e elástica é a tarefa 3.2 de Design High-Performing Architectures, 24% do conteúdo pontuado: a instância certa, no lugar certo, escalando pela métrica certa.
Tipos de instância
Amazon EC2 instance types
O tipo de instância define CPU, memória, armazenamento e rede do host. Escolha primeiro a categoria, depois o tamanho.
Pontos-chave
- Nomenclatura: em
c7gn.xlarge,cé a série,7a geração,gnas opções (Graviton, otimizada para rede e EBS) exlargeo tamanho. Outras opções:aAMD,iIntel,dvolumes de instance store,zalta frequência de CPU. - Burstable (série T): uma linha de base de CPU mais créditos para burst. Boa para CPU média baixa com picos, como pequenos servidores web e ambientes de desenvolvimento.
- Flex (como M7i-flex e C7i-flex): 40% de CPU de base, podendo chegar a 100% durante 95% do tempo em 24 horas. A opção de melhor custo para cargas gerais que não precisam de CPU cheia o tempo todo.
- Rightsizing: o AWS Compute Optimizer analisa 14 dias de métricas do CloudWatch e recomenda tipos de instância para instâncias EC2 e grupos de Auto Scaling.
- Desempenho fixo: famílias como M, C e R sustentam CPU cheia a qualquer momento, a escolha para codificação de vídeo, sites de alto volume e HPC.
Na prova
"Banco em memória ou análise em tempo real" -> memory optimized (R, X). "Processamento em lote, transcodificação, servidores de jogos" -> compute optimized (C). "Muito I/O aleatório em grandes datasets locais" -> storage optimized (I, D).
Categorias de instância
| Categoria | Séries e usos |
|---|---|
| General purpose | M, T, Mac. Equilíbrio de CPU, memória e rede: servidores web, repositórios de código, bancos pequenos. |
| Compute optimized | C. Processadores rápidos: processamento em lote, transcodificação de mídia, servidores de jogos. |
| Memory optimized | R, X, U, z. Grandes volumes em memória: bancos em memória, análise de dados, aplicações corporativas. |
| Storage optimized | I, D, H. I/O aleatório de baixa latência e alto throughput sequencial em armazenamento local. |
| Accelerated computing | P, G, Inf, Trn, F. GPUs, AWS Inferentia, AWS Trainium e FPGAs para ML e gráficos. |
| HPC optimized | Hpc. Simulações em larga escala, deep learning e renderização. |
Placement groups definem como as instâncias ficam no hardware, trocando desempenho de rede por isolamento contra falhas correlacionadas.
Pontos-chave
- Cluster: instâncias agrupadas em um segmento de alta largura de banda de uma única AZ. Até 10 Gbps por fluxo dentro do grupo (5 Gbps fora). Lance tudo em uma só requisição e com um só tipo de instância para evitar erro de capacidade.
- Partition: até 7 partições por AZ, cada uma em racks próprios com rede e energia separadas. O número de instâncias só é limitado pelos limites da conta, e aplicações que conhecem a topologia, como HDFS, HBase e Cassandra, enxergam a partição.
- Spread: cada instância em racks distintos, no máximo 7 instâncias em execução por AZ por grupo. O grupo pode abranger várias AZs. Para poucas instâncias críticas.
- Capacidade: uma On-Demand Capacity Reservation pode apontar para um cluster placement group. Capacity Reservations não reservam capacidade em grupos partition ou spread.
Na prova
"Nós de HPC trocam dados o tempo todo" -> cluster (com EFA ou enhanced networking). "Cassandra ou HDFS cientes de rack" -> partition. "Poucas instâncias críticas não podem falhar juntas" -> spread.
Estratégias de placement
| Estratégia | Disposição e limites |
|---|---|
| Cluster | Uma AZ, um segmento de rede de alta largura de banda. Menor latência e maior throughput. Pode abranger VPCs pareadas. |
| Partition | Grupos de racks, até 7 partições por AZ, pode abranger AZs. Cargas grandes, distribuídas e replicadas. |
| Spread | Uma instância por rack, até 7 em execução por AZ, pode abranger AZs. Pequenos conjuntos críticos. |
Enhanced networking
ENA and Elastic Fabric Adapter
O desempenho de rede depende do tipo de instância e do dispositivo de rede. As duas opções abaixo não têm custo adicional.
Pontos-chave
- ENA (Elastic Network Adapter): enhanced networking com SR-IOV para mais largura de banda, mais pacotes por segundo e latência menor e consistente. Toda instância baseada em Nitro usa, com até 100 Gbps.
- EFA (Elastic Fabric Adapter): adiciona OS-bypass via Libfabric e o protocolo SRD para tráfego MPI (HPC) e NCCL (machine learning), com latência menor e mais estável que TCP.
- Limites do EFA: o tráfego EFA não cruza AZs nem VPCs e não é roteável. Só em tipos de instância suportados e não funciona no AWS Outposts.
- Escolha da instância: a opção
nindica otimizada para rede e EBS. Entre duas instâncias, a mais lenta limita o throughput.
Na prova
"HPC fortemente acoplado ou treino distribuído de ML com MPI ou NCCL" -> EFA em um cluster placement group. "Mais PPS e menos latência para uma camada de aplicação comum" -> enhanced networking com ENA, não EFA.
Métricas de escala
Amazon EC2 Auto Scaling
O Auto Scaling move a capacidade desejada entre o mínimo e o máximo. A política e a métrica definem a rapidez e a precisão com que ele acompanha a carga.
Pontos-chave
- Target tracking (recomendado): mantém uma métrica em um alvo, como um termostato. As métricas predefinidas são
ASGAverageCPUUtilization,ASGAverageNetworkIn,ASGAverageNetworkOuteALBRequestCountPerTarget. - Métrica certa: ela precisa variar na proporção inversa da capacidade.
RequestCountbruto, latência e oApproximateNumberOfMessagesVisibledo SQS não funcionam. Para filas, use backlog por instância. - Step e simple scaling: limites de alarme do CloudWatch com ajustes proporcionais ao tamanho da violação, ou um único ajuste seguido de cooldown.
- Preditiva e agendada: a escala preditiva usa até 14 dias de histórico (mínimo de 24 horas) para prever 48 horas e lançar capacidade antes de picos diários ou semanais. Ações agendadas mudam a capacidade em horários definidos, uma vez ou por cron.
- Tempo de reação: ative o monitoramento detalhado do EC2 (métricas de 1 minuto em vez de 5) e defina um warmup para que instâncias novas não distorçam a média.
- AWS Auto Scaling: um só lugar para montar scaling plans de grupos do EC2 Auto Scaling, Spot Fleets, tarefas ECS, tabelas e índices do DynamoDB e Aurora Replicas.
Na prova
"Workers que consomem uma fila SQS ficam para trás" -> target tracking sobre backlog por instância. "A carga sobe todo dia útil às 9h e as instâncias demoram a subir" -> escala preditiva ou agendada. "Manter a CPU perto de 50%" -> target tracking.
Hibernação
EC2 instance hibernation
A hibernação grava a RAM no volume raiz EBS e retoma os mesmos processos no start, evitando um boot longo ou o aquecimento de cache.
Pontos-chave
- Pré-requisitos: habilitada só no launch, com volume raiz EBS criptografado e grande o bastante para a RAM, AMI e família suportadas. RAM abaixo de 150 GiB no Linux e até 16 GiB no Windows.
- Ao retomar: mesmo ID de instância, IPs privados e Elastic IPs. Um novo IPv4 público é atribuído e os dados do instance store se perdem.
- Limites: nada pode ser alterado durante a hibernação, no máximo 60 dias hibernada, e instâncias em grupo de Auto Scaling ou usadas pelo ECS não hibernam.
- Cobrança: sem cobrança de uso da instância enquanto parada. Você paga os volumes EBS, incluindo a RAM salva, e os Elastic IPs associados.
Na prova
"A aplicação demora demais para reconstruir o estado em memória após reiniciar" -> hibernar em vez de parar. Se a instância está em um grupo de Auto Scaling, hibernação não é opção.
Batch e EMR
AWS Batch and Amazon EMR
Motores gerenciados para cargas feitas de jobs, não de servidores: AWS Batch para jobs em contêiner, Amazon EMR para frameworks de big data.
Pontos-chave
- AWS Batch: enfileira jobs em contêiner e provisiona a computação necessária em ECS, EKS, Fargate e instâncias On-Demand ou Spot, escalando com a fila. Sem custo adicional além dos recursos usados.
- Onde o Batch cabe: treino de ML, simulações, genômica, renderização, transcodificação e análise financeira, inclusive jobs mais longos que os 15 minutos do Lambda.
- Amazon EMR: Apache Spark, Hive, Trino, Flink e outros frameworks gerenciados, em clusters EC2, no EKS ou como EMR Serverless.
- Nós do EMR: primary (coordena), core (executa tarefas e guarda o HDFS) e task, opcional (só executa tarefas). Nós task não guardam dados do HDFS, o que os torna o lugar natural para Spot Instances.
- Clusters transitórios: mantenha entrada e saída no S3 e deixe o cluster terminar após o último step.
Na prova
"Milhares de jobs em contêiner, sem scheduler para operar" -> AWS Batch. "Processamento Spark ou Hive em escala de petabytes" -> Amazon EMR (EMR Serverless para não gerenciar cluster). Job com mais de 15 minutos descarta o Lambda.
Computação perto do usuário
Outposts, Local Zones and Wavelength
Quando milissegundos ou a localização do dado importam, a infraestrutura AWS roda fora da Região, com a Região pai mantendo as mesmas APIs e ferramentas.
Pontos-chave
- AWS Outposts: racks de 42U (até 96) ou servidores de 1U e 2U gerenciados pela AWS na sua instalação. Para latência de um dígito de milissegundo até sistemas locais, processamento local e migrações com dependências locais.
- Local Zones: computação, armazenamento, banco e rede da AWS em grandes regiões metropolitanas, estendendo uma Região. Para jogos em tempo real, transmissão ao vivo, AR/VR e estações de trabalho virtuais perto do usuário.
- Wavelength: computação e armazenamento da AWS na borda das redes de operadoras de telecomunicações, acessados por um carrier gateway. Para baixa latência a dispositivos móveis em 5G.
- Extensão da VPC: uma VPC abrange Availability Zones, Local Zones e Wavelength Zones por meio de subnets criadas em cada zona.
- Residência de dados: os três mantêm o dado dentro de um país, estado ou local escolhido para cumprir exigências regulatórias.
Na prova
"Baixa latência até sistemas que precisam ficar no nosso data center" -> Outposts. "Baixa latência para usuários em uma cidade longe de qualquer Região" -> Local Zones. "App móvel em rede 5G de operadora" -> Wavelength.
Elastic Beanstalk
AWS Elastic Beanstalk
Você envia o código e o Elastic Beanstalk provisiona o ambiente, o balanceamento de carga, o monitoramento de saúde e a escala. Sem custo além dos recursos.
Pontos-chave
- Plataformas: Go, Java, .NET, Node.js, PHP, Python, Ruby e contêineres Docker.
- Modos: Standard roda direto no EC2 e suporta Windows. Cluster roda no Amazon EKS, com deploys e escala mais rápidos.
- Worker environment: uma fila SQS gerenciada mais um daemon que faz POST de cada mensagem para a aplicação. Tira tarefas longas da camada web e executa jobs periódicos do
cron.yaml. - Controle: os recursos são criados na sua conta, então você mantém acesso às instâncias e à configuração.
Na prova
"Desenvolvedores querem publicar um app web rápido sem gerenciar infraestrutura" -> Elastic Beanstalk. "Tarefas longas em segundo plano deixam a camada web lenta" -> um worker environment com SQS.