Pular para o conteúdo

Tema

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 ver

Usuá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?

Quanta certeza você tem?

Vídeo · português · 42 min

Explica como o CloudFront decide responder do cache ou ir à origem, que é o mecanismo por trás das questões. Assista atento ao comportamento de cache e ao TTL.

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 enunciadoCamadaServiço
Usuários distantes reclamam de lentidão para carregar o siteBordaCloudFront
O banco relacional está com CPU alta por consultas repetidasDadosElastiCache
Leituras do DynamoDB precisam ficar em microssegundosBancoDAX
Tráfego não HTTP precisa de caminho de rede melhor e IP fixoRedeGlobal 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

RedisMemcached
Estruturas de dadosListas, conjuntos, conjuntos ordenados, hashSó chave e valor
PersistênciaSimNão
Réplicas e failoverSim, com Multi-AZNão
MultithreadLimitadoSim
Pista no enunciadoSessão que não pode se perder, ranking, pub/sub, alta disponibilidadeCache 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.

DAXCache 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
Complementar e prático: mostra o padrão que a prova adora, bucket privado servido pelo CloudFront com controle de acesso de origem. É o desenho certo para site estático seguro.

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 rever

Drill

Qual cache resolve o sintoma?

Para cada sintoma, diga onde pôr o cache.

  1. 1.Usuários na Ásia esperam segundos para carregar imagens de um site hospedado no Brasil.

  2. 2.A mesma consulta SQL pesada é repetida milhares de vezes por minuto.

  3. 3.Placar de jogo com ranking em tempo real e necessidade de sobreviver à falha do nó.

  4. 4.Leituras no DynamoDB precisam cair para microssegundos sem alterar o código.

  5. 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

Para ir além3 artigos