Administración automática de la capacidad de rendimiento con la función Auto Scaling de DynamoDB
Muchas cargas de trabajo de base de datos son de naturaleza cíclica, mientras que otras son difíciles de predecir con antelación. Por ejemplo, tomemos una aplicación de redes sociales en la que la mayoría de los usuarios están activos en el horario diurno. La base de datos debe satisfacer los requisitos de la actividad diurna, pero no se requieren los mismos niveles de rendimiento por la noche. Otro ejemplo: tomemos una nueva aplicación de juegos para móviles cuya adopción está siendo inesperadamente rápida. Si el juego adquiere demasiada popularidad, podría superar los recursos disponibles en la base de datos, lo que daría lugar a un rendimiento lento y a clientes descontentos. Estos tipos de cargas de trabajo suelen requerir intervención manual para escalar los recursos de la base de datos en sentido ascendente o descendente en respuesta a las variaciones en los niveles de uso.
El escalado automático de Amazon DynamoDB usa el servicio Auto Scaling de aplicaciones de AWS para ajustar de manera dinámica y automática la capacidad de rendimiento aprovisionada en respuesta a los patrones de tráfico reales. Esto permite a una tabla o índice secundario global (GSI) incrementar su capacidad de lectura y escritura aprovisionada para abastecer incrementos repentinos del tráfico sin limitaciones. Cuando la carga de trabajo disminuye, el Auto Scaling de aplicaciones puede reducir el rendimiento para evitar que tenga que pagar por una capacidad aprovisionada que no se utiliza.
nota
Si usa la AWS Management Console para crear una tabla o un índice secundario global, la función Auto Scaling de DynamoDB se habilita de forma predeterminada. Puede modificar los ajustes de Auto Scaling en cualquier momento. Para obtener más información, consulte Uso de la AWS Management Console con la función Auto Scaling de DynamoDB.
Cuando elimina una tabla o una réplica de tabla global, los destinos escalables, las políticas de escalado o las alarmas de CloudWatch asociadas no se eliminan automáticamente con ella.
Con Auto Scaling de aplicaciones, puede crear una política de escalado para una tabla o un índice secundario global. La política de escalado especifica si desea escalar la capacidad de lectura o de escritura (o ambas), así como los ajustes de unidades de capacidad provisionada mínimas y máximas para la tabla o el índice.
La política de escalado contiene además un valor de objetivo de utilización, es decir, el porcentaje de rendimiento aprovisionado consumido en un momento dado. Auto Scaling de aplicaciones utiliza un algoritmo de seguimiento de destino para ajustar el rendimiento aprovisionado de la tabla (o el índice) al alza o a la baja en respuesta a las cargas de trabajo reales, de tal forma que la utilización de la capacidad real se mantenga en valores iguales o parecidos al objetivo de utilización.
Las salidas de DynamoDB consumieron el rendimiento aprovisionado durante periodos de un minuto. El escalado automático se activa cuando la capacidad consumida supera el objetivo de utilización configurado durante dos minutos consecutivos. Es posible que las alarmas de CloudWatch tarden unos minutos antes de desencadenar el escalado automático. Este retraso garantiza una evaluación precisa de las métricas de CloudWatch. Si los picos de rendimiento consumidos están separados por más de un minuto, es posible que no se desencadene el escalado automático. Del mismo modo, se puede producir un evento de reducción vertical cuando 15 puntos de datos consecutivos sean inferiores a la utilización objetivo. En cualquier caso, tras desencadenar el escalado automático, se invoca la API UpdateTable. La actualización de la capacidad aprovisionada para la tabla o el índice puede tardar unos minutos. Durante este periodo, cualquier solicitud que supere la capacidad aprovisionada previamente de las tablas se limita.
importante
No se puede ajustar el número de puntos de datos que se van a violar para desencadenar la alarma subyacente (aunque el número actual podría cambiar en el futuro).
Puede establecer los valores de objetivo de utilización de escalado automático entre un 20 y un 90 por ciento de la capacidad de lectura y escritura.
nota
Además de con las tablas, el escalado automático de DynamoDB es compatible con los índices secundarios globales. Cada índice secundario global tiene su propia capacidad de rendimiento aprovisionada que es independiente de la de su tabla base. Al crear una política de escalado para un índice secundario global, Auto Scaling de aplicaciones ajusta los ajustes de rendimiento aprovisionado del índice para asegurarse de que el uso real se mantenga en valores iguales o parecidos al porcentaje de utilización deseado.
Funcionamiento de la función Auto Scaling de DynamoDB
nota
Para comenzar rápidamente a usar la función Auto Scaling de DynamoDB, consulte Uso de la AWS Management Console con la función Auto Scaling de DynamoDB.
En el siguiente diagrama se ofrece información general sobre cómo el escalado automático de DynamoDB administra la capacidad de rendimiento de una tabla.
En los pasos siguientes se resume el proceso de Auto Scaling mostrado en el diagrama anterior:
-
Cree una política de Auto Scaling de aplicaciones para la tabla de DynamoDB.
-
DynamoDB publica métricas de capacidad consumida en Amazon CloudWatch.
-
Si la capacidad consumida de la tabla supera el objetivo de utilización (o no lo alcanza) durante un periodo de tiempo específico, Amazon CloudWatch activa una alarma. Puede ver la alarma en la consola y recibir notificaciones mediante Amazon Simple Notification Service (Amazon SNS).
-
La alarma de CloudWatch invoca a Auto Scaling de aplicaciones para evaluar la política de escalado.
-
Auto Scaling de aplicaciones emite una solicitud
UpdateTable
para ajustar el rendimiento aprovisionado de la tabla. -
DynamoDB procesa la solicitud
UpdateTable
y aumenta (o reduce) dinámicamente la capacidad de rendimiento aprovisionada de la tabla para que sea parecida al objetivo de utilización.
Para comprender cómo funciona el escalado automático de DynamoDB, supongamos que tenemos una tabla denominada ProductCatalog
. Es infrecuente que se realicen cargas masivas de datos en la tabla, de modo que presenta poca actividad de escritura. Sin embargo, sí experimenta una intensa actividad de lectura, que varía en cada momento. Gracias a las métricas de Amazon CloudWatch de ProductCatalog
que se monitorean, ha determinado que la tabla requiere 1 200 unidades de capacidad de lectura (para evitar que DynamoDB aplique una limitación controlada a las solicitudes de lectura durante los picos de actividad). También ha determinado que ProductCatalog
requiere como mínimo 150 unidades de capacidad de lectura, cuando el tráfico de lectura se encuentra en el punto más bajo. Para obtener más información sobre cómo prevenir la limitación, consulte Problemas de limitación para DynamoDB.
Dentro del rango de 150 a 1200 unidades de capacidad de lectura, decide que un objetivo de utilización del 70 por ciento sería apropiado para la tabla ProductCatalog
. El objetivo de utilización es la proporción de unidades de capacidad consumidas respecto de las unidades de capacidad provisionadas y se expresa como un porcentaje. Auto Scaling de aplicaciones utiliza el algoritmo de seguimiento de destino para asegurarse de que la capacidad de lectura provisionada de ProductCatalog
se ajuste de acuerdo con las necesidades, de tal forma que la utilización permanezca próxima al 70 %.
nota
La función de escalado automático de DynamoDB modifica la configuración de rendimiento aprovisionado solo cuando la carga de trabajo real se mantiene elevada o reducida durante un periodo sostenido de varios minutos. El algoritmo de seguimiento de destino de Auto Scaling de aplicaciones intenta mantener el objetivo de utilización en el valor elegido o en valores próximos a él a largo plazo.
Los picos de actividad repentinos y breves se atienden gracias a la capacidad de ampliación incorporada de la tabla. Para obtener más información, consulte Capacidad de ampliación.
Para habilitar el escalado automático de DynamoDB para la tabla ProductCatalog
, debe crear una política de escalado. La política especifica los elementos siguientes:
-
La tabla o el índice secundario global que desea administrar
-
Qué tipo de capacidad va a administrar (capacidad de lectura o capacidad de escritura)
-
Los límites superior e inferior de los ajustes de desempeño provisionado
-
Su objetivo de utilización
Al crear una política de escalado, Auto Scaling de aplicaciones crea automáticamente un par de alarmas de Amazon CloudWatch. Cada par representa los límites superior e inferior de la configuración de rendimiento provisionado. Estas alarmas de CloudWatch se activan cuando la utilización real de la tabla se desvía del objetivo de utilización durante un periodo de tiempo prolongado.
Cuando se activa una de las alarmas de CloudWatch, Amazon SNS envía una notificación (si se ha habilitado). A continuación, la alarma de CloudWatch invoca a Auto Scaling de aplicaciones que, a su vez, notifica a DynamoDB para que ajuste la capacidad aprovisionada de la tabla ProductCatalog
al alza o a la baja, según corresponda.
Durante un evento de escalado, la AWS Config se cobra por cada elemento de configuración registrado. Cuando se produce un evento de escalado, se crean cuatro alarmas de CloudWatch para cada evento de escalado automático de lectura y escritura: alarmas ProvisionedCapacity: ProvisionedCapacityLow, ProvisionedCapacityHigh y alarmas ConsumedCapacity: AlarmHigh, AlarmLow. Esto da como resultado un total de ocho alarmas. Por lo tanto, AWS Config registra ocho elementos de configuración para cada evento de escalado.
nota
También puede programar el escalado de DynamoDB para que se realice en determinados momentos. Descubra los pasos básicos aquí.
Notas de uso
Antes de comenzar a usar la función Auto Scaling de DynamoDB, debe tener en cuenta lo siguiente:
-
La función Auto Scaling de DynamoDB puede aumentar la capacidad de lectura o escritura tan a menudo como sea preciso, de acuerdo con la política de Auto Scaling. Todas las cuotas de DynamoDB siguen vigentes, tal como se describe en Cuotas de tabla, servicio y cuenta en Amazon DynamoDB.
-
La función Auto Scaling de DynamoDB no le impide modificar manualmente la configuración de rendimiento aprovisionado. Estos ajustes manuales no afectan a las alarmas de CloudWatch vigentes relacionadas con la función Auto Scaling de DynamoDB.
-
Si habilita la función Auto Scaling de DynamoDB en una tabla que tiene uno o varios índices secundarios globales, recomendamos encarecidamente aplicar también Auto Scaling de manera uniforme a esos índices. Esto contribuirá a garantizar un mejor rendimiento en las escrituras y lecturas de las tablas, y a evitar la limitación. Puede activar el escalado automático si selecciona Apply same settings to global secondary indexes (Aplicar la misma configuración a los índices secundarios globales) en la AWS Management Console. Para obtener más información, consulte Habilitación de la función Auto Scaling de DynamoDB en tablas existentes.
-
Cuando elimina una tabla o una réplica de tabla global, los destinos escalables, las políticas de escalado o las alarmas de CloudWatch asociadas no se eliminan automáticamente con ella.
-
Al crear un GSI para una tabla existente, la función Auto Scaling no está habilitada para el GSI. Tendrá que administrar manualmente la capacidad mientras se construye el GSI. Una vez que se complete el relleno del GSI y este alcance el estado activo, la función de escalado automático funcionará con normalidad.