Gerenciar a capacidade de throughput automaticamente com o Auto Scaling do DynamoDB - Amazon DynamoDB

Gerenciar a capacidade de throughput automaticamente com o Auto Scaling do DynamoDB

Muitas workloads de banco de dados são cíclicas por natureza, enquanto outras são difíceis de prever com antecedência. Por exemplo, considere um aplicativo de rede social na qual a maioria dos usuários está ativa durante o horário diurno. O banco de dados deve ser capaz de lidar com a atividade durante o dia, mas não há necessidade dos mesmos níveis de throughput à noite. Outro exemplo: considere um novo aplicativo de jogos para celular que está sendo adotado de maneira rápida e inesperada. Se o jogo se tornar muito comum, talvez ele exceda os recursos de banco de dados disponíveis, resultando em performance lenta e clientes insatisfeitos. Esses tipos de workloads muitas vezes exigem intervenção manual para dimensionar recursos de banco de dados, aumentando-os ou diminuindo-os em resposta a diferentes níveis de uso.

O Auto Scaling do Amazon DynamoDB usa o serviço AWS Application Auto Scaling para ajustar dinamicamente a capacidade de throughput provisionado em seu nome em resposta aos padrões de tráfego reais. Isso permite que uma tabela ou um índice secundário global aumente a capacidade provisionada de leitura e gravação para processar aumentos repentinos no tráfego, sem controle de utilização. Quando a workload diminuir, o Application Auto Scaling diminuirá o throughput para que você não precise pagar por uma capacidade provisionada não utilizada.

nota

Se você usar o AWS Management Console para criar uma tabela ou um índice secundário global, o Auto Scaling do DynamoDB será habilitado por padrão. É possível modificar as configurações de Auto Scaling a qualquer momento. Para ter mais informações, consulte Usar o AWS Management Console com o Auto Scaling do DynamoDB.

Ao remover manualmente uma tabela ou uma réplica de tabela global, você não remove automaticamente as metas escaláveis associadas, as políticas de escalabilidade nem os alarmes do CloudWatch.

Com o Application Auto Scaling, você cria um política de escalabilidade para uma tabela ou um índice secundário global. A política de escalabilidade especifica se você deseja dimensionar a capacidade de leitura ou a capacidade de gravação (ou ambas), bem como as configurações mínimas e máximas de unidades de capacidade provisionadas para a tabela ou o índice.

A política de escalabilidade também contém uma utilização pretendida: o percentual de throughput provisionado consumida em um determinado ponto no tempo. O Application Auto Scaling usa um algoritmo de rastreamento para ajustar o throughput provisionado da tabela (ou índice) para cima ou para baixo em resposta a workloads reais para que a utilização da capacidade real permaneça em ou perto de sua utilização pretendida.

O ajuste de escala automático pode ser acionado quando dois pontos de dados violam o valor de utilização de destino configurado em um período de um minuto. Portanto, o ajuste de escala automático pode ocorrer porque a capacidade consumida ficou acima da meta de utilização por dois minutos consistentes. Mas se os picos tiverem mais de um minuto de intervalo, o ajuste de escala automático poderá não ser acionado. Da mesma forma, um evento de redução de escala verticalmente pode ser acionado quando quinze pontos de dados consecutivos estão abaixo da meta de utilização. Nos dois casos, depois que o ajuste de escala automático é acionado, uma chamada UpdateTable é invocada. Depois, pode levar alguns minutos para atualizar a capacidade provisionada da tabela ou do índice. Durante esse período, todas as solicitações que excederem a capacidade provisionada anterior das tabelas terão controle de utilização.

Importante

Não é possível ajustar o número de pontos de dados a serem violados antes do acionamento do alarme subjacente (embora o número atual possa mudar no futuro).

É possível definir os valores de utilização do destino de Auto Scaling entre 20% e 90% como sua capacidade de gravação e leitura.

nota

Além de tabelas, o Auto Scaling do DynamoDB também oferece suporte a índices secundários globais. Cada índice secundário global tem sua própria capacidade de throughput provisionado separadamente daquela da tabela-base. Quando você cria uma política de escalabilidade para um índice secundário global, o Application Auto Scaling ajusta as configurações de throughput provisionado do índice para garantir que sua utilização real permaneça em ou perto da proporção de utilização desejada.

Como o Auto Scaling do DynamoDB funciona

nota

Para começar a trabalhar rapidamente com o Auto Scaling do DynamoDB, consulte Usar o AWS Management Console com o Auto Scaling do DynamoDB.

O diagrama a seguir fornece uma visão geral de alto nível de como o Auto Scaling do DynamoDB gerencia a capacidade de throughput de uma tabela.

As etapas a seguir resumem o processo de Auto Scaling, conforme mostrado no diagrama anterior:

  1. Você cria uma política do Application Auto Scaling para sua tabela do DynamoDB.

  2. O DynamoDB publica métricas de capacidade consumida no Amazon CloudWatch.

  3. Se a capacidade consumida da tabela exceder sua utilização pretendida (ou cair abaixo do valor desejado) por um período específico, o Amazon CloudWatch disparará um alarme. Você pode visualizar o alarme no console receber notificações por SMS usando o Amazon Simple Notification Service (Amazon SNS).

  4. O alarme do CloudWatch invoca o Application Auto Scaling para avaliar sua política de escalabilidade.

  5. O Application Auto Scaling emite uma solicitação UpdateTable para ajustar o throughput provisionado da sua tabela.

  6. O DynamoDB processa a solicitação UpdateTable, aumentando (ou diminuindo) dinamicamente a capacidade de throughput provisionado da tabela de forma que ela se aproxime da sua utilização pretendida.

