On effectue souvent les mêmes requêtes sur un site web, ce qui implique que le back-end exécute plusieurs fois la même requête dans le même laps de temps. Il serait sûrement plus judicieux de stocker une fois le résultat de la requête et de le fournir à d’autres si nécessaire. Or, un ordinateur a deux types de stockage : un espace disque et une mémoire vive. Cette dernière est dédiée à du stockage transitoire et fournit des temps de réponse très rapides. C’est ce qui vous permet notamment d’avoir une navigation fluide sur Internet ! 😉
Amazon ElastiCache
Amazon ElastiCache est un service entièrement géré de mise en cache en mémoire qui vous permet d’accéder aux données avec une latence de quelques microsecondes. ElastiCache est compatible avec Redis et Memcached.
Il s’utilise en complément d’une base de données relationnelle ou non relationnelle. En revanche, son utilisation implique de lourdes modifications du code d'application.
ElastiCache propose trois modèles de cache :
Chargement différé (lazy loading) ;
Écriture simultanée (write through) ;
TTL (Time to Live).
1 - L’application (par exemple le serveur d’API) cherche et trouve une correspondance avec le cache (cache hit) pour sa requête.
2 - L’application cherche et ne trouve pas une correspondance avec le cache, c’est une absence de données dans le cache (cache miss) pour sa requête.
3 - Alors l’application envoie la même requête directement dans RDS et lit les données retournées par RDS.
4 - L’application écrit dans le cache le résultat pour des requêtes similaires dans le futur.
1 - L’application (par exemple le serveur d’API) écrit simultanément une nouvelle donnée en base et en cache.(2) à (5) C’est le même principe que le modèle chargement différé.
1 - L’utilisateur se connecte et renseigne ses identifiants sur le site (ex. : Facebook). Il reçoit des données de session temporaire (avec TTL) qui sont également écrites en base par une instance de l’application.
2 - Lorsque l’utilisateur est traité par une autre instance de l’application, cette dernière vérifie ses données de session en base pour l’identifier plus rapidement.
Contrairement aux bases de données étudiées, un rôle IAM n’est utilisé que pour l’autorisation d’actions sur ElastiCache, mais pas pour l’authentification qui n’est pas supportée. Voici les options pour l’authentification :
Redis AUTH est une méthode qui exige un identifiant et un jeton/mot de passe pour se connecter à ElastiCache for Redis. Vous pouvez ajouter un groupe de sécurité et du chiffrement SSL/TLS pour sécuriser les communications avec Redis.
ElastiCache for Memcached utilise le protocole SASL (Simple Authentication and Security Layer).
| Redis | Memcached |
Multi-AZ (haute disponibilité) | 🟢 | 🔴 |
Multi-Noeuds pour partitionner (sharding) les données | 🔴 | 🟢 |
Réplicas (scalabilité) | 🟢 | 🔴 |
Persistance des données | 🟢 | 🔴 |
Sauvegardes et restauration | 🟢 | 🔴 |
Multi-thread | 🔴 | 🟢 |
Question types de l'examen
Voici un exemple de question sur les sujets vus dans ce chapitre que vous pourriez avoir à l'examen. Essayez d'y réfléchir vous-même avant de vérifier la réponse.
Votre entreprise commence à utiliser AWS pour héberger de nouvelles applications web. Une nouvelle application à deux niveaux sera déployée pour permettre aux clients d'accéder aux enregistrements de données. Il est important que l'application soit très réactive et que les temps de récupération soient optimisés. Vous recherchez une base de données persistante capable de fournir les performances requises. Dans la liste ci-dessous, quel service AWS recommanderiez-vous pour cette exigence ?
ElastiCache for Memcached
ElastiCache for Redis
RDS (Multi-AZ activé)
OpenSearch
En résumé
Amazon ElastiCache est un service entièrement géré de mise en cache en mémoire.
ElastiCache est compatible avec Redis et Memcached.
Redis AUTH est une méthode d’authentification pour ElastiCache for Redis.
ElastiCache for Memcached utilise le protocole SASL.
Maintenant, voyons comment stocker les pages de notre site web dans un compartiment S3 !