REL07-BP03 Obtenir des ressources après avoir réalisé qu’un plus grand nombre de ressources est nécessaire pour une charge de travail - AWS Framework Well-Architected

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

REL07-BP03 Obtenir des ressources après avoir réalisé qu’un plus grand nombre de ressources est nécessaire pour une charge de travail

L’une des fonctionnalités les plus précieuses du cloud computing est sa capacité à provisionner des ressources de manière dynamique.

Dans les environnements informatiques sur site traditionnels, vous devez identifier et provisionner une capacité suffisante à l’avance pour répondre à un pic de demande. Cela pose problème car cela coûte cher et présente des risques pour la disponibilité si vous sous-estimez la capacité maximale requise par la charge de travail.

Dans le cloud, vous n’avez pas à le faire. Au lieu de cela, vous pouvez provisionner comme il se doit des capacités de calcul, de base de données et d’autres ressources pour répondre à la demande actuelle et prévue. Des solutions automatisées telles qu’Amazon EC2 Auto Scaling et Application Auto Scaling peuvent mettre en ligne des ressources pour vous sur la base de métriques que vous spécifiez. Cela peut faciliter le processus de mise à l’échelle et le rendre prévisible, et cela peut rendre votre charge de travail nettement plus fiable en garantissant que vous disposez de suffisamment de ressources à tout moment.

Résultat escompté : vous configurez la mise à l’échelle automatique des ressources de calcul et autres pour répondre à la demande. Vous prévoyez une marge de manœuvre suffisante dans vos politiques de mise à l’échelle pour permettre de répondre à des pics de trafic pendant que des ressources supplémentaires sont mises en ligne.

Anti-modèles courants :

  • Vous provisionnez un nombre fixe de ressources évolutives.

  • Vous choisissez une métrique de mise à l’échelle qui ne correspond pas à la demande réelle.

  • Vous ne parvenez pas à prévoir une marge de manœuvre suffisante dans vos plans de mise à l’échelle pour faire face aux pics de demande.

  • Vos politiques de mise à l’échelle tardent trop à augmenter la capacité, ce qui entraîne l’épuisement de la capacité et une dégradation du service lors de la mise en ligne de ressources supplémentaires.

  • Vous ne parvenez pas à configurer correctement le nombre minimal et le nombre maximal de ressources, ce qui entraîne des échecs de mise à l’échelle.

Avantages liés au respect de cette bonne pratique : il est essentiel de disposer de suffisamment de ressources pour répondre à la demande actuelle afin de garantir une haute disponibilité de votre charge de travail et de respecter les objectifs de niveau de service (SLO) définis. La mise à l’échelle automatique vous permet de fournir la bonne quantité de ressources de calcul, de base de données et autres dont votre charge de travail a besoin afin de répondre à la demande actuelle et prévue. Vous n’avez pas besoin de déterminer la capacité maximale requise et d’allouer statiquement des ressources pour la fournir. Au lieu de cela, à mesure que la demande augmente, vous pouvez allouer davantage de ressources pour y répondre et, une fois que la demande est retombée, vous pouvez désactiver les ressources pour réduire les coûts.

Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : moyen

Directives d’implémentation

Tout d’abord, déterminez si le composant de charge de travail est adapté à la mise à l’échelle automatique. Ces composants sont appelés évolutifs horizontalement car ils fournissent les mêmes ressources et se comportent de manière identique. Parmi les composants évolutifs horizontalement, citons les instances EC2 configurées de la même manière, les tâches Amazon Elastic Container Service (ECS) et les pods exécutés sur Amazon Elastic Kubernetes Service (EKS). Ces ressources de calcul sont généralement situées derrière un équilibreur de charge et sont appelées réplicas.

Les autres ressources répliquées peuvent inclure des réplicas en lecture de base de données, des tables Amazon DynamoDB et des clusters Amazon ElastiCache (Redis OSS). Pour obtenir la liste complète des ressources prises en charge, consultez Services AWS que vous pouvez utiliser avec Application Auto Scaling.

Pour les architectures basées sur des conteneurs, il peut être nécessaire de procéder à une mise à l’échelle de deux manières différentes. Tout d’abord, vous devrez peut-être mettre à l’échelle les conteneurs qui fournissent des services évolutifs horizontalement. Ensuite, vous devrez peut-être mettre à l’échelle les ressources de calcul pour libérer de l’espace pour de nouveaux conteneurs. Il existe différents mécanismes de mise à l’échelle automatique pour chaque couche. Pour mettre à l’échelle les tâches ECS, vous pouvez utiliser Application Auto Scaling. Pour mettre à l’échelle les pods Kubernetes, vous pouvez utiliser Horizontal Pod Autoscaler (HPA) ou Kubernetes Event-driven Autoscaler (KEDA). Pour mettre à l’échelle les ressources de calcul, vous pouvez utiliser les fournisseurs de capacité pour ECS, ou pour Kubernetes, vous pouvez utiliser Karpenter ou Cluster Autoscaler.

Ensuite, sélectionnez de quelle façon vous voulez effectuer la mise à l’échelle automatique. Il existe trois options principales : la mise à l’échelle basée sur des métriques, la mise à l’échelle planifiée et la mise à l’échelle prédictive.

Mise à l’échelle basée sur des métriques

