Arquiteturas de alto desempenho
Folha de revisão · 6 temas · AWS Solutions Architect Associate
Feita para a véspera. Imprimir esta página tira o menu e as abas.
Armazenamento por caso de uso: S3, EBS, EFS e FSx
Quase todo cenário de desempenho começa escolhendo onde o dado mora, e a prova monta as alternativas com os quatro serviços para ver se você sabe a diferença entre bloco, arquivo e objeto. Depois vem a segunda camada: qual classe do S3 e qual tipo de EBS, que é onde entra o custo.
Como cai: Várias instâncias precisam ler e gravar nos mesmos arquivos ao mesmo tempo. Qual serviço de armazenamento usar?
Erros comuns
- Propor EBS para compartilhar arquivos entre instâncias. Um volume EBS comum anexa a uma instância por vez; compartilhamento entre várias é EFS (Linux) ou FSx (Windows).
- Achar que S3 é sistema de arquivos. É armazenamento de objetos, acessado por API: não dá para montar e fazer a aplicação legada gravar nele como se fosse disco sem uma camada no meio.
- Escolher classe de arquivamento para dado acessado com frequência. Glacier cobra recuperação e tem tempo de espera; economia de armazenamento vira custo de acesso.
- Esquecer o mínimo de armazenamento das classes frias. Standard-IA e One Zone-IA cobram 30 dias mínimos e por objeto de 128 KB; para dado que muda toda hora, saem mais caras que a Standard.
- Usar One Zone-IA para dado que não pode ser perdido. Ela vive em uma única zona: se a zona se perde, o dado se perde.
- Trocar gp3 por io2 sem o enunciado pedir IOPS muito alta ou durabilidade de nível de banco crítico. gp3 já entrega IOPS e vazão configuráveis, e é mais barato.
Computação: famílias EC2, containers e serverless
É a escolha que aparece em cenário de desempenho e reaparece em custo. A prova testa duas coisas: ler o perfil da carga (CPU, memória, rede, GPU) para achar a família, e saber quando o serverless resolve — o que quase sempre é a resposta quando o enunciado diz 'menor esforço operacional' e a carga é intermitente.
Como cai: A carga é intermitente, dura poucos segundos por execução e a equipe não quer gerenciar servidores. Onde rodar?
Erros comuns
- Escolher Lambda para processamento longo. O tempo máximo de execução é de 15 minutos; carga que passa disso é container ou instância.
- Achar que EKS é sempre melhor que ECS. EKS traz Kubernetes e o ecossistema dele, com mais complexidade; ECS é mais simples e integrado. Sem exigência de Kubernetes no enunciado, ECS é a resposta de menor esforço.
- Confundir Fargate com ECS ou EKS. Fargate não é orquestrador: é o modo de execução sem gerenciar instâncias, que tanto ECS quanto EKS podem usar.
- Ignorar a família da instância. A letra indica o perfil: M para equilíbrio, C para computação, R e X para memória, T para carga intermitente com créditos, G e P para GPU, I e D para armazenamento local.
- Esquecer os créditos das instâncias da família T. Elas acumulam e gastam crédito de CPU; carga sustentada esgota o crédito e a instância passa a andar devagar ou a cobrar por excedente.
- Propor Lambda para carga constante e alta. Cobrança por invocação e duração compensa em carga intermitente; para carga previsível e contínua, instância com compromisso costuma sair mais barata.
Vocabulário
- Fargate
- — Modo de execução sem servidor para containers. Não é orquestrador: tanto o ECS quanto o EKS podem rodar suas tarefas em Fargate, deixando de gerenciar as instâncias que as hospedam.
Cache e entrega de conteúdo: CloudFront, ElastiCache e DAX
Cache é a resposta de desempenho mais barata, e por isso aparece muito. A prova testa se você põe o cache na camada certa: usuário distante reclamando de lentidão é borda; banco sobrecarregado com a mesma consulta é cache de dados. Trocar as duas é o erro que a questão procura.
Como cai: O mesmo conjunto de consultas está sobrecarregando o banco e a latência subiu. Qual a solução de MENOR esforço?
Erros comuns
- Usar CloudFront para aliviar consulta repetida ao banco vinda de dentro da aplicação. CloudFront é cache de borda para conteúdo entregue a clientes; consulta interna é ElastiCache ou DAX.
- Usar ElastiCache para conteúdo estático de site global. Funciona, e ignora que o CloudFront já resolve isso na borda, mais perto do usuário e com menos código.
- Escolher Memcached quando o enunciado pede persistência, réplicas, failover ou estruturas de dados. Isso é Redis; Memcached é cache simples, multithread e sem persistência.
- Achar que DAX serve para qualquer banco. DAX é específico do DynamoDB; para relacional, é ElastiCache.
- Esquecer que cache exige estratégia de invalidação. Dado que muda e cache sem TTL ou sem escrita explícita produz resposta velha, que é pior que resposta lenta.
- Ignorar que o CloudFront também acelera conteúdo dinâmico e requisição não cacheável, pela rede da AWS até a origem.
Vocabulário
- DAX
- — Cache em memória gerenciado, exclusivo do DynamoDB, compatível com a mesma API. Reduz leituras de milissegundos para microssegundos sem alterar o código da aplicação.
Qual banco para qual caso de uso
A AWS tem um banco para cada forma de dado, e a prova aposta que você vai escolher pelo nome conhecido em vez do caso de uso. Reconhecer a assinatura de cada um — 'relacionamentos entre entidades' é grafo, 'agregação sobre bilhões de linhas' é data warehouse — elimina três alternativas de imediato.
Como cai: A consulta precisa percorrer relacionamentos entre pessoas e contas a várias profundidades. Qual banco?
Erros comuns
- Usar Redshift para carga transacional. Ele é colunar e massivamente paralelo, desenhado para agregação analítica; transação frequente e pequena é RDS ou DynamoDB.
- Usar DynamoDB quando o enunciado exige consultas relacionais variadas e junções. DynamoDB brilha com padrões de acesso conhecidos e chave bem escolhida; consulta ad hoc arbitrária é relacional.
- Achar que OpenSearch é banco primário. Ele é motor de busca e análise de log; o dado costuma ter uma fonte de verdade em outro lugar.
- Propor um banco relacional para percorrer relacionamentos profundos. Cada nível vira uma junção; grafo (Neptune) foi feito para isso.
- Confundir DocumentDB com DynamoDB. DocumentDB é compatível com MongoDB, para documentos com consultas ricas; DynamoDB é chave-valor de escala massiva.
- Esquecer o Athena. Consultar dados que já estão no S3, sem carregar em banco nenhum, é Athena; propor Redshift nesse caso adiciona uma etapa que o enunciado não pediu.
Rede de alto desempenho e conectividade híbrida
Fecha o Domínio 3 e reaparece em custo e resiliência. A prova cobra três decisões: acelerar o trajeto de rede sem cache (Global Accelerator, que quase todo mundo confunde com CloudFront), ligar o data center à AWS (Direct Connect ou VPN, e a combinação dos dois), e conectar muitas VPCs sem virar uma teia.
Como cai: O tráfego é TCP, não pode ser cacheado, e usuários distantes reclamam de latência instável. O que usar?
Erros comuns
- Confundir Global Accelerator com CloudFront. CloudFront guarda conteúdo na borda; Global Accelerator não guarda nada, ele melhora o caminho até a aplicação e dá IPs anycast estáticos. Tráfego não HTTP ou não cacheável é Accelerator.
- Achar que Direct Connect é criptografado por padrão. É uma conexão dedicada e privada, mas sem criptografia; quando o enunciado exige criptografia em trânsito, a resposta acrescenta uma VPN por cima, ou MACsec.
- Propor Direct Connect para uma necessidade imediata. A provisão leva semanas ou meses; quando o enunciado diz 'rapidamente' ou 'em dias', a resposta é VPN, eventualmente como ponte até o Direct Connect ficar pronto.
- Usar peering de VPC para muitas VPCs. Peering não é transitivo e o número de conexões cresce ao quadrado; a partir de algumas VPCs, a resposta é Transit Gateway.
- Esquecer que uma única conexão Direct Connect é ponto único de falha. Alta disponibilidade exige duas conexões, idealmente em locais diferentes, ou uma VPN de contingência.
- Misturar grupo de posicionamento cluster com spread. Cluster aproxima para latência mínima; spread separa para reduzir falha correlacionada. São objetivos opostos.
Vocabulário
- Direct Connect
- — Conexão dedicada entre o data center e a AWS, sem passar pela internet, com banda consistente e latência previsível. Provisão leva semanas ou meses, e não é criptografada por padrão.
- VPN site a site
- — Túnel criptografado sobre a internet. Sobe em horas, custa pouco e herda a variabilidade da internet pública.
Ingestão e análise de dados: Kinesis, Glue, EMR e Lake Formation
O guia da SAA-C03 tem uma tarefa só para isto (3.5, ingestão e transformação de alto desempenho) e quem vem de infraestrutura costuma chutar. As questões seguem um roteiro fixo: a frequência do dado escolhe entre fluxo e lote, a palavra 'consumidor próprio' separa Data Streams de Firehose, 'converter CSV em Parquet' aponta Glue, e 'Spark ou Hadoop' aponta EMR.
Como cai: Sensores enviam eventos a cada segundo; a empresa quer guardá-los no S3 em Parquet com o MENOR esforço operacional. O que usar?
Erros comuns
- Propor Kinesis Data Streams quando o enunciado só quer entregar o fluxo no S3 ou no Redshift. Data Streams exige escrever e operar consumidores; se ninguém precisa processar registro a registro, Firehose entrega sozinho e é a resposta de menor esforço.
- Propor Firehose quando o enunciado pede vários consumidores lendo o mesmo fluxo em paralelo, ou reprocessar registros das últimas horas. Firehose entrega e esquece; retenção e leitura por aplicação própria são Data Streams.
- Escolher EMR para converter arquivos de formato. Glue é sem servidor e faz isso com um job; EMR só ganha quando o enunciado cita Spark, Hadoop, Hive ou controle do cluster.
- Usar SQS para ingestão de telemetria. Fila entrega cada mensagem a um consumidor e apaga; fluxo mantém a ordem por chave e permite vários leitores. 'Eventos por segundo, em ordem, para análise' é Kinesis.
- Resolver permissão por coluna com política de bucket. Política de bucket enxerga objeto, não coluna; permissão por tabela e coluna sobre o data lake é Lake Formation.
- Transferir terabytes de um servidor local com um script de cópia para o S3. Transferência recorrente e gerenciada entre local e AWS é DataSync; acesso contínuo de aplicação local a arquivos no S3 é Storage Gateway.