

# PERF02-BP05 Usar a elasticidade dos recursos disponíveis
<a name="perf_select_compute_elasticity"></a>

 A nuvem fornece a flexibilidade de expandir ou reduzir seus recursos dinamicamente por meio de diversos mecanismos para atender a mudanças na demanda. Combinada com as métricas relacionadas à computação, uma workload pode responder automaticamente a mudanças e utilizar um conjunto ideal de recursos para atingir sua meta. 

 A combinação ideal entre oferta e demanda leva ao menor custo para uma carga de trabalho, mas você também precisa se planejar para que exista oferta suficiente a fim de permitir tempo de provisionamento e falhas de recursos individuais. A demanda pode ser fixa ou variável, exigindo métricas e automação para garantir que o gerenciamento não se torne um custo pesado e desproporcionalmente grande. 

 Na AWS, é possível usar várias abordagens diferentes para corresponder o suprimento com a demanda. O whitepaper Pilar Otimização de custos descreve como usar as seguintes abordagens de custo: 
+  Abordagem baseada em demanda 
+  Abordagem baseada em buffer 
+  Abordagem baseada em tempo 

 É necessário garantir que as implantações de carga de trabalho possam lidar com eventos de expansão e redução da escala. Crie cenários de teste para eventos de redução da escala a fim de garantir que a carga de trabalho se comporte conforme o esperado. 

 **Antipadrões comuns:** 
+  Reaja a alarmes aumentando a capacidade manualmente. 
+  Você deixa a capacidade aumentada após um evento de escalabilidade, em vez de reduzir novamente. 

 **Benefícios do estabelecimento desta prática recomendada:** A configuração e os testes da elasticidade da workload ajudam a fazer economia, manter as referências da performance e melhorar a confiabilidade à medida que o tráfego muda. A maior parte das instâncias que não são de produção deve ser interrompida quando não estiver em uso. Embora seja possível desligar manualmente instâncias não utilizadas, isso é impraticável em escalas maiores. Você também pode aproveitar a elasticidade baseada em volume, o que permite otimizar a performance e o custo, aumentando automaticamente o número de instâncias de computação durante picos de demanda e diminuindo a capacidade quando a demanda é reduzida. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Médio 

## Orientações para a implementação
<a name="implementation-guidance"></a>

 Aproveitar a elasticidade: a elasticidade corresponde ao suprimento de recursos que você tem em relação à demanda por esses recursos. Instâncias, contêineres e funções oferecem mecanismos para elasticidade, seja em combinação com a escalabilidade automática ou como um recurso do serviço. Use a elasticidade em sua arquitetura para garantir que haja capacidade suficiente para atender aos requisitos de performance em todas as escalas de uso. Certifique-se de que as métricas para aumentar ou reduzir recursos elásticos sejam validadas em relação ao tipo de carga de trabalho que está sendo implantada. Se você estiver implantando uma aplicação de transcodificação de vídeo, espera-se que a utilização da CPU seja de 100%, e essa não deve ser sua métrica principal. Como alternativa, você pode medir em relação ao comprimento da fila de trabalhos de transcodificação aguardando para escalar seus tipos de instância. É necessário garantir que as implantações de carga de trabalho possam lidar com eventos de expansão e redução da escala. Reduzir os componentes da carga de trabalho com segurança é tão essencial quanto aumentar a escala de recursos quando a demanda exige. Crie cenários de teste para eventos de redução da escala a fim de garantir que a carga de trabalho se comporte conforme o esperado. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [Computação em nuvem com a AWS](https://aws.amazon.com/products/compute/) 
+  [Tipos de instância do EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Contêineres do ECS: instâncias de contêineres do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Contêineres do EKS: nós de processamento do EKS](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+  [Funções: configuração de funções do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration) 
+  [Controle do estado do processo para sua instância do EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html) 

 **Vídeos relacionados:** 
+  [Amazon EC2 foundations (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0) 
+  [Better, faster, cheaper compute: Cost-optimizing Amazon EC2 (CMP202-R1) (Computação melhor, mais rápida e com custo mais baixo: Otimização de custos com o EC2 (CMP202-R1))](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [Deliver high performance ML inference with AWS Inferentia (CMP324-R1) (Entregar inferência de ML de alta performance com o AWS Inferentia (CMP324-R1))](https://www.youtube.com/watch?v=17r1EapAxpk) 
+  [Optimize performance and cost for your AWS compute (CMP323-R1) (Otimizar a performance e os custos de sua computação da AWS (CMP323-R1))](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system](https://www.youtube.com/watch?v=rUY-00yFlE4) 

 **Exemplos relacionados:** 
+  [Exemplos de grupos do Amazon EC2 Auto Scaling](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [Tutoriais do Amazon EFS](https://github.com/aws-samples/amazon-efs-tutorial) 