Dans le calcul, un cache est une couche de stockage de données grande vitesse qui stocke un sous-ensemble de données, généralement transitoires, de sorte que les demandes futures pour ces données sont traitées le plus rapidement possible en accédant à l'emplacement de stockage principal des données. La mise en cache vous permet de réutiliser efficacement des données précédemment récupérées ou traitées. Les données mises en cache sont généralement stockées sur du matériel à accès rapide comme de la RAM (mémoire vive) et peuvent également être utilisées en corrélation avec un composant logiciel. L'objectif principal d'un cache est d'augmenter les performances de récupération des données en réduisant le besoin d'accès à la couche de stockage sous-jacente plus lente. En laissant la capacité au profit de la vitesse, un cache stocke généralement un sous-ensemble de données transitoires, contrairement aux bases de données dont les données sont généralement complètes et durables.
Les caches peuvent s'appliquer et être exploités dans différentes couches de technologie, y compris les systèmes d'exploitation, les couches de mise en réseau dont les réseaux de diffusion de contenu (CDN) et les DNS, des applications Web et des bases de données.
En raison des taux élevés de demande ou d'IOPS (opérations d'entrée/sortie par seconde) pris en charge par la RAM et les moteurs en mémoire, la mise en cache améliore les performances de récupération de données et réduit les coûts à l'échelle. Pour prendre en charge la même mise à l'échelle avec des bases de données classiques et du matériel sur disques, il faudrait des ressources supplémentaires. Ces ressources supplémentaires augmentent les coûts et ne parviennent jamais à atteindre les performances de faible latence affichées par un cache en mémoire.
Vous pouvez utiliser la mise en cache pour réduire considérablement la latence et améliorer les IOPS pour de nombreuses charges de travail d'application exigeantes, comme les portails de questions-réponses, les jeux, le partage multimédia et les réseaux sociaux. Les informations mises en cache peuvent inclure les résultats d'interrogations de bases de données, les calculs exigeants, les requêtes/réponses d'API et les artéfacts Web tels que HTML, JavaScript, et les fichiers image. Les charges de travail exigeantes en puissance de calcul qui manipulent des ensembles de données, comme les moteurs de recommandation et les simulations de calcul hautes performances, tirent également parti d'une couche de données en mémoire agissant comme un cache. Dans ces applications, de très grands ensembles de données doivent être accessibles en temps réel sur des clusters de machines pouvant s'étendre sur des centaines de nœuds. Du fait de la vitesse du matériel sous-jacent, la manipulation de ces données sur un disque de stockage est un goulot d'étranglement considérable pour ces applications.
Dans un environnement informatique distribué, une couche de mise en cache dédiée permet aux systèmes et applications de s'exécuter de manière indépendante à partir du cache avec leurs propres cycles de vie sans le risque d'affecter le cache. Le cache sert de couche centrale pouvant être accessible à partir de systèmes hétérogènes avec sa propre topologie d'architecture et son cycle de vie. Cela est particulièrement pertinent dans un système où les nœuds d'application peuvent être dynamiquement mis à l'échelle. Si le cache réside sur le même nœud que l'application ou les systèmes l'utilisant, le dimensionnement peut affecter l'intégrité du cache. En outre, lorsque les caches locaux sont utilisés, ils ne profitent qu'à l'application locale consommant les données. Dans un environnement de mise en cache distribuée, les données peuvent être réparties sur plusieurs serveurs cache et être stockées dans un emplacement central pour que tous les consommateurs de ces données puissent en profiter.
| Couche | Côté client | DNS | Web | Application | Base de données |
| Cas d'utilisation | Accélérer la récupération du contenu Web à partir de sites Web (navigateur ou appareil) | Domaine pour résolution d'IP | Accélérez la récupération de contenu Web depuis des serveurs Web/d'application. Gérer les sessions Web (côté serveur) | Accélérer les performances d'application et accès aux données | Réduire la latence associée à des requêtes d'interrogation de base de données |
| Technologies | En-têtes de cache HTTP, navigateurs | Serveurs DNS | En-têtes de cache HTTP, CDN, Proxys inversés, accélérateurs Web, magasins de clés/valeurs | Magasins de données de clés/valeurs, caches locaux | Tampons de bases de données, magasins de données de clés/valeurs |
| Solutions | Propre au navigateur | Amazon Route 53 | Amazon CloudFront, ElastiCache pour Redis, ElastiCache pour Memcached, Partner Solutions | Dispositifs d'application, ElastiCache pour Redis, ElastiCache pour Memcached, Partner Solutions | ElastiCache pour Redis, ElastiCache pour Memcached |
Lors de la mise en place d'une couche de cache, il est important de comprendre la validité des données mises en cache. Un cache réussi génère une haute vitesse de succès, ce qui signifie que les données étaient présentes lors de la récupération. Un cache manqué se produit lorsque les données récupérées n'étaient pas présentes dans le cache. Les contrôles, tels que les valeurs TTL (Time to Live), peuvent être appliqués à expiration des données en conséquence. Une autre considération peut être de savoir si l'environnement de cache doit être hautement disponible, condition pouvant être remplie par des moteurs en mémoire comme Redis. Dans certains cas, une couche en mémoire peut être utilisée comme couche de stockage de données autonome contrairement aux données de mise en cache d'un emplacement principal. Dans ce scénario, il est important de définir un RTO (Recovery Time Objective, le temps nécessaire pour récupérer d'une panne) et un RPO (Recovery Point Objective, le dernier point ou la dernière transaction capturés dans la récupération) sur les données résidant dans le moteur en mémoire pour déterminer si elles sont adaptées. Les stratégies et caractéristiques personnalisées de différents moteurs en mémoire peuvent s'appliquer pour répondre à la plupart des exigences en matière de RTO et de RPO.
Amazon ElastiCache est un service Web qui simplifie le déploiement, l'utilisation et le dimensionnement d'un magasin de données ou d'un cache dans le cloud. Ce service améliore les performances des applications Web en vous permettant de récupérer des informations depuis des magasins de données en mémoire gérés rapides, au lieu de vous en remettre entièrement à des bases de données sur disques, qui sont plus lentes.
Découvrez comment mettre en place une stratégie de mise en cache efficace avec ce livre blanc technique sur la mise en cache en mémoire.
Comme la mémoire est beaucoup plus rapide que le disque (magnétique ou SSD), la lecture des données à partir du cache en mémoire est extrêmement rapide (infra-millisecondes). Cet accès aux données significativement plus rapide améliore les performances globales de l'application.
Une seule instance de cache peut fournir des centaines de milliers d'IOPS (opérations d'entrée/sortie par seconde), remplaçant potentiellement un certain nombre d'instances de base de données, ce qui permet de réduire le coût total. Cela est particulièrement important si la base de données primaire facture au débit. Dans ces cas, les économies pourraient s'élever à des douzaines de pour cent.
En redirigeant d'importantes parties de la charge de lecture de la base de données de backend vers la couche en mémoire, la mise en cache peut réduire la charge sur votre base de données et la protéger contre les baisses de performances sous charge, ou même contre le plantage pendant les périodes de pics.
Un défi courant dans les applications modernes est la gestion des périodes de pics dans l'utilisation des applications. Parmi les exemples, on trouve des applications sociales pendant le Super Bowl ou le jour des élections, les sites Web d'e-commerce pendant le Black Friday, etc. Une augmentation de la charge sur la base de données génère des latences plus élevées lors de l'obtention de données, ce qui rend les performances d'application imprévisibles. En utilisant un débit élevé de cache en mémoire, ce problème peut être atténué.
Dans la plupart des applications, il est probable qu'un petit sous-ensemble de données, tel qu'un profil de célébrité ou un produit populaire, soit accessible plus fréquemment que d'autres. Cela peut provoquer des points chauds dans votre base de données et nécessiter un surprovisionnement de ressources de base de données en fonction des exigences en matière de débit pour les données les plus fréquemment utilisées. Le stockage de clés courantes dans un cache en mémoire diminue le besoin de surprovisionner tout en fournissant des performances élevées et prévisibles pour les données les plus fréquemment consultées.
En plus d'une latence plus faible, les systèmes en mémoire proposent également des taux de demande (IOPS) beaucoup plus élevés par rapport à une base de données basée sur disques comparable. Une instance unique utilisée comme côte cache distribué peut servir des centaines de milliers de requêtes par seconde.
Il est facile de se lancer dans la mise en cache dans le cloud avec un service entièrement géré comme Amazon ElastiCache. Ce service supprime la complexité de la configuration, de la gestion et de l'administration de votre cache, et vous permet de concentrer vos efforts sur ce qui apporte de la valeur à votre organisation. Inscrivez-vous dès aujourd'hui pour Amazon ElastiCache.

