Évaluation des paramètres de mise à l'échelle automatique d'une table - Amazon DynamoDB

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.

Évaluation des paramètres de mise à l'échelle automatique d'une table

Cette section explique comment évaluer les paramètres de mise à l'échelle automatique de vos tables DynamoDB. Le dimensionnement automatique d'Amazon DynamoDB est une fonctionnalité qui gère le débit des tables et de l'GSIindex secondaire global () en fonction du trafic de votre application et de votre indicateur d'utilisation cible. Cela garantit vos tables ou GSIs disposera de la capacité requise pour vos modèles d'application.

Le AWS le service Auto Scaling surveillera l'utilisation actuelle de votre table et la comparera à la valeur d'utilisation cible :TargetValue. Il vous indique si vous devez augmenter ou diminuer la capacité allouée.

Examen de vos paramètres de mise à l'échelle automatique

Pour définir la valeur correcte correspondant à l'utilisation cible, ainsi que l'étape initiale et les valeurs finales, vous devez faire appel à l'équipe des opérations. Cela vous permet de définir correctement les valeurs en fonction de l'utilisation historique de l'application, qui seront utilisées pour déclencher le AWS politiques de mise à l'échelle automatique. La cible d'utilisation désigne le pourcentage de votre capacité totale qui doit être atteint pendant une période donnée avant que les règles de mise à l'échelle automatique ne s'appliquent.

Lorsque vous définissez une cible d'utilisation élevée (d'environ 90 %), le trafic doit dépasser 90 % pendant un certain temps, avant le démarrage de la mise à l'échelle automatique. Il est préférable de ne pas utiliser une cible d'utilisation élevée, sauf si votre application est très constante et ne fait l'objet d'aucun pic de trafic.

Lorsque vous définissez une cible d'utilisation très faible (inférieure à 50 %), votre application doit atteindre 50 % de la capacité allouée avant de déclencher une politique de mise à l'échelle automatique. À moins que le trafic de vos applications n'augmente à un rythme très soutenu, cela se traduit généralement par une capacité inutilisée et un gaspillage de ressources.

Comment identifier les tables présentant une faible cible d'utilisation (<= 50 %)

Vous pouvez utiliser l'un ou l'autre AWS CLI or AWS Management Console pour surveiller et identifier les TargetValues politiques de dimensionnement automatique dans vos ressources DynamoDB :

AWS CLI
  1. Pour afficher la liste complète des ressources, exécutez la commande suivante :

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb

    Cette commande renvoie la liste complète des politiques de mise à l'échelle automatique émises pour n'importe quelle ressource DynamoDB. Pour récupérer uniquement les ressources d'une table particulière, vous pouvez ajouter le –resource-id parameter. Par exemple :

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb --resource-id "table/<table-name>”
  2. Renvoie uniquement les politiques de mise à l'échelle automatique pour une donnée en GSI exécutant la commande suivante

    aws application-autoscaling describe-scaling-policies --service-namespace dynamodb --resource-id "table/<table-name>/index/<gsi-name>”

    Les valeurs qui nous intéressent pour les politiques de mise à l'échelle automatique sont mises en évidence ci-dessous. Nous voulons nous assurer que la valeur cible est supérieure à 50 % afin d'éviter tout surprovisionnement. Le résultat doit ressembler à ce qui suit :

    { "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/dynamodb/table/<table-name>/index/<index-name>:policyName/$<full-gsi-name>-scaling-policy", "PolicyName": $<full-gsi-name>”, "ServiceNamespace": "dynamodb", "ResourceId": "table/<table-name>/index/<index-name>", "ScalableDimension": "dynamodb:index:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:48.641000+10:00" }, { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/dynamodb/table/<table-name>/index/<index-name>:policyName/$<full-gsi-name>-scaling-policy", "PolicyName":$<full-gsi-name>”, "ServiceNamespace": "dynamodb", "ResourceId": "table/<table-name>/index/<index-name>", "ScalableDimension": "dynamodb:index:ReadCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBReadCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:47.820000+10:00" } ] }
AWS Management Console
  1. Connectez-vous au AWS Management Console et ouvrez la console DynamoDB à l'adresse. https://console.aws.amazon.com/dynamodb/

    Sélectionnez une option appropriée Région AWS si nécessaire.

  2. Dans le volet de navigation, sélectionnez Tables. Sur la page Tables, sélectionnez le nom de la table.

  3. Sur la page Détails du tableau, choisissez Paramètres supplémentaires, puis passez en revue les paramètres de mise à l'échelle automatique de votre tableau.

    Page détaillée de la table DynamoDB avec paramètres de mise à l'échelle automatique. Passez en revue l'utilisation de la capacité allouée et ajustez-la selon les besoins.

    Pour les index, développez la section Capacité de l'indice pour consulter les paramètres de mise à l'échelle automatique de l'indice.

    Section de capacité d'index de la console DynamoDB. Vérifiez et gérez les paramètres de mise à l'échelle automatique des index.

Si vos valeurs d'utilisation cibles sont inférieures ou égales à 50 %, explorez les métriques d'utilisation de vos tables pour déterminer si elles sont sous-provisionnées ou surprovisionnées.

Comment gérer les charges de travail liées aux variations saisonnières

Envisagez le scénario suivant : votre application fonctionne en dessous d'une valeur moyenne minimale la plupart du temps, mais la cible d'utilisation est faible. Votre application peut donc réagir rapidement aux événements qui se produisent à certaines heures de la journée et vous disposez d'une capacité suffisante pour éviter les ralentissements. Ce scénario est courant avec les applications qui sont très actives pendant les heures normales de bureau (de 9 h à 17 h), mais qui fonctionnent ensuite à un niveau de base en dehors de cette plage horaire. Comme certains utilisateurs commencent à se connecter avant 9 h, l'application utilise cette limite inférieure pour atteindre rapidement la capacité requise aux heures de pointe.

Ce scénario peut se présenter comme suit :

  • Entre 17 h et 9 h, les unités ConsumedWriteCapacity restent entre 90 et 100.

  • Les utilisateurs commencent à se connecter à l'application avant 9 heures du matin et les unités de capacité augmentent considérablement (la valeur maximale que vous avez vue est de 1500WCU)

  • En moyenne, l'utilisation de vos applications varie entre 800 et 1 200 pendant les heures de travail.

Si le scénario précédent s'applique à votre cas de figure, envisagez d'utiliser une mise à l'échelle automatique planifiée. Une règle de mise à l'échelle automatique de votre application pourra toujours être configurée au niveau de votre table, mais avec une utilisation cible moins agressive qui n'allouera la capacité supplémentaire qu'aux intervalles spécifiques dont vous avez besoin.

Vous pouvez utiliser … AWS CLI pour exécuter les étapes suivantes afin de créer une règle de dimensionnement automatique planifiée qui s'exécutera en fonction de l'heure du jour et du jour de la semaine.

  1. Enregistrez votre table DynamoDB GSI ou en tant que cible évolutive avec Application Auto Scaling. Une cible évolutive est une ressource qui Application Auto Scaling peut évoluer vers l'extérieur ou vers l'intérieur.

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --min-capacity 90 \ --max-capacity 1500
  2. Configurez les actions planifiées en fonction de vos besoins.

    Deux règles sont nécessaires pour couvrir ce scénario : l'une pour augmenter la capacité et l'autre pour la réduire. Voici la première règle pour augmenter la capacité de l'action planifiée :

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-8-5-scheduled-action \ --scalable-target-action MinCapacity=800,MaxCapacity=1500 \ --schedule "cron(45 8 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"

    Voici la deuxième règle pour réduire la capacité de l'action planifiée :

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-5-8-scheduled-down-action \ --scalable-target-action MinCapacity=90,MaxCapacity=1500 \ --schedule "cron(15 17 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"
  3. Exécutez la commande suivante pour confirmer que les deux règles ont été activées :

    aws application-autoscaling describe-scheduled-actions --service-namespace dynamodb

    Vous devriez obtenir le résultat suivant :

    { "ScheduledActions": [ { "ScheduledActionName": "my-5-8-scheduled-down-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-5-8-scheduled-down-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(15 17 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 90, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:30:25.100000+10:00" }, { "ScheduledActionName": "my-8-5-scheduled-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-8-5-scheduled-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(45 8 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 800, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:28:57.816000+10:00" } ] }

L'image suivante montre un exemple de charge de travail qui maintient en permanence une cible d'utilisation de 70 %. Notez que les règles de mise à l'échelle automatique s'appliquent toujours et que le débit n'est pas réduit.

Le débit d'une table atteint 70 % d'utilisation cible, même si les règles de dimensionnement automatique ajustent la capacité.

En zoomant, nous pouvons constater qu'un pic dans l'application a déclenché le seuil de 70 %, forçant ainsi la mise à l'échelle automatique à démarrer et à fournir la capacité supplémentaire requise pour la table. L'action de mise à l'échelle automatique planifiée affecte les valeurs maximales et minimales. C'est à vous qu'il revient de les configurer.

Augmentation du débit d'une table DynamoDB qui déclenche le dimensionnement automatique pour fournir la capacité supplémentaire requise.
Configuration de mise à l'échelle automatique de la table DynamoDB : utilisation cible et valeurs de capacité minimale et maximale.

Comment gérer les pics de charge de travail imprévisibles

Dans ce scénario, l'application utilise une cible d'utilisation très faible, car l'évolution de son trafic n'est pas encore connue et vous souhaitez vous assurer que votre charge de travail n'est pas limitée.

Vous pouvez ici envisager d'utiliser le mode de capacité à la demande. Les tables à la demande sont idéales pour les charges de travail exigeantes pour lesquelles vous ne connaissez pas les tendances de trafic. Avec le mode de capacité à la demande, vous payez à la demande les lectures et écritures de données que votre application effectue sur vos tables. Vous n'avez pas besoin de spécifier le débit de lecture et d'écriture prévu pour votre application, car DynamoDB s'adapte instantanément à vos charges de travail à mesure qu'elles augmentent ou diminuent.

Comment gérer les charges de travail avec des applications liées

Dans ce scénario, l'application dépend d'autres systèmes, tels que les scénarios de traitement par lots dans lesquels vous pouvez avoir de forts pics de trafic en fonction des événements dans la logique de l'application.

Envisagez de développer une logique de mise à l'échelle automatique personnalisée qui réagit aux événements où vous pouvez augmenter la capacité de la table et TargetValues en fonction de vos besoins spécifiques. Vous pourriez bénéficier de Amazon EventBridge et utilisez une combinaison de AWS des services tels que Lambda et Step Functions pour répondre aux besoins spécifiques de vos applications.