Para entender como o Auto Scaling do DynamoDB funciona, suponha que você tenha uma tabela chamada ProductCatalog. A tabela é raramente carregada em massa com dados e, por isso, não provoca muita atividade de gravação. No entanto, ela é submetida a um alto grau de atividades de leitura, que variam ao longo do tempo. Ao monitorar as métricas do Amazon CloudWatch para o ProductCatalog, você determina que a tabela requer 1.200 unidades de capacidade de leitura (para evitar que o controle de utilização do DynamoDB leia solicitações durante picos de atividades). Você também determina que o ProductCatalog requer no mínimo 150 unidades de capacidade de leitura quando o tráfego de leitura está em seu ponto mais baixo. Para obter mais informações sobre como evitar o controle de utilização, consulte Problemas de controle de utilização de tabelas do DynamoDB usando o modo de capacidade provisionada.

No intervalo de 150 a 1.200 unidades de capacidade de leitura, você decide que uma utilização de destino de 70% seria apropriada para a tabela ProductCatalog. A utilização pretendida é a proporção entre unidades de capacidade consumidas e unidades de capacidade provisionadas, expressa como um percentual. O Application Auto Scaling usa seu algoritmo de rastreamento de capacidade pretendida para garantir que a capacidade de leitura provisionada de ProductCatalog seja ajustada conforme o necessário para que a utilização permaneça em ou perto de 70%.

nota

A autoescalabilidade do DynamoDB modifica as configurações de throughput provisionado somente quando a workload real permanece elevada ou baixa por um período constante de vários minutos. O algoritmo de rastreamento de alvo do Application Auto Scaling procura manter a utilização pretendida em ou perto do seu valor escolhido em longo prazo.

Picos de atividade súbitos de curta duração são acomodados pela capacidade de expansão interna da tabela. Para ter mais informações, consulte Capacidade de expansão.

Para habilitar o Auto Scaling do DynamoDB para a tabela ProductCatalog, você cria uma política de escalabilidade. A política especifica o seguinte:

  • A tabela ou o índice secundário global que você deseja gerenciar

  • Qual tipo de capacidade gerenciar (capacidade de leitura ou capacidade de gravação)

  • Os limites superior e inferior das configurações de throughput provisionado

  • Utilização de destino

Quando você criar uma política de escalabilidade, o Application Auto Scaling cria um par de alarmes do Amazon CloudWatch em seu nome. Cada par representa os limites superiores e inferiores das configurações de throughput provisionado. Esses alarmes do CloudWatch são disparados quando a utilização real da tabela se desvia da utilização pretendida por um período prolongado.

Quando um dos alarmes do CloudWatch for disparado, o Amazon SNS enviará uma notificação (caso você tenha habilitado esse recurso). O alarme do CloudWatch chama o Application Auto Scaling, que, por sua vez, notifica o DynamoDB para ajustar a capacidade provisionada da tabela ProductCatalog para cima ou para baixo conforme apropriado.

Durante um evento de ajuste de escala, o AWS Config é cobrado por item de configuração registrado. Quando ocorre um evento de ajuste de escala, quatro alarmes do CloudWatch são criados para cada evento de ajuste de escala automático de leitura e gravação: alarmes ProvisionedCapacity (ProvisionedCapacityLow e ProvisionedCapacityHigh) e alarmes ConsumedCapacity (AlarmHigh e AlarmLow). Isso soma um total de oito alarmes. Portanto, o AWS Config registra oito itens de configuração para cada evento de ajuste de escala.

nota

Também é possível programar o ajuste de escala do DynamoDB para que ele ocorra em determinados horários. Conheça as etapas básicas aqui.

Observações de uso

Antes de começar a usar o Auto Scaling do DynamoDB, você deve estar ciente do seguinte:

  • O Auto Scaling do DynamoDB pode aumentar a capacidade de leitura ou gravação sempre que necessário, de acordo com a sua política de Auto Scaling. Todas as cotas do DynamoDB permanecem em vigor, conforme descrito em Service quotas, conta e cotas de tabela no Amazon DynamoDB.

  • O Auto Scaling do DynamoDB não impede a modificação manual de configurações de throughput provisionado. Esses ajustes manuais não afetam alarmes existentes do CloudWatch que estejam relacionados ao Auto Scaling do DynamoDB.

  • Se você habilitar o Auto Scaling do DynamoDB para uma tabela que tenha um ou mais índices secundários globais, é altamente recomendável que você também aplique o Auto Scaling uniformemente e esses índices. Isso ajudará a garantir uma performance melhor para gravações e leituras de tabelas e ajudará a evitar o controle de utilização. É possível habilitar a autoescalabilidade selecionando Apply same settings to global secondary indexes (Aplicar as mesmas configurações a índices secundários globais) no AWS Management Console. Para ter mais informações, consulte Habilitar o Auto Scaling do DynamoDB em tabelas existentes.

  • Ao remover manualmente uma tabela ou uma réplica de tabela global, você não remove automaticamente as metas escaláveis associadas, as políticas de dimensionamento nem os alarmes do CloudWatch.

  • Ao criar um GSI para uma tabela existente, o Auto Scaling não está habilitado para GSI. Você terá que gerenciar manualmente a capacidade enquanto o GSI está sendo compilado. Quando o provisionamento no GSI for concluído e atingir o status ativo, a autoescalabilidade funcionará normalmente.