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.
Évaluez les paramètres de mise à l'échelle automatique de votre table DynamoDB
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 service de dimensionnement AWS automatique 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.
Rubriques
- Examen de vos paramètres de mise à l'échelle automatique
- Comment identifier les tables présentant une faible cible d'utilisation (<= 50 %)
- Comment gérer les charges de travail liées aux variations saisonnières
- Comment gérer les pics de charge de travail imprévisibles
- Comment gérer les charges de travail avec des applications liées
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 de manière appropriée les valeurs en fonction de l'historique d'utilisation de l'application, valeurs qui seront utilisées pour déclencher les politiques de mise à l'échelle automatique AWS . 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 le AWS CLI ou AWS Management Console pour surveiller et identifier les TargetValues
politiques de dimensionnement automatique dans vos ressources DynamoDB :
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 les étapes suivantes pour 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.
-
Enregistrez votre table DynamoDB GSI ou en tant que cible évolutive avec. Application Auto Scaling Une cible pouvant être mise à l'échelle avec est une ressource dont Application Auto Scaling peut augmenter ou réduire la capacité.
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
-
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"
-
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.
En zoomant, nous pouvons constater qu'il y a eu un pic dans l'application qui a déclenché le seuil de mise à l'échelle automatique de 70 %, forçant le redimensionnement 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.
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 Amazon EventBridge et utiliser une combinaison de AWS services tels que Lambda et Step Functions pour répondre aux besoins spécifiques de votre application.