As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
PERF03-BP05 Implemente padrões de acesso a dados que utilizem cache
Implemente padrões de acesso que possam se beneficiar do armazenamento em cache de dados para recuperação rápida de dados acessados com frequência.
Práticas comuns que devem ser evitadas:
-
Armazenar em cache dados que mudam com frequência.
-
Depender dos dados em cache como se estivessem armazenados de forma durável e sempre disponíveis.
-
Não levar em conta a consistência dos seus dados em cache.
-
Não monitorar a eficiência da sua implementação de cache.
Benefícios de implementar esta prática recomendada: armazenar dados em um cache pode melhorar a latência de leitura, o throughput de leitura, a experiência do usuário e a eficiência geral, além de reduzir custos.
Nível de risco exposto se esta prática recomendada não for estabelecida: Médio
Orientação para implementação
Um cache é um componente de software ou hardware destinado a armazenar dados para que futuras solicitações dos mesmos dados possam ser atendidas com maior rapidez e eficiência. Os dados armazenados em um cache podem ser reconstruídos se perdidos, repetindo um cálculo anterior ou obtendo-os de outro datastore.
O armazenamento de dados em cache pode ser uma das estratégias mais eficazes para melhorar a performance geral da aplicação e reduzir a carga sobre as fontes de dados primárias subjacentes. Os dados podem ser armazenados em vários níveis na aplicação, como dentro da aplicação e fazendo chamadas remotas, o que é conhecido como cache do lado do cliente, ou usando um serviço secundário rápido para armazenar os dados, conhecido como cache remoto.
Armazenamento em cache no lado do cliente
Com o armazenamento em cache no lado do cliente, cada cliente (uma aplicação ou serviço que consulta o datastore de backend) pode armazenar os resultados de suas consultas exclusivas localmente por um período especificado. Isso pode reduzir o número de solicitações na rede para um datastore ao verificar primeiro o cache do cliente local. Se os resultados não estiverem presentes, a aplicação poderá então consultar o datastore e armazenar esses resultados localmente. Esse padrão permite que cada cliente armazene dados no local mais próximo (o próprio cliente), resultando na menor latência possível. Os clientes também podem continuar a atender algumas consultas quando o datastore de backend não está disponível, aumentando a disponibilidade geral do sistema.
Uma desvantagem dessa abordagem é que, quando vários clientes estão envolvidos, eles podem armazenar os mesmos dados em cache localmente. Isso resulta no uso de armazenamento duplicado e na inconsistência de dados entre esses clientes. Um cliente pode armazenar em cache os resultados de uma consulta e, um minuto depois, outro cliente pode executar a mesma consulta e obter um resultado diferente.
Armazenamento em cache remoto
Para resolver o problema de dados duplicados entre clientes, um serviço externo rápido ou cache remoto pode ser usado para armazenar os dados consultados. Em vez de verificar um datastore local, cada cliente verificará o cache remoto antes de consultar o datastore de backend. Essa estratégia permite respostas mais consistentes entre clientes, melhor eficiência nos dados armazenados e um volume maior de dados em cache, pois o espaço de armazenamento é dimensionado independentemente dos clientes.
A desvantagem de um cache remoto é que o sistema geral pode ter uma latência maior, pois é necessário um salto de rede adicional para verificar o cache remoto. O cache do lado do cliente pode ser usado junto com o armazenamento em cache remoto para o armazenamento em vários níveis para melhorar a latência.
Etapas de implementação
-
Identifique bancos de dados APIs e serviços de rede que poderiam se beneficiar do armazenamento em cache. Serviços que têm cargas de trabalho de leitura pesadas, têm uma alta read-to-write taxa ou são caros de escalar são candidatos ao armazenamento em cache.
-
Identifique o tipo apropriado de estratégia de armazenamento em cache que melhor se adapte ao seu padrão de acesso.
-
Siga as práticas recomendadas de armazenamento em cache
para seu datastore. -
Configure uma estratégia de invalidação de cache, como a time-to-live (TTL), para todos os dados que equilibre a atualização dos dados e reduza a pressão no armazenamento de dados de back-end.
-
Habilite recursos como novas tentativas automáticas de conexão, recuo exponencial, tempos limite no lado do cliente e pool de conexões no cliente, se disponíveis, pois eles podem melhorar a performance e a confiabilidade.
-
Monitore a taxa de acertos de cache com uma meta de 80% ou mais. Valores mais baixos podem indicar tamanho insuficiente do cache ou um padrão de acesso que não se beneficia do armazenamento em cache.
-
Implemente a replicação de dados para descarregar as leituras em várias instâncias e melhorar a performance e a disponibilidade da leitura de dados.
Recursos
Documentos relacionados:
Vídeos relacionados:
-
Projete para o sucesso com ElastiCache as melhores práticas da Amazon
-
AWS re:Invent 2020 — Projete para o sucesso com as melhores práticas da Amazon ElastiCache
-
AWS re:Invent 2023 — [] LAUNCH Apresentando o Amazon Serverless ElastiCache
-
AWS re:Invent 2022 - 5 ótimas maneiras de reimaginar sua camada de dados com o Redis
-
AWS re:Invent 2021 — Aprofundamento na Amazon ElastiCache (Redis) OSS
Exemplos relacionados: