6.71 Vue d'ensemble ELASTICACHE
ElastiCache est à la gestion du cache ce que RDS est aux bases de données relationnelles. Le service gère deux moteurs open source — Redis et Memcached — chargés en RAM pour offrir une très faible latence. Le cache soulage la charge en lecture des bases RDS en absorbant les requêtes répétitives, améliore la haute disponibilité en écriture via le sharding et facilite la mise à l'échelle horizontale grâce aux réplicas en lecture seule.
Cas d'usage typiques
Premier cas : un utilisateur interroge l'application, qui consulte d'abord ElastiCache. Si la donnée est présente, elle est renvoyée immédiatement sans solliciter RDS. Sinon, l'application interroge RDS, met la réponse en cache, puis la renvoie. Une stratégie d'invalidation est indispensable pour s'assurer que seules des données fraîches sont servies. Second cas : le magasin de sessions. Plusieurs instances d'application derrière un load balancer peuvent partager les sessions utilisateurs via ElastiCache, ce qui rend l'application stateless et tolérante aux bascules d'instance.
L'utilisation d'ElastiCache implique des modifications dans le code de l'application, qui doit explicitement écrire et lire le cache. AWS prend en charge la maintenance complète : patching, optimisation, monitoring, récupération automatique en cas de défaillance et sauvegardes.
Redis vs Memcached
- Redis : déploiement multi-AZ avec basculement automatique, réplicas en lecture seule pour la haute disponibilité, persistance via AOF (append-only file écrit toutes les secondes), sauvegarde et restauration intégrées.
- Memcached : architecture multi-nœuds avec sharding, données non persistantes, pas de sauvegarde, idéal pour le cache simple de gros volumes répartis sur plusieurs nœuds.
Redis convient aux cas nécessitant haute disponibilité, persistance et structures de données avancées. Memcached est plus adapté à un cache distribué pur, multi-thread, sans persistance, par exemple lorsque l'on partitionne le cache par segments métier (utilisateurs par lettre, par région, etc.).