Introdução
A aplicação lê o catálogo no DynamoDB a cada solicitação. Adicione um nó Amazon ElastiCache com Valkey para reutilizar os dados de um produto. Comprove a mudança comparando a origem das respostas e o número real de leituras.
Conclua primeiro AWS Foundations for Beginners e as operações básicas de itens em AWS DynamoDB for Beginners. Este ambiente independente fornece aplicação, catálogo e rede. Use Terminal para comandos e AWS View para observar nós, registros e respostas. A AWS CLI já está configurada; você não precisa de uma conta pessoal nem de recursos de outro laboratório.
Relação com a certificação
| Certificação | Tarefa do exame | Prática |
|---|---|---|
| Cloud Practitioner (CLF-C02) | Task 3.4 | Distinguir o cache em memória dos dados de referência e observar o comportamento da aplicação. |

Observar a origem dos produtos
Um cache mantém dados reutilizáveis na memória. O banco continua sendo a fonte de verdade: perder uma cópia em cache não deve apagar o registro do catálogo. Primeiro observe a aplicação sem cache.
Entre no projeto e confirme a identidade configurada:
cd /home/labex/project
aws sts \
get-caller-identity
O ARN termina em labex-ca01-operator e identifica este ambiente. Leia diretamente o produto 101. O DynamoDB representa strings com S e números com N:
aws dynamodb \
get-item \
--table-name product-catalog \
--key '{"product_id":{"S":"101"}}' \
--consistent-read
Travel mug custa 20.00. O produto 202, Notebook, é independente e deve permanecer intacto. A aplicação HTTP retorna JSON do produto. Solicite-o duas vezes:
curl -sS http://127.0.0.1:8080/api/products/101
curl -sS http://127.0.0.1:8080/api/products/101
Ambas as respostas incluem "served_from":"source". Em AWS View, o contador aumenta em dois e o cartão ElastiCache ainda não tem cluster. Uma leitura corresponde a uma solicitação real ao DynamoDB, não à medição de uma cobrança AWS. Send request também envia uma solicitação real e pode alterar o contador. Compare se ele aumenta, em vez de exigir um valor final fixo.

Criar um nó Valkey
Amazon ElastiCache gerencia mecanismos de cache em memória. Valkey armazena valores por chave; aqui, o ID do produto identifica sua cópia. Você usará um nó independente. O grupo de sub-redes indica a localização preparada e o grupo de segurança fornece a configuração de rede. O curso de VPC aborda o projeto das regras.
Leia os identificadores deste ambiente novo:
cat resources.json
Salve e exiba o ID do grupo de segurança. $(...) guarda a saída de um comando para a operação seguinte:
CACHE_GROUP_ID=$(jq -r .security_group_id resources.json)
echo "$CACHE_GROUP_ID"
Crie o pequeno cache de um nó identificado por product-cache. O mecanismo e a quantidade de nós selecionam a configuração Valkey do curso:
aws elasticache \
create-cache-cluster \
--cache-cluster-id product-cache \
--engine valkey \
--engine-version 7.2 \
--cache-node-type cache.t3.micro \
--num-cache-nodes 1 \
--cache-subnet-group-name product-cache-network \
--security-group-ids "$CACHE_GROUP_ID"
Observe CacheClusterStatus e consulte o endpoint, endereço e porta de conexão:
aws elasticache \
describe-cache-clusters \
--cache-cluster-id product-cache \
--show-cache-node-info \
--query 'CacheClusters[0].{Status:CacheClusterStatus,Nodes:CacheNodes}'
Continue quando o cluster estiver available e o nó 0001 tiver endpoint. Se ainda estiver sendo criado, aguarde brevemente e repita a consulta. Salve e exiba o endereço real:
CACHE_HOST=$(aws elasticache \
describe-cache-clusters \
--cache-cluster-id product-cache \
--show-cache-node-info \
--query 'CacheClusters[0].CacheNodes[0].Endpoint.Address' \
--output text)
echo "$CACHE_HOST"
Teste a conexão com o cliente Valkey fornecido:
valkey-cli -h "$CACHE_HOST" -p 6379 PING
PONG comprova que o mecanismo respondeu, mas ainda não que a aplicação o utiliza. AWS View mostra o nó e o endpoint reais.
Conectar a aplicação e observar um acerto
Com cache-aside, a aplicação procura primeiro product:101 no cache. Uma chave ausente é um miss: ela lê DynamoDB e guarda o produto. Um hit, ou acerto, posterior retorna a cópia sem outra leitura da origem.
app.json contém configurações comuns. Use jq para mudar o modo e o endpoint, escreva um arquivo temporário e substitua a configuração:
jq --arg host "$CACHE_HOST" \
'.mode = "cache-aside" | .cache_host = $host' \
app.json > app.next.json
mv app.next.json app.json
Inspecione o resultado:
cat app.json
A configuração é lida a cada solicitação, sem reiniciar. ttl_seconds é a duração da cópia; o próximo laboratório explora expiração e atualização. Solicite uma vez o produto:
curl -sS http://127.0.0.1:8080/api/products/101
A primeira resposta indica served_from: source, pois o novo cache está vazio. Observe o contador em AWS View e repita:
curl -sS http://127.0.0.1:8080/api/products/101
A resposta indica served_from: cache, com o mesmo ID, nome e preço, e o contador não aumenta. Se você já solicitou o produto no AWS View, o primeiro comando pode ser um hit. Compare solicitações consecutivas depois de preencher o cache. Leia o valor realmente armazenado:
valkey-cli -h "$CACHE_HOST" -p 6379 GET product:101
O JSON corresponde ao registro de Travel mug. Isso demonstra menos acessos à origem nesta consulta repetida, sem estabelecer latência, capacidade ou disponibilidade de produção. Mantenha aplicação e nó ativos para verificar. O ambiente é descartável; em uma conta AWS real, remova caches desnecessários para interromper custos contínuos.

Resumo
Você criou um nó Valkey, conectou a aplicação e observou misses e hits de cache-aside. A cópia corresponde ao DynamoDB e os hits evitam novas leituras. Em seguida, explore a atualização dos dados com TTL e invalidação explícita.
Para aprofundar o tema, consulte a documentação da AWS: Fluxo de dados cache-aside; Selecionar um endpoint de conexão do cache.



