Gestion automatique de la capacité de débit avec la scalabilité automatique de DynamoDB
De nombreuses charges de travail de base de données sont cycliques par nature, tandis que d’autres sont difficiles à prévoir. Prenons l’exemple d’une application de réseau social où la plupart des utilisateurs sont actifs pendant la journée. La base de données doit être capable de gérer l’activité durant cette période, mais elle n’a pas besoin des mêmes niveaux de débit pendant la nuit. Prenons également l’exemple d’une nouvelle application de jeux pour appareils mobiles qui, contre toute attente, est rapidement adoptée par les utilisateurs. Si le jeu devient trop populaire, les ressources de base de données disponibles risquent d’être dépassées, entraînant un ralentissement des performances et le mécontentement des clients. Ce type de charges de travail nécessite souvent une intervention manuelle pour augmenter ou diminuer les ressources de base de données en fonction de la variation des niveaux d’utilisation.
La scalabilité automatique d’Amazon DynamoDB utilise le service de scalabilité automatique d’application AWS pour ajuster de manière dynamique la capacité de débit approvisionné en votre nom, en réponse aux schémas de trafic réels. Cela permet à une table ou à un index secondaire global (GSI) d’augmenter sa capacité de lecture et d’écriture approvisionnée afin de gérer les hausses soudaines de trafic sans limitation. Lorsque la charge de travail diminue, la scalabilité automatique d’application réduit le débit de sorte que vous ne payez pas pour une capacité approvisionnée non utilisée.
Note
Si vous utilisez l’AWS Management Console pour créer une table ou un index secondaire global, la scalabilité automatique de DynamoDB est activée par défaut. Vous pouvez modifier vos paramètres de scalabilité automatique à tout moment. Pour en savoir plus, consultez Utilisation de la AWS Management Console avec la scalabilité automatique de DynamoDB.
Lorsque vous supprimez une table ou un réplica de table global, les cibles évolutives associées, les politiques de mise à l’échelle ou les alarmes CloudWatch ne sont pas automatiquement supprimées en même temps.
Avec la scalabilité automatique d’application, vous créez une politique de mise à l’échelle pour une table ou un index secondaire global. La politique de mise à l’échelle spécifie si vous souhaitez mettre à l’échelle la capacité de lecture ou d’écriture (ou les deux), ainsi que les paramètres d’unité de capacité approvisionnée minimum et maximum pour la table ou l’index.
La politique de mise à l’échelle contient également une utilisation cible, c’est-à-dire le pourcentage du débit approvisionné consommé à un moment donné. La scalabilité automatique d’application utilise un algorithme de suivi de cible pour ajuster le débit approvisionné de la table (ou de l’index) en réponse aux charges de travail réelles, de façon que l’utilisation de capacité réelle reste au niveau ou à un niveau proche de votre utilisation cible.
DynamoDB produit le débit provisionné consommé pendant des périodes d’une minute. L’autoscaling se déclenche lorsque la capacité consommée dépasse l’utilisation cible configurée pendant deux minutes consécutives. Les alarmes CloudWatch peuvent présenter un court délai, allant jusqu’à quelques minutes, avant de déclencher l’autoscaling. Ce délai garantit une évaluation précise des métriques CloudWatch. Si les pics de débit consommés sont espacés de plus d’une minute, l’autoscaling risque de ne pas se déclencher. De même, un événement de réduction verticale peut être déclenché lorsque 15 points de données consécutifs sont en dessous de l’utilisation cible. Dans les deux cas, une fois l’autoscaling déclenché, l’API UpdateTable est invoquée. Plusieurs minutes sont ensuite nécessaires pour mettre à jour la capacité provisionnée pour la table ou l’index. Pendant cette période, toutes les demandes dépassant la capacité provisionnée précédente pour les tables seront limitées.
Important
Vous ne pouvez pas ajuster le nombre de points de données à dépasser pour déclencher l’alarme sous-jacente (bien que le nombre actuel puisse changer à l’avenir).
Vous pouvez également définir les valeurs d’utilisation cibles de la scalabilité automatique entre 20 % et 90 % pour votre capacité de lecture et d’écriture.
Note
Outre les tables, la scalabilité automatique de DynamoDB prend également en charge les index secondaires globaux. Chaque index secondaire global a sa propre capacité de débit approvisionné, distincte de celle de sa table de base. Lorsque vous créez une politique de mise à l’échelle pour un index secondaire global, la scalabilité automatique d’application ajuste les paramètres de débit approvisionné pour l’index afin de s’assurer que l’utilisation réelle reste au niveau ou à une niveau proche du ratio d’utilisation souhaité.
Comment fonctionne la scalabilité automatique de DynamoDB
Note
Pour commencer rapidement à utiliser la scalabilité automatique de DynamoDB, consultez Utilisation de la AWS Management Console avec la scalabilité automatique de DynamoDB.
Le diagramme suivant fournit une présentation de haut niveau de la manière dont la scalabilité automatique de DynamoDB gère la capacité de débit pour une table.
Les étapes suivantes résument le processus de scalabilité automatique illustré dans le diagramme précédent :
-
Vous créez une politique de scalabilité automatique d’application pour votre table DynamoDB.
-
DynamoDB publie les métriques de capacité consommée dans Amazon CloudWatch.
-
Si la capacité consommée de la table est supérieure ou inférieure à votre utilisation cible pendant une durée spécifique, Amazon CloudWatch déclenche une alarme. Vous pouvez voir l’alarme sur la console et recevoir des notifications via Amazon Simple Notification Service (Amazon SNS).
-
L’alarme CloudWatch appelle la scalabilité automatique d’application pour évaluer votre politique de mise à l’échelle.
-
La scalabilité automatique d’application émet une demande
UpdateTablepour ajuster le débit approvisionné de votre table. -
DynamoDB traite la demande
UpdateTableen augmentant (ou réduisant) de manière dynamique la capacité de débit approvisionné de la table de façon que celle-ci se rapproche de votre utilisation cible.
Pour comprendre la manière dont fonctionne la scalabilité automatique de DynamoDB, supposons que vous ayez une table nommée ProductCatalog. Cette table est chargée en masse de manière occasionnelle, elle n’entraîne donc pas une importante activité en écriture. Toutefois, elle ne connaît pas une activité en lecture très élevée, qui varie avec le temps. En surveillant les métriques Amazon CloudWatch pour ProductCatalog, vous déterminez que la table requiert 1 200 unités de capacité de lecture (pour éviter la limitation des demandes de lecture par DynamoDB en cas de pic d’activité). Vous déterminez également que ProductCatalog requiert au minimum 150 unités de capacité de lecture lorsque le trafic de lecture est à son point le plus bas. Pour plus d’informations sur la prévention de la limitation, consultez Résolution des problèmes de limitation dans Amazon DynamoDB.
Dans la plage de 150 à 1 200 unités de capacité de lecture, vous décidez qu’une utilisation cible de 70 % conviendrait pour la table ProductCatalog. L’utilisation cible correspond au ratio des unités de capacité consommées par rapport aux unités de capacité approvisionnées, exprimé sous forme de pourcentage. La scalabilité automatique d’application utilise son algorithme de suivi de cible pour s’assurer que la capacité de lecture approvisionnée de ProductCatalog est correctement ajustée, de sorte que l’utilisation demeure proche de 70 %.
Note
La scalabilité automatique de DynamoDB modifie les paramètres de débit approvisionné uniquement lorsque la charge de travail réelle reste élevée ou basse pendant une période continue de plusieurs minutes. L’algorithme de suivi de cible de la scalabilité automatique d’application cherche à maintenir l’utilisation cible au niveau ou à un niveau proche de la valeur choisie sur le long terme.
Les pics soudains de l’activité de lecture sont gérés par la capacité de transmission en mode rafale intégrée de la table. Pour en savoir plus, consultez Capacité de débordement.
Pour activer la scalabilité automatique de DynamoDB pour la table ProductCatalog, vous devez créer une politique de mise à l’échelle. La politique spécifie les éléments suivants :
-
Table ou index secondaire global que vous voulez gérer
-
Le type de capacité à gérer (lecture ou écriture)
-
Les limites supérieure et inférieure pour les paramètres du débit provisionné.
-
Votre utilisation cible
Lorsque vous créez une politique de mise à l’échelle, la scalabilité automatique de DynamoDB crée pour vous une paire d’alarmes Amazon CloudWatch. Chaque paire représente les limites supérieure et inférieure pour vos paramètres de débit provisionné. Ces alarmes CloudWatch sont déclenchées lorsque l’utilisation réelle de la table s’éloigne de votre utilisation cible pendant une période prolongée.
Quand une des alarmes CloudWatch est déclenchée, DynamoDB vous envoie une notification (si vous avez activé cette fonction). L’alarme CloudWatch appelle alors la scalabilité automatique d’application qui, à son tour demande à DynamoDB d’ajuster la capacité approvisionnée de la table ProductCatalog. en conséquence
Lors d’un événement de mise à l’échelle, AWS Config est facturé par élément de configuration enregistré. Lorsqu’un événement de mise à l’échelle se produit, quatre alarmes CloudWatch sont créées pour chaque événement d’autoscaling en lecture et en écriture : deux alarmes ProvisionedCapacity : ProvisionedCapacityLow et ProvisionedCapacityHigh, ainsi que deux alarmes ConsumedCapacity : AlarmHigh, AlarmLow. Cela se traduit par un total de huit alarmes. Par conséquent, AWS Config enregistre huit éléments de configuration pour chaque événement de mise à l’échelle.
Note
Vous pouvez également planifier la mise à l’échelle de DynamoDB de manière à ce qu’elle se produise à certains moments. Découvrez les étapes de base ici.
Notes d’utilisation
Avant de commencer à utiliser la scalabilité automatique de DynamoDB, vous devez être conscient de ce qui suit :
-
La scalabilité automatique de DynamoDB peut augmenter la capacité de lecture ou d’écriture aussi souvent que nécessaire, selon votre politique de scalabilité automatique. Tous les quotas DynamoDB restent en vigueur, comme décrit dans Quotas dans Amazon DynamoDB.
-
La scalabilité automatique de DynamoDB ne vous empêche pas de modifier manuellement les paramètres de débit approvisionné. Ces ajustements manuels n’affectent aucune des alarmes CloudWatch existantes liées à la scalabilité automatique de DynamoDB.
-
Si vous activez la scalabilité automatique de DynamoDB pour une table contenant un ou plusieurs index secondaires globaux, nous vous recommandons vivement d’appliquer également la scalabilité automatique de manière uniforme à ces index. Cela permettra de garantir de meilleures performances pour les écritures et les lectures de table et d’éviter les limitations. Vous pouvez activer la mise à l’échelle automatique en sélectionnant Apply same settings to global secondary indexes (Appliquer les mêmes paramètres aux index secondaires globaux) dans la AWS Management Console. Pour en savoir plus, consultez Activation de la scalabilité automatique de DynamoDB sur des tables existantes.
-
Lorsque vous supprimez une table ou un réplica de table global, les cibles évolutives associées, les politiques de mise à l’échelle ou les alarmes CloudWatch ne sont pas automatiquement supprimées en même temps.
-
Lors de la création d’un index secondaire global pour une table existante, la scalabilité automatique n’est pas activée pour l’index secondaire global. Vous devrez gérer manuellement la capacité pendant la construction de l’index secondaire global. Une fois que le remplissage de l’index secondaire global est terminé et qu’il a atteint le statut actif, la mise à l’échelle automatique fonctionne normalement.