

# PERF08-BP01 성능이 가장 중요한 영역 파악
<a name="perf_tradeoffs_performance_critical_areas"></a>

 워크로드 성능을 개선하여 효율성을 높이고 고객 환경을 개선할 수 있는 영역을 파악합니다. 예를 들어, 많은 양의 고객 상호 작용이 수행되는 웹 사이트에서는 엣지 서비스를 사용하여 콘텐츠 전송 위치를 고객과 더 가까운 곳으로 이동하는 방법으로 성능을 개선할 수 있습니다. 

**원하는 결과:** 아키텍처, 트래픽 패턴 및 데이터 액세스 패턴을 이해하여 성능 효율성이 향상되고 지연 시간 및 처리 시간을 파악합니다. 워크로드가 증가하면서 고객 환경에 영향을 미칠 수 있는 잠재적 병목 현상을 파악합니다. 이러한 영역을 파악할 때는 성능 문제를 제거하기 위해 배포할 수 있는 솔루션을 살펴보는 것이 좋습니다.

 **일반적인 안티 패턴:** 
+  표준 컴퓨팅 지표, 즉 `CPUUtilization` 또는 메모리 압력이 성능 문제를 포착하기에 충분한 것으로 가정합니다. 
+  선택한 모니터링 소프트웨어에서 기록한 기본 지표만 사용합니다. 
+  문제가 발생한 경우에만 지표를 검토합니다. 

 **이 모범 사례 확립의 이점:** 성능의 중요 영역을 이해함으로써 워크로드 소유자가 KPI를 모니터링하고 큰 영향을 미치는 개선에 우선순위를 지정할 수 있습니다. 

 **이 모범 사례가 확립되지 않을 경우 노출되는 위험의 수준:** 높음 

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

트래픽 패턴, 지연 시간 및 중요한 성능 영역을 파악할 수 있는 엔드 투 엔드 추적을 설정합니다. 데이터 액세스 패턴을 모니터링하여 쿼리 속도가 느리거나 데이터 조각이 잘못되거나 잘못 분할된 데이터를 찾습니다. 로드 테스트 또는 모니터링을 사용하여 워크로드의 제한된 영역을 파악합니다.

## 구현 단계
<a name="w2aac19c11c11b5b6c17"></a>

1.  엔드 투 엔드 모니터링을 설정하여 모든 워크로드 구성 요소 및 지표를 캡처합니다. 
   +  실제 사용자 클라이언트 측 및 프런트 엔드 세션에서 애플리케이션 성능 지표를 캡처할 수 있도록 [Amazon CloudWatch RUM(실제 사용자 모니터링)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 을 사용합니다. 
   +  애플리케이션 레이어를 통해 트래픽을 추적하고 구성 요소와 종속 요소 간 지연 시간을 파악할 수 있도록 [AWS X-Ray](https://aws.amazon.com/xray/) 를 설정합니다. X-Ray 서비스 맵을 사용하여 워크로드 구성 요소 간 관계 및 지연 시간을 확인합니다. 
   +  데이터베이스 성능 지표를 확인하고 성능 개선을 파악할 수 있도록 [Amazon Relational Database Service 성능 개선 도우미](https://aws.amazon.com/rds/performance-insights/) 를 사용합니다. 
   +  데이터베이스 OS 성능 지표를 파악할 수 있도록 [Amazon RDS 향상된 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html) 을 사용합니다. 
   +  워크로드 구성 요소 및 서비스별 [CloudWatch 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 를 수집하고 어떤 지표가 성능 효율성에 영향을 미치는지 파악합니다. 
   +  애플리케이션 레이어를 통해 트래픽을 추적하고 구성 요소와 종속 요소 간 지연 시간을 파악할 수 있도록 [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 를 설정합니다. 

1.  지표를 생성하고 트래픽 패턴, 병목 현상 및 중요한 성능 영역을 파악하기 위한 테스트를 수행합니다. 
   +  애플리케이션 레이어를 통해 트래픽을 추적하고 구성 요소와 종속 요소 간 지연 시간을 파악할 수 있도록 [CloudWatch Synthetic Canary](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 를 설정하고 이때 `cron` 작업 또는 속도 표현식을 사용하여 시간에 따라 일관된 지표를 생성하도록 합니다. 
   +  최대 트래픽을 생성하거나 예상 증가율로 워크로드를 테스트할 수 있도록 [AWS 분산 로드 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 솔루션을 사용합니다. 

1.  지표 및 텔레메트리를 평가하여 중요한 성능 영역을 파악합니다. 팀과 함께 이러한 영역을 검토하여 병목 현상을 방지할 수 있는 모니터링 및 솔루션을 논의합니다. 

1.  성능 개선을 실험하고 데이터로 이러한 변경 사항을 측정합니다. 
   +  워크로드의 새로운 개선 및 워크로드에 영향을 미치는 성능을 테스트하도록 [CloudWatch Evidently](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently.html) 를 사용합니다. 

 **구현 계획의 작업 수준:** 이 모범 사례를 확립하려면 엔드 투 엔드 지표를 검토하고 현재 워크로드 성능을 인지해야 합니다. 엔드 투 엔드 모니터링을 설정하고 중요한 성능 영역을 파악하는 것은 중간 수준의 작업입니다. 

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

 **관련 문서:** 
+  [Amazon Builders’ Library](https://aws.amazon.com/builders-library) 
+  [X-Ray 설명서](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/) 
+  [CloudWatch RUM 및 X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-RUM.html) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [Amazon CloudWatch Synthetics 데모](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **관련 예시:** 
+  [Amazon CloudWatch Synthetics를 활용한 페이지 로드 시간 측정](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM 웹 클라이언트](https://github.com/aws-observability/aws-rum-web) 
+  [X-Ray SDK for Node.js](https://github.com/aws/aws-xray-sdk-node) 
+  [X-Ray SDK for Python](https://github.com/aws/aws-xray-sdk-python) 
+  [X-Ray SDK for Java](https://github.com/aws/aws-xray-sdk-java) 
+  [X-Ray SDK for .Net](https://github.com/aws/aws-xray-sdk-dotnet) 
+  [X-Ray SDK for Ruby](https://github.com/aws/aws-xray-sdk-ruby) 
+  [X-Ray 대몬(daemon)](https://github.com/aws/aws-xray-daemon) 
+  [AWS에서의 분산 로드 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 