Élasticité, disponibilité et mise en cache
Prérequis et objectifs
1. Prérequis
Pour tirer le meilleur parti de ce chapitre, il est recommandé de disposer :
D’un compte AWS.
Des connaissances en lignes de commandes pour le cas pratique.
2. Objectifs
Dans ce chapitre, l’objectif est de comprendre comment construire des architectures évolutives et hautement disponibles dans AWS. Vous apprendrez à mettre en place un redimensionnement automatique pour adapter les ressources aux fluctuations de la demande, à répartir la charge entre plusieurs ressources, à améliorer la disponibilité de vos services grâce à une gestion avancée du DNS et des vérifications de santé, à réduire la latence et à accélérer la diffusion de contenus, ainsi qu’à garantir une expérience utilisateur fiable et performante même en cas de pics de trafic ou de panne partielle d’infrastructure.
Ce chapitre explore les capacités avancées de scalabilité et de haute disponibilité dans AWS, en couvrant la mise en place d’un ajustement automatique des ressources, l’équilibrage de charge, la gestion DNS et la mise en cache. Vous apprendrez à concevoir des architectures capables de répondre aux variations de la demande tout en assurant la résilience de vos applications. Ce chapitre met également...
Scalabilité
1. AWS Auto Scaling Groups
![]() |
Un Auto Scaling Group (ASG) est un composant clé d’AWS qui permet d’ajuster automatiquement le nombre d’instances EC2 en fonction des besoins de notre application. Il garantit que les ressources cloud peuvent s’adapter dynamiquement à la demande tout en minimisant les coûts. Contrairement au scaling vertical (mise à l’échelle verticale), où l’on augmente les capacités d’une seule instance, les Auto Scaling Groups se concentrent sur le scaling horizontal, qui consiste à ajouter ou supprimer des instances pour gérer la charge. Ce mécanisme est essentiel pour maintenir une infrastructure élastique et robuste (cf. chapitre Le calcul sur AWS - Mise à l’échelle pour la distinction entre scaling horizontal et scaling vertical). |
Grâce à AWS Auto Scaling, nous pouvons configurer des règles pour ajouter des instances pendant les périodes de forte activité (scaling out) ou en supprimer lorsque la charge diminue (scaling in), garantissant ainsi une efficacité maximale et une disponibilité continue. En outre, un ASG (Auto Scaling Group) repose sur trois paramètres essentiels pour réguler son comportement :
-
Capacité minimale (Minimum desired capacity) : le nombre minimum d’instances EC2 que le groupe maintiendra en tout temps, garantissant une disponibilité de base.
-
Capacité maximale (Maximum desired capacity) : le nombre maximum d’instances qu’un groupe peut lancer, souvent défini pour maîtriser les coûts ou limiter les ressources.
-
Capacité souhaitée (Desired Capacity) : le nombre d’instances qu’un groupe essaiera de maintenir en temps normal, servant de valeur cible par défaut pour l’ASG.
L’un des principaux avantages des Auto Scaling Groups est leur capacité à maintenir la résilience. Si une instance devient défaillante, il peut la remplacer automatiquement par une nouvelle, assurant ainsi la disponibilité de l’application. En outre, il s’intègre facilement avec des services tels que les Load Balancers pour distribuer le trafic et garantir des performances optimales, même en cas de montée en charge.
Les cas d’utilisation...
Haute Disponibilité
1. Load Balancers
Un Load Balancer est un composant fondamental dans la conception d’une architecture informatique moderne. Son rôle principal est de répartir de manière efficace et équitable le trafic entrant entre plusieurs serveurs ou services. Il agit comme un gestionnaire centralisé qui optimise l’utilisation des ressources disponibles, améliore les performances, et garantit la continuité du service.
Le Load Balancer surveille constamment la santé des ressources auxquelles il est connecté. Si une ressource devient indisponible ou défaillante, il redirige automatiquement les requêtes vers les autres ressources disponibles. Ce mécanisme permet de garantir une haute disponibilité et d’éviter les points de défaillance uniques.
Il peut également prendre en charge différents protocoles réseau, comme HTTP, HTTPS, TCP, ou UDP, en fonction des besoins de l’application ou des services backend. Certains Load Balancers offrent des fonctionnalités avancées, comme le routage conditionnel basé sur des règles (par exemple, rediriger une requête en fonction de son URL ou de ses en-têtes) ou la gestion de la terminaison SSL/TLS.
Un Load Balancer est un outil clé pour :
-
améliorer la tolérance aux pannes, en redirigeant les requêtes en cas de défaillance d’un serveur ;
-
optimiser les performances, en distribuant équitablement la charge pour éviter la surcharge de certaines ressources ;
-
renforcer la résilience, en garantissant que les applications restent disponibles, même en cas de panne partielle ou de pics de trafic.
2. AWS Elastic Load Balancer
![]() |
AWS Elastic Load Balancer (ELB) est le service managé de répartition de charge proposé par AWS. Il joue un rôle essentiel dans la gestion du trafic réseau ou applicatif en distribuant automatiquement les requêtes entrantes sur plusieurs ressources backend, telles que des instances EC2, des conteneurs, ou d’autres services, en utilisant par défaut un algorithme de Round Robin. Cet algorithme garantit une répartition équitable du trafic en envoyant les requêtes de manière séquentielle à chaque cible disponible. Comme tout... |
Route 53
1. Domain Name System
a. Introduction au DNS
Le Domain Name System (DNS) est souvent décrit comme l’annuaire téléphonique d’Internet. Il traduit les noms de domaine lisibles par les humains, comme www.example.com, en adresses IP compréhensibles par les machines, telles que 192.0.2.1. Sans le DNS, les utilisateurs seraient contraints de mémoriser des adresses IP pour accéder à des sites web ou services.
Le DNS joue un rôle crucial dans la navigation sur Internet, la messagerie électronique, et toute communication réseau. Il fonctionne de manière distribuée, avec des millions de serveurs DNS répartis dans le monde entier. Ces serveurs collaborent pour fournir des résolutions rapides et fiables, garantissant ainsi la continuité des services en ligne.
Le DNS ne se limite pas à une simple traduction des noms en adresses IP : il gère également des fonctionnalités avancées, comme la répartition de charge (load balancing), la gestion des sous-domaines, et les configurations de sécurité via des protocoles comme DNSSEC.
b. Composants clés
Le Domain Name System repose sur plusieurs composants qui collaborent pour fournir une résolution efficace des noms de domaine. Ces composants jouent des rôles spécifiques dans la chaîne de résolution DNS :
-
Noms de domaine (Domain Names) : les noms de domaine sont des identifiants lisibles par les humains, comme example.com. Ils se composent de plusieurs parties, séparées par des points, qui reflètent une hiérarchie (par exemple, www est un sous-domaine de example.com).
-
Zones DNS et serveurs d’autorité (Authoritative Name Servers) : une zone DNS est une portion spécifique de l’espace de noms DNS, souvent associée à un domaine ou sous-domaine. Les serveurs d’autorité contiennent les enregistrements DNS pour une zone spécifique (par exemple, example.com), comme les adresses IP associées ou les enregistrements MX pour les e-mails.
-
Résolveurs récursifs (Recursive Resolvers) : les résolveurs récursifs agissent comme des intermédiaires pour les utilisateurs finaux. Lorsqu’un utilisateur saisit un domaine dans son navigateur, le résolveur interroge...
Mise en cache
1. AWS CloudFront
a. Présentation d’Amazon CloudFront
![]() |
AWS CloudFront est un réseau de diffusion de contenu (CDN - Content Delivery Network) qui permet de distribuer du contenu web de manière rapide, sécurisée et fiable à partir de serveurs périphériques situés dans le monde entier. Il repose sur une infrastructure mondiale de points de présence (Edge Locations) qui mettent en cache le contenu le plus proche des utilisateurs finaux. CloudFront est particulièrement adapté à la diffusion de fichiers statiques (images, vidéos, fichiers JavaScript, etc.) offrant une faible latence et une haute disponibilité. |