La mise à l’échelle basée sur des métriques provisionne les ressources en fonction de la valeur d’une ou de plusieurs métriques de mise à l’échelle. Une métrique de mise à l’échelle est une métrique qui correspond à la demande de votre charge de travail. Un bon moyen de déterminer les métriques de mise à l’échelle appropriées consiste à effectuer des tests de charge dans un environnement hors production. Pendant vos tests de charge, maintenez fixe le nombre de ressources évolutives et augmentez lentement la demande (par exemple, débit, simultanéité ou utilisateurs simulés). Recherchez ensuite des métriques qui augmentent (ou diminuent) à mesure que la demande augmente, et inversement diminuent (ou augmentent) lorsque la demande diminue. Les métriques de mise à l’échelle typiques incluent l’utilisation du processeur, la profondeur de la file d’attente de travail (telle qu’une file d’attente Amazon SQS), le nombre d’utilisateurs actifs et le débit du réseau.

Note

AWS a observé qu’avec la plupart des applications, l’utilisation de la mémoire augmente à mesure que l’application monte en intensité, puis atteint une valeur stable. Lorsque la demande diminue, l’utilisation de la mémoire reste généralement élevée au lieu de diminuer en parallèle. Étant donné que l’utilisation de la mémoire ne correspond pas à la demande dans les deux cas de figure (à savoir en augmentant ni en diminuant avec la demande), réfléchissez bien avant de sélectionner cette métrique pour la mise à l’échelle automatique.

La mise à l’échelle basée sur des métriques est une opération latente. Plusieurs minutes peuvent être nécessaires pour que les métriques d’utilisation se propagent aux mécanismes de mise à l’échelle automatique, et ces mécanismes attendent généralement un signal clair d’augmentation de la demande avant de réagir. Ensuite, à mesure que l’outil de mise à l’échelle automatique crée de nouvelles ressources, la mise en service complète de ces dernières peut prendre plus de temps. Pour cette raison, il est important de ne pas définir vos cibles de métriques de mise à l’échelle trop proches de l’utilisation totale (par exemple, 90 % d’utilisation du processeur). Cela risque d’épuiser la capacité de ressources existante avant qu’une capacité supplémentaire puisse être mise en ligne. Les cibles typiques d’utilisation des ressources peuvent varier entre 50 et 70 % pour une disponibilité optimale, en fonction des modèles de demande et du temps nécessaire pour provisionner des ressources supplémentaires.

Mise à l’échelle planifiée

La mise à l’échelle planifiée provisionne ou supprime des ressources en fonction du calendrier ou de l’heure de la journée. Elle est fréquemment utilisée pour les charges de travail dont la demande est prévisible, telles que les pics d’utilisation pendant les heures ouvrables de semaine ou lors de soldes. Amazon EC2 Auto Scaling et Application Auto Scaling prennent tous deux en charge la mise à l’échelle planifiée. La fonctionnalité cron scaler de KEDA prend en charge la mise à l’échelle planifiée des pods Kubernetes.

Mise à l’échelle prédictive

La mise à l’échelle prédictive utilise le machine learning pour mettre à l’échelle automatiquement les ressources en fonction de la demande anticipée. La mise à l’échelle prédictive analyse la valeur historique d’une métrique d’utilisation que vous fournissez et prédit en permanence sa valeur future. La valeur prédite est ensuite utilisée pour augmenter ou réduire verticalement la ressource. Amazon EC2 Auto Scaling peut effectuer une mise à l’échelle prédictive.

Étapes d’implémentation

  1. Déterminez si le composant de charge de travail est adapté à la mise à l’échelle automatique.

  2. Déterminez le type de mécanisme de mise à l’échelle le plus approprié pour la charge de travail : mise à l’échelle basée sur des métriques, mise à l’échelle planifiée ou mise à l’échelle prédictive.

  3. Sélectionnez le mécanisme de mise à l’échelle automatique approprié pour le composant. Pour les instances Amazon EC2, utilisez Amazon EC2 Auto Scaling. Pour les autres services AWS, utilisez Application Auto Scaling. Pour les pods Kubernetes (tels que ceux exécutés dans un cluster Amazon EKS), pensez à Horizontal Pod Autoscaler (HPA) ou à Kubernetes Event-driven Autoscaling (KEDA). Pour les nœuds Kubernetes ou EKS, pensez à Karpenter et à Cluster Auto Scaler (CAS).

  4. Pour une mise à l’échelle basée sur des métriques ou planifiée, effectuez des tests de charge afin de déterminer les métriques de mise à l’échelle et les valeurs cibles appropriées pour votre charge de travail. Pour une mise à l’échelle planifiée, déterminez le nombre de ressources nécessaires aux dates et heures que vous sélectionnez. Déterminez le nombre maximal de ressources nécessaires pour répondre aux pics de trafic attendus.

  5. Configurez l’outil de mise à l’échelle en fonction des informations collectées ci-dessus. Pour plus d’informations, consultez la documentation du service de mise à l’échelle automatique. Vérifiez que les limites de mise à l’échelle maximale et minimale sont correctement configurées.

  6. Vérifiez que la configuration de mise à l’échelle fonctionne comme prévu. Effectuez des tests de charge dans un environnement hors production, observez comment le système réagit et ajustez le cas échéant. Lorsque vous activez la mise à l’échelle automatique en production, configurez les alarmes appropriées pour être averti de tout comportement inattendu.

Ressources

Documents connexes :