# ASG: ASG sem usar Spot

> Esta regra identifica Auto Scaling Groups (ASGs) que **não utilizam instâncias Spot** em sua configuração de capacidade.
>
> O objetivo é detectar oportunidades de redução de custo através da adoção de instâncias Spot em workloads tolerantes a interrupção.

***

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

Instâncias On-Demand possuem custo significativamente maior quando comparadas a instâncias Spot, que podem gerar:

* Redução de até 70% a 90% no custo computacional
* Melhor eficiência financeira em cargas elásticas
* Otimização estrutural de clusters

ASGs que operam 100% com capacidade On-Demand podem estar perdendo oportunidade de economia relevante.

Esta regra foca exclusivamente na estratégia de compra da capacidade.

***

**Detalhamento técnico da regra**

A regra realiza varredura regional dos Auto Scaling Groups e avalia sua configuração de instâncias.

***

**Como a regra é executada**

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

   ```
   autoscaling:DescribeAutoScalingGroups
   ```
3. Aplica filtros de tag (inclusão/exclusão).
4. Para cada ASG:
   * Verifica se possui `MixedInstancesPolicy`.
   * Avalia o campo:

     ```
     InstancesDistribution.OnDemandPercentageAboveBaseCapacity
     ```
5. Se o valor for `100`, significa que está operando 100% On-Demand.
6. ASGs nessas condições são sinalizados.

***

**Lógica aplicada**

Um Auto Scaling Group será sinalizado quando:

```
MixedInstancesPolicy existe
E
OnDemandPercentageAboveBaseCapacity = 100
```

Ou seja:

```
Capacidade 100% On-Demand
Sem uso de Spot
```

***

**Campos analisados**

Auto Scaling Group:

* `AutoScalingGroupName`
* `MinSize`
* `MaxSize`
* `DesiredCapacity`
* `LaunchConfigurationName`
* `Instances`
* `MixedInstancesPolicy`
* `Tags`
* Região

Campo crítico:

* `InstancesDistribution.OnDemandPercentageAboveBaseCapacity`

***

**Parâmetros considerados na busca**

API utilizada:

* `autoscaling:DescribeAutoScalingGroups`

Não há análise de métricas de CPU ou uso real.

***

**Período Avaliado (Filtro Temporal)**

Período Avaliado: 15 dias

Padrão configurado é que identifique os grupos de escalonamento automático que não usam instâncias spot, dentro de um período de 15 dias.

> 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**

A economia estimada considera a adoção parcial de instâncias Spot no ASG.

***

**Fórmula Conceitual**

Considerando adoção de 50% de capacidade Spot:

```
Savings ≈ Custo On-Demand × percentual_substituído × desconto_spot_médio
```

Modelo simplificado aplicado no Billing:

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

O percentual depende da estratégia de mistura adotada.

***

**Campo de custo utilizado**

No Billing AWS:

* Service: AmazonEC2
* Line Item Type: Usage
* Usage Types:
  * BoxUsage
* Campo financeiro considerado:
  * `lineitem/unblendedcost`

***

**Exemplo aplicado ao Billing**

Cenário:

* ASG com 20 instâncias m5.large
* Custo mensal total: $40.000
* Estratégia proposta:
  * 60% Spot
  * 40% On-Demand
* Desconto médio Spot: 70%

Estimativa simplificada:

```
Savings aproximado ≈ $16.800/mês
```

Savings anual:

```
16.800 × 12 = $201.600
```

***

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

* Validar se a aplicação é tolerante a interrupção.
* Utilizar múltiplos tipos de instância para aumentar disponibilidade Spot.
* Definir estratégia balanceada entre On-Demand e Spot.
* Monitorar taxa de interrupção.
* Implementar Auto Scaling resiliente.

Possíveis exceções:

* Sistemas críticos sem tolerância a interrupção.
* Aplicações com estado local.
* Workloads com SLA extremamente rigoroso.

Recomenda-se iniciar com porcentagem parcial de Spot e evoluir gradualmente.