Ce schéma illustre la différence de temps de réponse entre une requête directe vers un bucket Amazon S3 situé à Sydney et une requête passant par une Edge Location de CloudFront proche de l’utilisateur, localisé à Paris. Lorsqu’un utilisateur de Paris accède directement au bucket S3 à Sydney, le temps de réponse est d’environ 300 ms, tandis que si le contenu est mis en cache dans une Edge Location proche de Paris, ce temps est réduit à environ 10 ms. Ces temps de réponse sont fictifs et donnés à titre d’exemple pour illustrer l’impact de la distance géographique sur la latence réseau. Cela montre clairement l’efficacité de CloudFront pour réduire la latence et améliorer les performances en mettant les données en cache au plus près des utilisateurs finaux.
L’utilisation de CloudFront permet d’améliorer l’expérience utilisateur en rapprochant le contenu des utilisateurs tout en réduisant la charge sur les serveurs backend. En plus de ses capacités de mise en cache performantes, CloudFront s’intègre de manière transparente avec de nombreux services AWS, tels que Amazon S3, pour la distribution de contenu statique ou bien Elastic Load Balancing pour acheminer le trafic vers des ressources backend dynamiques. Il prend également en charge des services comme Amazon API Gateway pour accélérer les API, et AWS Elemental Media Services pour la diffusion de contenus vidéo.

Cette image illustre une page web du site des Éditions...
Validation des acquis : questions/réponses
Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.
1. Questions
1 Une entreprise e-commerce rencontre des problèmes avec la gestion des paniers utilisateurs sur son site web. Lorsqu’un client ajoute un produit à son panier et navigue entre différentes pages, les articles disparaissent aléatoirement. Après analyse, il s’avère que le site est hébergé sur plusieurs instances EC2 derrière un Application Load Balancer (ALB), mais l’application n’est pas optimisée pour la gestion des sessions. Comment peut-elle s’assurer que chaque utilisateur reste connecté au même serveur backend et par la suite améliorer la gestion des sessions pour éviter toute perte de données ?
2 Un site e-commerce est hébergé sur deux instances EC2 derrière un Elastic Load Balancer (ELB). L’équipe d’analyse a constaté qu’une des instances a échoué, ce qui a entraîné un ralentissement significatif du site web, car il ne restait plus qu’une seule instance en cours d’exécution. Quelle serait la meilleure approche pour éviter que ce problème ne se reproduise à l’avenir ? Expliquez votre choix.
3 Une entreprise héberge son site web statique sur un bucket Amazon S3 et souhaite utiliser Route 53 pour le rendre accessible via un nom de domaine personnalisé. Quel type de routage permettrait d’acheminer toutes les requêtes vers ce bucket sans configuration avancée ?
4 Une application web utilise un Load Balancer AWS avec les Sticky Sessions activées. L’architecture prévoit une montée en charge automatique (Auto Scaling) en cas de pic de trafic. Quels pourraient être les impacts des Sticky Sessions sur la scalabilité et l’équilibrage du trafic ?
5 Dans une infrastructure AWS, une application web s’exécute sur un groupe de dix instances EC2 réparties sur deux zones de disponibilité. Sept instances sont situées en Availability Zone A, tandis que trois instances sont en Availability Zone B. Cependant, la répartition du trafic est déséquilibrée :...