

# Guia de dimensionamento de clusters do DAX
<a name="DAX.sizing-guide"></a>

Este guia fornece recomendações para ajudar você a escolher um tamanho de cluster e um tipo de nó do Amazon DynamoDB Accelerator (DAX) para sua aplicação. Essas instruções fornecem orientações ao longo das etapas de estimar o tráfego do DAX da sua aplicação, selecionar uma configuração de cluster e testá-la.

Se você já tem um cluster do DAX e deseja avaliar se ele tem o número e o tamanho apropriados de nós, consulte [Escalar um cluster do DAX](DAX.cluster-management.md#DAX.cluster-management.scaling).

**Topics**
+ [Visão geral](#DAX.sizing-guide.overview)
+ [Estimar tráfego](#DAX.sizing-guide.estimating-traffic)
+ [Testes de carga](#DAX.sizing-guide.load-testing)

## Visão geral
<a name="DAX.sizing-guide.overview"></a>

É importante dimensionar o cluster do DAX adequadamente para sua workload, quer você esteja criando um novo cluster ou mantendo um cluster existente. Conforme o tempo passa e a workload da sua aplicação muda, você deve revisar periodicamente suas decisões de escalabilidade para garantir que elas ainda sejam adequadas.

Normalmente o processo segue estas etapas:

1. **Estimativa do tráfego.** Nesta etapa, você fará previsões sobre o volume de tráfego que a aplicação enviará ao DAX, a natureza do tráfego (operações de leitura versus gravação) e a taxa de acertos do cache esperada.

1. **Testes de carga.** Nesta etapa, você cria um cluster e envia tráfego para ele espelhando suas estimativas da etapa anterior. Repita essa etapa até encontrar uma configuração de cluster adequada.

1. **Monitoramento da produção.** Enquanto a aplicação estiver usando o DAX na produção, você deverá [monitorar o cluster](DAX.Monitoring.md) para validar continuamente se ele ainda está dimensionado corretamente conforme a workload muda ao longo do tempo.

## Estimar tráfego
<a name="DAX.sizing-guide.estimating-traffic"></a>

Existem três fatores principais que caracterizam uma workload típica do DAX:
+ Taxa de acertos do cache
+ [Read capacity units](provisioned-capacity-mode.md#read-write-capacity-units) (RCUs – Unidades de capacidade de leitura) por segundo
+ [Write capacity units](provisioned-capacity-mode.md#read-write-capacity-units) (WCUs – Unidades de capacidade de gravação) por segundo

### Estimar taxa de acertos de cache
<a name="DAX.sizing-guide.estimating-traffic.hit-rate"></a>

Se você já tem um cluster do DAX, poderá usar as [métricas do Amazon CloudWatch](dax-metrics-dimensions-dax.md) `ItemCacheHits` e `ItemCacheMisses`para determinar a taxa de acertos do cache. A taxa de acertos do cache é igual a `ItemCacheHits` / (`ItemCacheHits` \$1 `ItemCacheMisses`). Se sua workload incluir operações `Query` ou `Scan`, você também deverá examinar as métricas `QueryCacheHits`, `QueryCacheMisses`, `ScanCacheHits` e `ScanCacheMisses`. As taxas de acertos do cache variam de acordo com a aplicação e são fortemente influenciadas pela configuração de vida útil (TTL) do cluster. As taxas de acertos típicas de aplicações que usam o DAX são variam de 85 a 95%.

### Estimar unidades de capacidade de leitura e gravação
<a name="DAX.sizing-guide.estimating-traffic.rcu-wcu"></a>

Se você já tiver tabelas do DynamoDB para sua aplicação, consulte as [métricas do CloudWatch](dax-metrics-dimensions-dax.md)`ConsumedReadCapacityUnits` e `ConsumedWriteCapacityUnits`. Use a estatística `Sum` e divida pelo número de segundos no período.

Se você também já tiver um cluster do DAX, lembre-se de que a métrica `ConsumedReadCapacityUnits` do DynamoDB contabiliza apenas erros do cache. Portanto, para ter uma ideia das unidades de capacidade de leitura por segundo tratadas pelo cluster do DAX, divida o número pela taxa de erro do cache (ou seja, 1 - taxa de acertos do cache).

Se você ainda não tiver uma tabela do DynamoDB, consulte a documentação sobre [unidades de capacidade de leitura e de gravação](provisioned-capacity-mode.md#read-write-capacity-units) para estimar o tráfego com base na taxa de solicitação prevista da aplicação, nos itens acessados por solicitação e no tamanho do item.

Ao fazer estimativas de tráfego, considere o crescimento futuro e os picos esperados e inesperados em seu planejamento a fim de garantir que o cluster tenha espaço suficiente para aumentos do tráfego.

## Testes de carga
<a name="DAX.sizing-guide.load-testing"></a>

A próxima etapa depois de estimar o tráfego é testar a configuração do cluster sob carga.

1. Para o teste inicial de carga, recomendamos que você comece com o tipo de nó `dax.r4.large`, a performance fixa de menor custo e o tipo de nó otimizado para memória.

1. Um cluster tolerante a falhas requer pelo menos três nós, distribuídos por três zonas de disponibilidade. Nesse caso, se uma zona de disponibilidade ficar indisponível, o número efetivo de zonas de disponibilidade será reduzido em um terço. Para o teste inicial de carga, recomendamos começar com um cluster de dois nós, que simula a falha de uma zona de disponibilidade em um cluster de três nós.

1. Promova tráfego contínuo (conforme estimado na etapa anterior) para o cluster de teste durante o teste de carga.

1. Monitore a performance do cluster durante o teste de carga.

O ideal é que o perfil do tráfego que você promove durante o teste de carga seja o mais semelhante possível ao tráfego real da aplicação. Isso inclui a distribuição de operações (p. ex., 70 por cento de `GetItem`, 25 por cento de `Query` e 5 por cento de `PutItem`), a taxa de solicitação para cada operação, o número de itens acessados por solicitação e a distribuição de tamanhos dos itens. Para obter uma taxa de acerto do cache semelhante à taxa de acerto de cache esperada da sua aplicação, preste muita atenção à distribuição de chaves no tráfego de teste.

**nota**  
Tenha cuidado ao carregar testes de tipos de nó T2 (`dax.t2.small` e `dax.t2.medium`). Os tipos de nó T2 fornecem [performance de CPU com capacidade de intermitência](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) que varia ao longo do tempo, dependendo do saldo de crédito da CPU do nó. Um cluster do DAX em execução em nós T2 pode parecer estar funcionando normalmente, mas se algum nó estiver com intermitência acima da [performance de referência](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html) da instância, o nó estará gastando seu saldo de créditos de CPU acumulados. Quando o saldo de crédito está baixo, [a performance é gradualmente reduzida](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-standard-mode.html) para o nível de desempenho de linha de base.

[Monitore o cluster do DAX](DAX.Monitoring.md) durante o teste de carga para determinar se o tipo de nó que você está usando para o teste de carga é o tipo de nó certo para você. Além disso, durante um teste de carga, você deve monitorar a taxa de solicitações e a taxa de acertos do cache para garantir que sua infraestrutura de teste esteja realmente direcionando a quantidade de tráfego planejada.

 Você deve prestar atenção ao consumo de bytes de rede do tipo de instância de cluster selecionado. Exceder a largura de banda de linha de base disponível para uma instância do Amazon EC2 é um indício de que o cluster pode não sustentar a workload da aplicação e precisa ser escalado. 

Se o teste de carga indicar que a configuração do cluster selecionada não pode sustentar a workload da aplicação, você deve [mudar para um tipo de nó maior](DAX.cluster-management.md#DAX.cluster-management.scaling.node-types), especialmente se perceber alta utilização da CPU no nó primário no cluster, taxas de remoção elevadas ou alta utilização de memória cache. Se as taxas de acerto forem consistentemente altas e a proporção do tráfego de leitura para gravação for alta, convém considerar a [adição de mais nós ao cluster](DAX.cluster-management.md#DAX.cluster-management.scaling.read-scaling). Consulte [Escalar um cluster do DAX](DAX.cluster-management.md#DAX.cluster-management.scaling) para obter orientações adicionais sobre quando usar um tipo de nó maior (escalabilidade vertical) ou adicionar mais nós (escalabilidade horizontal).

Você deve repetir o teste de carga depois de fazer alterações na configuração do cluster.