

# PERF02-BP05 사용 가능한 리소스 탄력성 사용
<a name="perf_select_compute_elasticity"></a>

클라우드는 수요 변화에 맞춰 다양한 메커니즘을 통해 리소스를 동적으로 확장 및 축소할 수 있는 유연성을 제공합니다. 이 탄력성과 컴퓨팅 관련 지표를 함께 활용하면 워크로드는 필요한 리소스만 사용하도록 변화에 자동으로 대응할 수 있습니다.

 **일반적인 안티 패턴:** 
+  급격한 증가도 처리할 수 있도록 초과 프로비저닝합니다. 
+  용량을 수동으로 늘려 경보에 대응합니다. 
+  프로비저닝 시간을 고려하지 않고 용량을 늘립니다. 
+  조정 이벤트 후에 다시 축소하는 대신 증가된 용량을 그대로 둡니다. 
+  워크로드의 실제 요구 사항을 직접 반영하지 않는 지표를 모니터링합니다. 

 **이 모범 사례 확립의 이점:** 수요는 고정되거나 가변적일 수 있고 패턴을 따르거나 급증할 수 있습니다. 공급과 수요를 일치시키면 워크로드 비용이 최소화됩니다. 워크로드 탄력성을 모니터링, 테스트 및 구성하면 성능이 최적화되고 비용이 절감되며 사용량 요구 사항이 변경됨에 따라 안정성이 향상됩니다. 이에 대한 수동 접근이 가능하지만 더 큰 규모에서는 비실용적입니다. 자동화된 지표 기반 접근 방식은 리소스가 언제든지 요구 사항을 충족하도록 보장합니다. 

 **이 모범 사례를 따르지 않을 경우 노출 위험도:** 중간 

## 구현 가이드
<a name="implementation-guidance"></a>

