Evaluación de los ajustes de Application Auto Scaling de su tabla - Amazon Keyspaces (para Apache Cassandra)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Evaluación de los ajustes de Application Auto Scaling de su tabla

En esta sección se proporciona información general sobre cómo evaluar la configuración de Application Auto Scaling de las tablas de Amazon Keyspaces. Amazon Keyspaces Application Auto Scaling es una característica que administra el rendimiento de las tablas en función del tráfico de su aplicación y de su métrica de utilización objetivo. Esto garantiza que sus tablas tengan la capacidad necesaria para sus patrones de aplicación.

El servicio Application Auto Scaling monitorea el uso actual de sus tablas y lo compara con el valor de utilización objetivo: TargetValue. Le notifica si ha llegado el momento de aumentar o reducir la capacidad asignada.

Comprensión de los ajustes de Application Auto Scaling

Definir el valor correcto para el uso objetivo, el paso inicial y los valores finales es una actividad que requiere la participación del equipo de operaciones. Esto le permite definir adecuadamente los valores basados en el uso histórico de la aplicación, que se utilizan para activar las políticas de Application Auto Scaling. El objetivo de utilización es el porcentaje de su capacidad total que debe alcanzarse durante un periodo de tiempo antes de que se apliquen las reglas de Application Auto Scaling.

Establecer un objetivo de utilización alta (un objetivo en torno al 90 %) significa que su tráfico necesita ser superior al 90 % durante un cierto periodo antes de que se active Application Auto Scaling. No debe usar un objetivo de alta utilización a menos que la aplicación sea muy constante y no reciba picos de tráfico.

Establecer una utilización muy baja (un objetivo inferior al 50 %) significa que su aplicación necesitaría alcanzar el 50 % de la capacidad aprovisionada antes de que se active una política de Application Auto Scaling. A menos que el tráfico de la aplicación crezca a un ritmo muy agresivo, esto normalmente se traduce en capacidad no utilizada y en recursos desperdiciados.

Cómo identificar tablas con una utilización objetivo baja (<=50 %)

Puede usar AWS CLI o AWS Management Console para monitorear e identificar las TargetValues políticas de Auto Scaling de su aplicación en sus recursos de Amazon Keyspaces.

nota

Cuando utilice tablas multirregión en el modo de capacidad aprovisionada con el escalado automático de Amazon Keyspaces, asegúrese de utilizar las operaciones de la API de Amazon Keyspaces para configurar el escalado automático. Las operaciones subyacentes de la API de Application Auto Scaling a las que Amazon Keyspaces llama en su nombre no tienen capacidades multirregionales. Para obtener más información, consulte Visualización de la capacidad aprovisionada y la configuración de escalado automático para una tabla multirregional en Amazon Keyspaces.

