← AWS Solutions Architect Associate: decisões de arquitetura
06 / 23 · 70 MIN

Bases de dados, réplicas e cache

Escolhe leituras e capacidade com consistência explícita, protegendo a origem quando a cache falha.

Escolher o caminho de leitura

Num fecho fictício de fundos, os relatórios atrasam as confirmações da aplicação. Desenha primeiro escritores, leitores e requisitos de atualização. O standby de um RDS Multi-AZ DB instance deployment não recebe SELECT da aplicação. Um Multi-AZ DB cluster é outra modalidade e tem leitores que podem servir consultas. Read replicas assíncronas podem aliviar relatórios que toleram atraso; uma confirmação que precisa de observar a escrita concluída exige um caminho compatível com essa consistência. Em Aurora, o reader endpoint distribui ligações, não cada query de uma sessão. Inspeciona o pool antes de concluir que duas réplicas significam metade das queries em cada uma. Na proposta, regista modalidade, endpoint, atraso tolerado e evidência de aceitação.

Dimensionar recursos e planear a promoção

A média diária de CPU pode esconder memória insuficiente, I/O saturado ou ligações acumuladas no fecho mensal. Recolhe essas dimensões durante a janela crítica e compara limites da classe candidata antes de reduzir capacidade. Storage autoscaling trata espaço alocado; não é um comando para aumentar CPU. Define margem e máximo antes de uma carga grande e não assumes que apagar dados reduz depois a alocação. Ao promover uma read replica RDS para instância autónoma, planeia a transição: a replicação anterior deixa de alimentar essa instância. Não esperes um regresso automático à relação anterior. No exercício, entrega critérios de corte, validação de dados e uma alternativa se a promoção não satisfizer o requisito.

Consultar DynamoDB sem esconder trabalho

Parte dos padrões de acesso. Usar apenas a data como partition key pode concentrar as escritas de hoje; distribuir chaves exige também desenhar consultas e agregação. Numa Query, a condição de chave seleciona o conjunto a ler; o filtro retira resultados depois. Não movas partition key ou sort key para FilterExpression. Uma página sem Items pode ainda ter LastEvaluatedKey: continua com esse valor em ExclusiveStartKey e mantém a condição de chave. O token não promete que existam mais resultados correspondentes, apenas que falta concluir a paginação. Num Scan, compara ScannedCount e Count por página. Devolver poucos elementos não demonstra que a leitura consumiu poucos recursos. Regista capacidade consumida e páginas processadas.

Incluir os índices e proteger o tráfego

Uma query de GSI só devolve atributos disponíveis na projeção; não faz automaticamente uma leitura adicional da tabela para obter os restantes. Planeia essa leitura explícita ou outra projeção, considerando custo, latência e consistência. Um GSI sem capacidade de escrita suficiente pode aplicar back pressure e afetar escritas na tabela, mesmo quando a capacidade global desta parece livre. Confirma o recurso referido no erro antes de aumentar apenas a tabela. Num inventário que faz Scan sobre dados usados pela aplicação, multiplicar workers pode consumir rapidamente a capacidade partilhada. Controla ritmo, concorrência e janela de execução; mede também latência do tráfego de negócio. A tarefa administrativa só está bem dimensionada se respeitar esses limites.

Definir a atualização da cache

Em lazy loading, um miss leva à origem e ao preenchimento da cache. TTL limita a permanência desde a inserção; não torna imediatamente visível uma alteração posterior na base. Desenha a sequência do exercício: leitor obtém v1, escritor confirma v2 e invalida, leitor atrasado volta a inserir v1. Invalidar uma vez não resolve essa corrida. O modelo local usa uma versão autoritativa já conhecida para rejeitar preenchimentos antigos; é uma regra ilustrativa, não uma funcionalidade automática do ElastiCache. Na aplicação real, definir essa coordenação exige tratar concorrência e falhas. Uma entrada negativa também precisa de atualização: um resultado inexistente pode ficar errado quando o objeto é criado. Documenta a tolerância por tipo de dado e o caminho exigido para confirmar uma escrita.

Ensaiar cache vazia e entregar ao RUN

Com caches locais independentes, invalidar apenas no worker A pode deixar B a devolver dados antigos. Uma cache partilhada reduz esse problema mas ainda precisa de um protocolo de atualização. Quando a cache falha ou começa vazia, limita chamadas à origem e avalia juntar pedidos simultâneos para a mesma chave. Define rejeição ou degradação permitida, sem assumir capacidade ilimitada da base. Se a escrita já foi confirmada na base e só falhou a atualização da cache, não repitas cegamente uma operação com efeitos: consulta o resultado pelo identificador estável e repara o caminho de leitura. Reserva vinte minutos para o modelo e uma matriz com cache quente, vazia, indisponível e leitura atrasada. Regista previsões separadamente de ensaios executados; os casos são fictícios e não descrevem processos BNP Paribas.

// Synthetic in-memory teaching model; no AWS, database, or cache calls.
const pages = [{Items: [], LastEvaluatedKey: {pk: 'cursor'}}, {Items: [{id: 'match'}]}];
const collected = [];
let requests = 0;
for (const page of pages) {
  requests++;
  collected.push(...page.Items);
  if (!page.LastEvaluatedKey) break;
}
const authoritativeVersion = 2;
let cached = null;
const delayedRead = {version: 1, value: 'old'};
cached = delayedRead; // An unguarded late fill reintroduces stale data.
const naiveVersion = cached.version;
cached = null;
if (delayedRead.version === authoritativeVersion) cached = delayedRead;
console.log(JSON.stringify({requests, returned: collected.length, naiveVersion, guardedFill: cached}));
NA PRÁTICA

Uma Query devolve Items vazio e LastEvaluatedKey. O cliente continua; terminar nessa página perderia o resultado da página seguinte no exemplo.

Armadilhas comuns

Confundir standby e reader; assumir distribuição por query; parar numa página vazia; ignorar GSI; tratar TTL como consistência imediata.

Tópicos relacionados: Bases relacionais, ligações e recuperação · DynamoDB: consistência, capacidade e concorrência · Custos, compromissos e retirada

Leva esta ideia contigo

Define a semântica da leitura e observa o recurso limitante antes de acrescentar réplicas, cache ou capacidade.

Criar conta

Referência: RDS read replicas · SAA-C03

AWS é uma marca comercial da Amazon.com, Inc. ou das suas afiliadas. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por AWS. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.