지표 기반 자동화는 워크로드에 필요한 리소스 수요와 일치하는 리소스 공급을 목표로, 탄력성을 활용하는 데 사용해야 합니다. 예를 들어 [Amazon CloudWatch 지표를 사용하여 리소스를 모니터링](https://aws.amazon.com/startups/start-building/how-to-monitor-resources/)하거나 Auto Scaling 그룹에 Amazon CloudWatch 지표를 사용할 수 있습니다.

 컴퓨팅 관련 지표를 함께 활용하는 경우 워크로드가 변화에 자동으로 대응하여 목표를 달성하는 데 가장 적합한 리소스 세트를 활용할 수 있습니다. 또한 프로비저닝 시간 및 잠재적 리소스 장애에 대한 계획을 세워야 합니다. 

 인스턴스, 컨테이너 및 함수는 [Application Auto Scaling](https://aws.amazon.com/autoscaling/)의 형태로 또는 [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)과 함께 서비스의 기능으로 탄력성을 위한 메커니즘을 제공합니다. 아키텍처에서 탄력성을 사용하여 다양한 사용 규모에 대한 성능 요구 사항을 충족하기에 충분한 용량이 있는지 확인합니다. 

 배포하는 워크로드 유형에 대해 탄력적인 리소스를 스케일 업 또는 스케일 다운할 수 있는 지표를 검증합니다. 예를 들어 동영상 트랜스코딩 애플리케이션을 배포하는 경우 100%의 CPU 활용률이 예상되므로, 기본 지표로 사용해서는 안 됩니다. 또는 대기 중인 트랜스코딩 작업의 대기열 깊이를 기준으로 측정하여 인스턴스 유형을 조정할 수 있습니다. 

 워크로드 배포에서 스케일 업 및 스케일 다운 이벤트를 모두 처리해야 합니다. 워크로드 구성 요소를 안전하게 축소하는 것은 수요에 따라 리소스를 확장하는 것만큼 중요합니다. 

 워크로드가 예상대로 작동하는지 확인하기 위해 이벤트 크기 조정을 위한 테스트 시나리오를 만듭니다. 

 **구현 단계** 
+  기록 데이터를 활용하여 시간별 워크로드의 리소스 수요를 분석합니다. 다음과 같은 구체적인 질문을 합니다. 
  +  워크로드가 시간이 지남에 따라 일정하게 알려진 속도로 증가하고 있습니까? 
  +  계절에 따라 반복 가능한 패턴으로 워크로드가 증가하거나 감소합니까? 
  +  워크로드가 급증합니까? 급증을 예상하거나 예측할 수 있습니까? 
+  모니터링 서비스와 기록 데이터를 최대한 활용합니다. 
+  리소스에 태그를 지정하면 모니터링에 도움이 될 수 있습니다. 태그를 사용할 때 [태그 지정 모범 사례](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)를 참조합니다. [태그는 리소스를 관리, 식별 및 구성할 때도 도움이 될 수 있습니다.](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) 
+  AWS에서는 다양한 방식을 사용하여 수요와 공급을 일치시킬 수 있습니다. 비용 최적화 원칙 모범 사례([COST09-BP01 \~ COST09-03](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/manage-demand-and-supply-resources.html))는 다음과 같은 비용 접근 방식을 사용하는 방법을 설명합니다. 
  + [COST09-BP01 워크로드 수요 분석 수행](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_cost_analysis.html)
  + [COST09-BP02 수요 관리를 위한 버퍼 또는 스로틀 구현](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_buffer_throttle.html)
  + [COST09-BP03 동적으로 리소스 공급](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/cost_manage_demand_resources_dynamic.html)
+  스케일 다운 이벤트에 대한 테스트 시나리오를 생성하여 워크로드가 예상대로 작동하는지 확인합니다. 
+  대부분의 비 프로덕션 인스턴스는 사용되지 않을 때 중지되어야 합니다. 
+  Amazon Elastic Block Store(Amazon EBS)를 사용할 때 필요한 스토리지의 경우 [볼륨 기반 탄력성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.html)을 활용합니다. 
+  [Amazon Elastic Compute Cloud(Amazon EC2)](https://aws.amazon.com/ec2/)의 경우 수요 급증 시 컴퓨팅 인스턴스 수를 자동으로 늘리고 수요 감소 시 용량을 줄여 성능과 비용을 최적화할 수 있는 [Auto Scaling 그룹](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)을 사용하는 것이 좋습니다. 

## 리소스
<a name="resources"></a>

 **관련 모범 사례:** 
+  [PERF02-BP03 컴퓨팅 관련 지표 수집](perf_select_compute_collect_metrics.md) 
+  [PERF02-BP04 적정 크기 조정으로 필요한 구성 확인](perf_select_compute_right_sizing.md) 
+  [PERF02-BP06 지표를 기준으로 컴퓨팅 요구 사항의 지속적 평가](perf_select_compute_use_metrics.md) 

 **관련 문서:** 
+  [AWS 클라우드 컴퓨팅](https://aws.amazon.com/products/compute/) 
+  [Amazon EC2 인스턴스 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) 
+  [Amazon ECS 컨테이너: Amazon ECS 컨테이너 인스턴스](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html) 
+  [Amazon EKS 컨테이너: Amazon EKS 워커 노드](https://docs.aws.amazon.com/eks/latest/userguide/worker.html) 
+  [함수: Lambda 함수 구성](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-configuration) 

 **관련 동영상:** 
+  [Amazon EC2 foundations (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0)(Amazon EC2 기본 사항(CMP211-R2)) 
+  [Better, faster, cheaper compute: Cost-optimizing Amazon EC2(더 정확하고, 더 빠르고, 더 저렴한 컴퓨팅: Amazon EC2 비용 최적화)(CMP202-R1)](https://www.youtube.com/watch?v=_dvh4P2FVbw) 
+  [Deliver high performance ML inference with AWS Inferentia (CMP324-R1)](https://www.youtube.com/watch?v=17r1EapAxpk)(AWS Inferentia로 고성능 ML 추론 제공(CMP324-R1)) 
+  [Optimize performance and cost for your AWS compute (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg)(AWS 컴퓨팅의 성능 및 비용 최적화(CMP323-R1)) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system](https://www.youtube.com/watch?v=rUY-00yFlE4)(차세대 Amazon EC2 지원: Nitro 시스템 심층 분석) 

 **관련 예시:** 
+  [Amazon EC2 Auto Scaling 그룹 예](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) 
+  [Amazon EFS 자습서](https://github.com/aws-samples/amazon-efs-tutorial) 