AWS CLI
  1. Devuelva la lista completa de recursos mediante la ejecución del siguiente comando:

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

    Este comando devuelve la lista completa de políticas de Application Auto Scaling emitidas para cualquier recurso de Amazon Keyspaces. Si solo desea recuperar los recursos de una tabla en particular, puede añadir –resource-id parameter. Por ejemplo:

    aws application-autoscaling describe-scaling-policies --service-namespace cassandra --resource-id "keyspace/keyspace-name/table/table-name
  2. Devuelva solo las políticas de escalado automático de una tabla en particular ejecutando el siguiente comando

    aws application-autoscaling describe-scaling-policies --service-namespace cassandra --resource-id "keyspace/keyspace-name/table/table-name

    A continuación se destacan los valores de las políticas de Application Auto Scaling. Debe asegurarse de que el valor objetivo sea superior al 50 % para evitar el sobreaprovisionamiento. Debería obtener un resultado similar al siguiente:

    { "ScalingPolicies": [ { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/keyspaces/table/table-name-scaling-policy", "PolicyName": $<full-gsi-name>”, "ServiceNamespace": "cassandra", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra:index:WriteCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "KeyspacesWriteCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:48.641000+10:00" }, { "PolicyARN": "arn:aws:autoscaling:<region>:<account-id>:scalingPolicy:<uuid>:resource/keyspaces/table/table-name/index/<index-name>:policyName/$<full-gsi-name>-scaling-policy", "PolicyName":$<full-table-name>”, "ServiceNamespace": "cassandra", "ResourceId": "keyspace/keyspace-name/table/table-name", "ScalableDimension": "cassandra:index:ReadCapacityUnits", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "CassandraReadCapacityUtilization" } }, "Alarms": [ ... ], "CreationTime": "2022-03-04T16:23:47.820000+10:00" } ] }
AWS Management Console
  1. Inicie sesión AWS Management Console y navegue hasta la página del CloudWatch servicio en Cómo empezar con. AWS Management Console Seleccione lo apropiado Región de AWS si es necesario.

  2. En la barra de navegación izquierda, seleccione Tablas. En la página Tablas, seleccione el Nombre de la tabla.

  3. En la página Detalles de la tabla, en la pestaña Capacidad, revise la configuración de Application Auto Scaling de su tabla.

Si los valores de utilización objetivo son inferiores o iguales al 50 %, debe analizar las métricas de uso de la tabla para ver si están subaprovisionadas o sobreaprovisionadas.

Cómo abordar las cargas de trabajo con variaciones estacionales

Considere el siguiente escenario: la aplicación funciona por debajo de un valor medio mínimo la mayor parte del tiempo, pero el objetivo de uso es bajo, por lo que la aplicación puede reaccionar rápidamente ante los eventos que se producen a determinadas horas del día y usted tiene suficiente capacidad y evita que se limite. Este escenario es habitual cuando una aplicación está muy ocupada durante el horario de oficina normal (de 9:00 a 17:00), pero que luego funciona a un nivel básico fuera del horario laboral. Dado que algunos usuarios comienzan a conectarse antes de las 09:00, la aplicación utiliza este umbral bajo para aumentar rápidamente su capacidad hasta alcanzar la capacidad requerida durante las horas punta.

Este escenario podría ser así:

  • Entre las 17:00 y las 9:00, las unidades de ConsumedWriteCapacityUnits permanecen entre 90 y 100

  • Los usuarios comienzan a conectarse a la aplicación antes de las 9:00 y la capacidad de las unidades aumenta considerablemente (el valor máximo que ha visto es de 1500 WCU)

  • Por término medio, el uso de la aplicación varía entre 800 y 1200 durante las horas de trabajo

Si el escenario anterior se aplica a su aplicación, considere el uso de escalado automático de aplicaciones programado, en el que su tabla podría seguir teniendo configurada una regla de Application Auto Scaling, pero con una utilización objetivo menos agresiva que solo aprovisione la capacidad extra en los intervalos específicos que usted requiera.

Puede usar el AWS CLI para ejecutar los siguientes pasos a fin de crear una regla de autoescalado programada que se ejecute en función de la hora del día y el día de la semana.

  1. Registre su tabla de Amazon Keyspaces como objetivo de escalado con Application Auto Scaling. Un destino escalable es un recurso que Application Auto Scaling puede escalar horizontalmente o escalar verticalmente.

    aws application-autoscaling register-scalable-target \ --service-namespace cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/table/table-name \ --min-capacity 90 \ --max-capacity 1500
  2. Configure acciones programadas según los requisitos.

    Necesita dos reglas para cubrir el escenario: una para escalar verticalmente y otra para reducir verticalmente. La primera regla para escalar verticalmente la acción programada se muestra en el siguiente ejemplo.

    aws application-autoscaling put-scheduled-action \ --service-namespace cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/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"

    La segunda regla para reducir verticalmente la acción programada se muestra en este ejemplo.

    aws application-autoscaling put-scheduled-action \ --service-namespace cassandra \ --scalable-dimension cassandra:table:WriteCapacityUnits \ --resource-id keyspace/keyspace-name/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. Ejecute el siguiente comando para validar que ambas reglas se han activado:

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

    Debería obtener un resultado como este:

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

La siguiente imagen muestra un ejemplo de carga de trabajo que siempre mantiene el objetivo de utilización del 70 %. Observe cómo las reglas de escalado automático siguen aplicándose y el rendimiento no se reduce.

Un gráfico que muestra el uso de escritura en unidades por segundo y compara la capacidad aprovisionada con la consumida durante un día.

Al ampliar el zoom, podemos ver que hubo un aumento en la aplicación que desencadenó el umbral de escalado automático del 70 %, lo que obligó a que el escalado automático entrara en vigor y proporcionara la capacidad adicional necesaria para la tabla. La acción de escalado automático programada afectará a los valores máximo y mínimo y es su responsabilidad configurarlos.

Una vista más detallada del gráfico que muestra el uso de escritura en unidades por segundo y compara la capacidad aprovisionada con la consumida durante un día, ampliando un momento específico.
Vista en detalle de un gráfico que muestra el uso de escritura en unidades por segundo y compara la capacidad aprovisionada con la consumida durante un día.

Cómo abordar cargas de trabajo con picos con patrones desconocidos

En este escenario, la aplicación utiliza un objetivo de utilización muy bajo, porque aún no conoce los patrones de la aplicación y quiere asegurarse de que su carga de trabajo no experimenta errores de rendimiento de baja capacidad.

Considere utilizar el modo de capacidad bajo demanda en su lugar. Las tablas bajo demanda son perfectas para cargas de trabajo con picos en los que no se conocen los patrones de tráfico. Con el modo de capacidad bajo demanda, usted paga por solicitud por las lecturas y escrituras de datos que la aplicación realiza en las tablas. No necesita especificar el rendimiento de lectura y escritura que espera de su aplicación, dado que Amazon Keyspaces se adapta instantáneamente a sus cargas de trabajo a medida que aumentan o disminuyen.

Cómo abordar las cargas de trabajo con aplicaciones enlazadas

En este escenario, la aplicación depende de otros sistemas, como los escenarios de procesamiento por lotes, en los que se pueden producir grandes picos de tráfico en función de los eventos de la lógica de la aplicación.

Considere la posibilidad de desarrollar una lógica de escalado automático de la aplicación personalizada que reaccione a esos eventos en los que puede aumentar la capacidad de la tabla y TargetValues en función de sus necesidades específicas. Podría beneficiarse de una combinación de AWS servicios como λ Amazon EventBridge y Step Functions y utilizarlos para responder a las necesidades específicas de sus aplicaciones.