# DDB: DynamoDB OnDemand

> Esta regra identifica tabelas Amazon DynamoDB configuradas no modo de cobrança **On-Demand** (`PAY_PER_REQUEST`).
>
> O objetivo é identificar oportunidades de migração para o modo provisionado quando o padrão de consumo for previsível, possibilitando redução de custos.

***

**Contexto da regra e impacto no negócio**

O modo **On-Demand** é ideal para:

* Workloads imprevisíveis
* Aplicações com variação extrema de tráfego
* Ambientes novos ou experimentais

Entretanto, para cargas estáveis e previsíveis, o modo provisionado pode gerar:

* Custo significativamente menor
* Melhor previsibilidade orçamentária
* Otimização estrutural de capacidade

Essa regra permite avaliar tabelas que podem estar operando em um modelo financeiramente ineficiente.

***

**Detalhamento técnico da regra**

A regra realiza varredura regional e identifica tabelas cujo:

```
BillingModeSummary.BillingMode = PAY_PER_REQUEST
```

Após identificar a tabela, coleta métricas de consumo para fins informativos.

***

**Como a regra é executada**

1. Autentica na conta AWS por região.
2. Executa:

   ```
   dynamodb:list_tables
   ```
3. Para cada tabela:
   * Executa:

     ```
     dynamodb:describe_table
     ```
   * Verifica:

     ```
     BillingMode = PAY_PER_REQUEST
     ```
4. Coleta tags com:

   ```
   dynamodb:list_tags_of_resource
   ```
5. Coleta métricas dos últimos 30 dias no CloudWatch:
   * `ConsumedReadCapacityUnits`
   * `ConsumedWriteCapacityUnits`
   * Estatística: Average
   * Período: 86400 segundos (diário)
6. Calcula média de consumo de leitura e escrita.
7. Aplica filtros de tag (inclusão/exclusão).

***

**Lógica aplicada**

Uma tabela será sinalizada quando:

```
BillingMode = PAY_PER_REQUEST
```

Não há threshold de utilização mínimo.

A regra apenas identifica tabelas em modo On-Demand.

***

**Campos analisados**

DynamoDB Table:

* `TableName`
* `BillingModeSummary.BillingMode`
* `CreationDateTime`
* `TableArn`
* `Tags`
* Região

CloudWatch:

* `ConsumedReadCapacityUnits`
* `ConsumedWriteCapacityUnits`

***

**Parâmetros considerados na busca**

APIs utilizadas:

* `dynamodb:ListTables`
* `dynamodb:DescribeTable`
* `dynamodb:ListTagsOfResource`
* `cloudwatch:GetMetricStatistics`

Configuração fixa:

* Período de análise de métricas: 30 dias
* Estatística: Average
* Granularidade: 1 dia

***

**Período Avaliado (Filtro Temporal)**<br>

Período Avaliado: 15 dias

Padrão configurado é que as métricas analisadas correspondem aos últimos 15 dias, contados a partir da data da execução da regra.

> Esse parâmetro de avaliação pode ser ajustado nas configurações das regras.

***

**Intervalo de Análise**

Execução padrão: a cada 8 horas.

***

**Cálculo de Savings**&#x20;

Segue o ajuste **exclusivamente da seção de Cálculo de Savings** da regra DynamoDB On-Demand.

***

**Cálculo de Savings**

O savings estimado considera uma redução média de 10% ao migrar tabelas de **On-Demand (PAY\_PER\_REQUEST)** para o modo **Provisionado**, quando aplicável.

***

**Fórmula Oficial de Savings**

```
Savings = sum("lineitem/unblendedcost") * 0.1
```

***

**Campo de custo utilizado**

No Billing AWS:

* Service: AmazonDynamoDB
* Line Item Type: Usage
* Usage Types relacionados a:
  * ReadRequestUnits
  * WriteRequestUnits
* Campo financeiro considerado:
  * `lineitem/unblendedcost`

***

**Interpretação**

A regra assume potencial médio de economia de **10%** sobre o custo atual da tabela em modo On-Demand.

Exemplo:

Se o custo mensal atual é:

```
$20.000
```

Aplicando a fórmula:

```
Savings = 20.000 * 0.1
Savings = $2.000/mês
```

Novo custo estimado:

```
$18.000/mês
```

***

**Dicas de uso e boas práticas para o usuário**

* Avaliar variação de consumo antes de migrar.
* Verificar picos sazonais.
* Considerar Auto Scaling em modo provisionado.
* Priorizar tabelas com consumo estável.
* Validar impacto em workloads críticos.

Possíveis exceções:

* Aplicações com picos imprevisíveis.
* Sistemas com crescimento abrupto.
* Workloads com grande variabilidade diária.

Recomenda-se simulação antes da migração definitiva.
