# EC2: Migração de EC2 Intel para AMD

> Esta regra identifica instâncias **EC2 em execução (running)** que:
>
> * Não são Spot
> * Não são AMD
> * Não são Graviton
> * Não são Mac
>
> Ou seja, instâncias **Intel-based On-Demand**, potencialmente elegíveis para migração para arquiteturas **AWS Graviton (ARM)**, que oferecem melhor relação custo-performance.

***

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

Instâncias Intel costumam ter custo superior quando comparadas a equivalentes Graviton.

A migração para Graviton pode gerar:

* Redução direta de custo
* Melhor performance por dólar
* Redução de consumo energético

Impacto no negócio:

* Economia recorrente em compute
* Melhor eficiência operacional
* Alinhamento com estratégia de modernização

Classificação: **ECONOMIA + MODERNIZAÇÃO**

***

**Detalhamento técnico da regra**

A regra percorre todas as regiões AWS habilitadas na tenancy.

Para cada região:

1. Lista instâncias EC2 com estado:

   ```
   instance-state-name = running
   ```
2. Exclui instâncias:
   * `InstanceLifecycle = spot`
   * Tipo contendo `"mac"`
   * Família contendo `"a"` (AMD)
   * Família contendo `"g"` (Graviton)

Restam apenas instâncias Intel tradicionais.

***

**Como a regra é executada**

1. Autenticação na conta AWS por região.
2. Execução da API:

   ```
   ec2:DescribeInstances
   ```

   com filtro:

   ```
   running
   ```
3. Aplicação de filtros de tag (inclusão/exclusão).
4. Validação do tipo da instância:
   * Remove Spot
   * Remove Mac
   * Remove AMD
   * Remove Graviton
5. Instâncias restantes são sinalizadas.

***

**Lógica aplicada**

Uma instância será sinalizada quando:

```
State = running
AND InstanceLifecycle != spot
AND InstanceType não contém "mac"
AND Família não contém "a" (AMD)
AND Família não contém "g" (Graviton)
```

Exemplos sinalizados:

* m5.xlarge
* c5.2xlarge
* r5.large

Exemplos ignorados:

* m6g.large (Graviton)
* m5a.large (AMD)
* mac1.metal
* Instâncias Spot

***

**Campos analisados**

Instância EC2:

* `InstanceId`
* `InstanceType`
* `InstanceLifecycle`
* `Architecture`
* `LaunchTime`
* `Tags`
* `Region`

***

**Parâmetros considerados na busca**

API utilizada:

```
ec2:DescribeInstances
```

Filtro:

```
instance-state-name = running
```

Sem filtro temporal.

***

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

Período Avaliado: 15 dias

Padrão configura é que analisar instâncias do EC2 Intel qualificadas para migração para AMD, dentro do período de 15 dias. Não consideramos instâncias Spot na lista

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

***

**Savings**

A economia estimada considera o potencial de migração para instâncias Graviton equivalentes.

Seguindo o padrão aplicado às regras de modernização com percentual estimado:

**Fórmula Oficial de Savings**

```sql
sum("lineitem/unblendedcost") * 0.10
```

**Justificativa**

Estudos da AWS indicam que Graviton pode gerar economia média entre 10% e 20%.

A regra adota estimativa conservadora de:

```
10% de redução potencial
```

Campo do CUR utilizado:

```
lineitem/unblendedcost
```

***

**Exemplo de Impacto**

Cenário:

* 15 instâncias m5.xlarge
* Custo mensal total: $12.000

Savings estimado:

```
12.000 × 10% = $1.200/mês
```

***

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

Antes de migrar:

* Validar compatibilidade da aplicação com arquitetura ARM.
* Testar workload em ambiente de homologação.
* Avaliar dependências nativas.
* Verificar suporte de imagens Docker.
* Utilizar Auto Scaling para rollout gradual.

Exceções possíveis:

* Aplicações legadas não compatíveis com ARM
* Dependência de bibliotecas compiladas apenas para x86

Recomendação:

Priorizar workloads stateless e containerizados para migração inicial.
