Arquiteturas de alto desempenho · tema 16 de 22
Cache e entrega de conteúdo: CloudFront, ElastiCache e DAX
35 min · 2 vídeos · 12 cards · 1 drill
Por que cai
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.
Pré-teste · 1 de 2
responda antes de verUsuários de vários países reclamam de lentidão ao carregar imagens e arquivos estáticos de um site hospedado em uma única região. Qual solução resolve com o MENOR esforço?
Vídeo · português · 42 min
Em uma frase
Cache resolve latência e carga ao mesmo tempo, e a questão é em que camada: CloudFront na borda para o que vai até o cliente, ElastiCache entre aplicação e banco, DAX só para o DynamoDB.
A camada certa para o sintoma
| Sintoma no enunciado | Camada | Serviço |
|---|---|---|
| Usuários distantes reclamam de lentidão para carregar o site | Borda | CloudFront |
| O banco relacional está com CPU alta por consultas repetidas | Dados | ElastiCache |
| Leituras do DynamoDB precisam ficar em microssegundos | Banco | DAX |
| Tráfego não HTTP precisa de caminho de rede melhor e IP fixo | Rede | Global Accelerator (não é cache) |
O erro que a prova procura é trocar as duas primeiras linhas. CloudFront não alivia consulta feita por dentro da aplicação; ElastiCache não encurta a distância física até um usuário do outro lado do mundo.
Redis ou Memcached
| Redis | Memcached | |
|---|---|---|
| Estruturas de dados | Listas, conjuntos, conjuntos ordenados, hash | Só chave e valor |
| Persistência | Sim | Não |
| Réplicas e failover | Sim, com Multi-AZ | Não |
| Multithread | Limitado | Sim |
| Pista no enunciado | Sessão que não pode se perder, ranking, pub/sub, alta disponibilidade | Cache simples de objeto, escalar horizontalmente, usar vários núcleos |
A regra prática: se o enunciado mencionar qualquer requisito além de guardar e devolver um valor — persistir, replicar, ordenar, publicar — é Redis.
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.O "sem alterar o código" é a frase que a prova usa para separar DAX de ElastiCache num cenário de DynamoDB: com ElastiCache você teria de escrever a lógica de cache.
Estratégias, e o dado velho
Cache sem política de validade produz resposta errada, que é pior que resposta lenta. Duas estratégias caem:
- Lazy loading (cache-aside): busca no banco só quando falta no cache. Gasta pouco, e o dado pode ficar velho até expirar.
- Write-through: escreve no cache a cada escrita no banco. Cache sempre atualizado, ao custo de latência e de guardar dado que talvez ninguém leia.
As duas dependem de TTL. O cenário "usuários veem informação desatualizada" tem sempre a mesma resposta: TTL adequado mais invalidação ou atualização nas escritas críticas. Aumentar o cluster e trocar de motor são distratores.
No CloudFront, o equivalente é invalidação de caminho — e a prática melhor, que a prova reconhece, é versionar o nome do arquivo, evitando invalidação e conteúdo velho de uma vez.
Como responder o cenário
Pergunte quem está esperando: um usuário na internet (borda) ou a própria aplicação (dados). Depois, qual banco: DynamoDB puxa DAX, relacional puxa ElastiCache. Se for ElastiCache, procure qualquer requisito além de chave e valor para decidir Redis. E se o sintoma for dado desatualizado, a resposta é política de validade, não mais infraestrutura.
Se quiser outro ângulo1 vídeo
Como cai na sabatina
“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.
Flashcards
Card 1 de 12
0 certos · 0 a reverDrill
Qual cache resolve o sintoma?
Para cada sintoma, diga onde pôr o cache.
1.Usuários na Ásia esperam segundos para carregar imagens de um site hospedado no Brasil.
2.A mesma consulta SQL pesada é repetida milhares de vezes por minuto.
3.Placar de jogo com ranking em tempo real e necessidade de sobreviver à falha do nó.
4.Leituras no DynamoDB precisam cair para microssegundos sem alterar o código.
5.Sessões de usuário precisam sobreviver ao reinício do cache.
Quiz · 1 de 4
Uma aplicação de comércio eletrônico usa DynamoDB e precisa que as leituras do catálogo caiam de milissegundos para microssegundos, sem reescrever a camada de acesso a dados. Qual solução atende?
Explique para um gerente
Explique em um minuto por que guardar uma cópia da resposta perto de quem pergunta resolve dois problemas ao mesmo tempo: a espera e a carga.
Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.
Prefiro falar em voz alta
00:00
Toque para gravar, ou responda em voz alta sem gravar