

# 선택
<a name="a-selection"></a>

**Topics**
+ [PERF 1  최고의 성능을 제공하는 아키텍처를 선택하려면 어떻게 해야 합니까?](perf-01.md)
+ [PERF 2  컴퓨팅 솔루션을 어떻게 선택합니까?](perf-02.md)
+ [PERF 3  스토리지 솔루션을 어떻게 선택합니까?](perf-03.md)
+ [PERF 4  데이터베이스 솔루션을 어떻게 선택합니까?](perf-04.md)
+ [PERF 5  네트워킹 솔루션을 구성하려면 어떻게 해야 합니까?](perf-05.md)

# PERF 1  최고의 성능을 제공하는 아키텍처를 선택하려면 어떻게 해야 합니까?
<a name="perf-01"></a>

 워크로드에서 최적의 성능을 얻으려면 여러 접근 방식을 취해야 합니다. Well-Architected 시스템은 다수의 솔루션 및 기능을 사용하여 성능을 개선합니다. 

**Topics**
+ [PERF01-BP01 사용 가능한 서비스 및 리소스 파악](perf_performing_architecture_evaluate_resources.md)
+ [PERF01-BP02 아키텍처를 선택하는 프로세스 정의](perf_performing_architecture_process.md)
+ [PERF01-BP03 비용 요구 사항을 고려한 의사 결정](perf_performing_architecture_cost.md)
+ [PERF01-BP04 정책 또는 참조 아키텍처 사용](perf_performing_architecture_use_policies.md)
+ [PERF01-BP05 클라우드 공급자 또는 해당하는 파트너의 지침 사용](perf_performing_architecture_external_guidance.md)
+ [PERF01-BP06 기존 워크로드 벤치마크](perf_performing_architecture_benchmark.md)
+ [PERF01-BP07 워크로드 로드 테스트](perf_performing_architecture_load_test.md)

# PERF01-BP01 사용 가능한 서비스 및 리소스 파악
<a name="perf_performing_architecture_evaluate_resources"></a>

 클라우드에서 사용 가능한 방대한 서비스와 리소스에 대해 알아보고 이해합니다. 워크로드와 관련이 있는 서비스 및 구성 옵션을 확인하고, 성능을 최적화하는 방법을 파악합니다. 

 기존 워크로드를 평가하는 경우에는 워크로드에 사용되는 다양한 서비스 리소스의 인벤토리를 생성해야 합니다. 인벤토리는 관리형 서비스 및 최신 기술로 교체 가능한 구성 요소를 평가하는 데 도움이 됩니다. 

 **일반적인 안티 패턴:** 
+  클라우드를 코로케이션된 데이터 센터로 사용합니다. 
+  영구 스토리지를 필요로 하는 모든 것에 공유 스토리지를 사용합니다. 
+  자동 조정을 사용하지 않습니다. 
+  현재 표준에 가장 근접한 인스턴스 유형을 사용하지만 필요한 경우 더 큰 인스턴스 유형을 사용합니다. 
+  관리형 서비스로 사용할 수 있는 기술을 배포하고 관리합니다. 

 **이 모범 사례 수립의 이점:** 잘 모르는 서비스를 고려할 경우 인프라 비용과 서비스 유지 관리에 필요한 노력이 크게 줄어들 가능성이 있습니다. 새로운 서비스와 기능을 배포하여 출시 시간을 단축할 수 있습니다. 

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

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

 관련 서비스에 대한 워크로드 소프트웨어 및 아키텍처 인벤토리 생성: 워크로드의 인벤토리를 수집하고 자세히 알아볼 제품 범주를 결정합니다. 관리형 서비스로 대체하여 성능을 개선하고 운영 복잡성을 줄일 수 있는 워크로드 구성 요소를 식별합니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 솔루션 라이브러리](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP02 아키텍처를 선택하는 프로세스 정의
<a name="perf_performing_architecture_process"></a>

 클라우드에 대한 내부 경험과 지식을 사용하거나 게시된 사용 사례, 관련 설명서 또는 백서 등의 외부 리소스를 사용하여 리소스 및 서비스를 선택하는 프로세스를 정의합니다. 워크로드에 사용될 수 있는 서비스는 테스트하고 벤치마킹할 수 있도록 장려하는 프로세스를 정의해야 합니다. 

 아키텍처에 대한 중요한 사용자 사례를 작성할 때는 각 중요 사례를 얼마나 빠르게 실행했는지 명시하는 등 성능 요구 사항을 포함해야 합니다. 이러한 중요 사례에서는 이런 사례들이 요구 사항을 어떻게 만족시키는지 가시성을 확보하기 위한 추가적인 스크립트들이 구현되어야 합니다. 

 **일반적인 안티 패턴:** 
+  시간이 지나면 현재 아키텍처가 정적 아키텍처가 되고 업데이트되지 않는다고 가정합니다. 
+  시간이 지나면 타당한 이유 없이 아키텍처 변경을 도입합니다. 

 **이 모범 사례 정립의 이점:** 아키텍처 변경을 위한 프로세스를 정의하면 수집된 데이터를 사용하여 워크로드 설계에 지속적으로 영향을 줄 수 있습니다. 

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

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

 아키텍처 접근 방식 선택: 성능 요구 사항을 충족하는 아키텍처의 종류를 식별합니다. 전송 미디어(데스크톱, 웹, 모바일, IoT), 기존 요구 사항 및 통합 등의 제약 조건을 식별합니다. 리팩터링을 포함한 재사용 기회를 식별합니다. AWS 솔루션스 아키텍트, AWS 참조 아키텍처 및 AWS 파트너와 같은 다른 팀, 아키텍처 다이어그램 및 리소스를 참조하면 아키텍처 선택에 도움을 받을 수 있습니다. 

 성능 요구 사항 정의: 고객 경험을 바탕으로 가장 중요한 지표를 식별합니다. 각 지표에 대해 목표, 측정 방식 및 우선 순위를 정합니다. 고객 경험을 정의합니다. 고객이 요구하는 성능 경험 및 고객이 워크로드의 성능을 판단하는 근거를 문서화합니다. 중요한 사용자 사례에 대한 경험 문제를 우선적으로 처리합니다. 성능 요구 사항을 포함하고 스크립트로 작성된 사용자 여정을 구현하여 이러한 사례의 성능이 요구 사항에 부합하는지 확인합니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS Solutions Library](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP03 비용 요구 사항을 고려한 의사 결정
<a name="perf_performing_architecture_cost"></a>

 워크로드에는 작업에 대한 비용 요구 사항이 있는 경우가 많습니다. 내부 비용 제어 기능을 사용하여 예상되는 리소스 요구 사항에 적합한 유형 및 크기의 리소스를 선택하십시오. 

 관리형 데이터베이스, 인 메모리 캐시 및 ETL 서비스와 같은 완전관리형 서비스로 대체할 수 있는 워크로드 구성 요소를 결정하십시오. 운영 워크로드를 줄이면 비즈니스 결과에 리소스를 집중시킬 수 있습니다. 

 비용 요구 사항 모범 사례는 다음 백서에서 *비용 효율적인 리소스* 섹션을 참조하십시오. [비용 최적화 원칙 백서](https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html). 

 **일반적인 안티 패턴:** 
+  인스턴스 패밀리는 하나만 사용합니다. 
+  라이선스가 부여된 솔루션과 오픈 소스 솔루션을 비교 평가하지 않습니다. 
+  블록 스토리지만 사용합니다. 
+  관리형 서비스로 사용 가능한 EC2 인스턴스 및 Amazon EBS 또는 휘발성 볼륨에 공통 소프트웨어를 배포합니다. 

 **이 모범 사례 정립의 이점:** 선택할 때 비용을 고려하면 다른 투자가 가능해집니다. 

 **이 모범 사례를 정립되지 않을 경우 노출되는 위험의 수준:** 보통 

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

 워크로드 구성 요소를 최적화하여 비용 절감: 워크로드 구성 요소를 적정 크기로 조정하고 탄력성을 활성화하여 비용을 절감하고 구성 요소 효율성을 극대화합니다. 해당하는 경우 관리형 데이터베이스, 인메모리 캐시 및 역방향 프록시와 같은 관리형 서비스로 대체할 수 있는 워크로드 구성 요소를 결정합니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS Solutions Library](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [Optimize performance and cost for your AWS compute(CMP323-R1) ](https://www.youtube.com/watch?v=zt6jYJLK8sg&ref=wellarchitected) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [Compute Optimizer 및 메모리 활용 지원을 통해 적절한 규모 결정](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer 데모 코드](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 

# PERF01-BP04 정책 또는 참조 아키텍처 사용
<a name="perf_performing_architecture_use_policies"></a>

 내부 정책 및 기존 참조 아키텍처를 평가하고 분석을 사용하여 워크로드에 사용할 서비스 및 구성을 선택하면 성능 및 효율성을 극대화할 수 있습니다. 

 **일반적인 안티 패턴:** 
+  회사의 관리 오버헤드에 영향을 줄 수 있는 기술 선택의 광범위한 사용을 허용합니다. 

 **이 모범 사례 수립의 이점:** 아키텍처, 기술 및 공급업체 선택에 대한 정책을 수립하면 신속하게 의사 결정을 내릴 수 있습니다. 

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

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

 기존 정책 또는 참조 아키텍처를 사용하여 워크로드 배포: 서비스를 클라우드 배포에 통합한 다음 성능 테스트를 사용하여 성능 요구 사항을 계속해서 충족할 수 있는지 확인합니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 솔루션 라이브러리](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP05 클라우드 공급자 또는 해당하는 파트너의 지침 사용
<a name="perf_performing_architecture_external_guidance"></a>

 클라우드 회사 리소스(예: 솔루션스 아키텍트, 전문 서비스 또는 적절한 파트너)를 의사 결정의 지침으로 사용하십시오. 이러한 리소스는 최적의 성능을 위해 아키텍처를 검토하고 개선하는 데 도움이 될 수 있습니다. 

 추가 지침 또는 제품 정보가 필요한 경우 AWS에 문의하여 지원을 받으십시오. AWS 솔루션스 아키텍트 및 [AWS Professional Services](https://aws.amazon.com/professional-services/) 는 솔루션 구현에 대한 지침을 제공합니다. [AWS 파트너](https://aws.amazon.com/partners/) 는 비즈니스 민첩성 및 혁신을 달성하는 데 도움이 되는 AWS 전문 지식을 제공합니다. 

 **일반적인 안티 패턴:** 
+  AWS를 일반적인 데이터 센터 공급자로 사용합니다. 
+  AWS 서비스를 설계 의도와 다른 방식으로 사용합니다. 

 **이 모범 사례 수립의 이점:** 공급자 또는 파트너와 상담하면 의사 결정에서 확신을 얻을 수 있습니다. 

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

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

 AWS 리소스에 문의하여 지원 요청: AWS 솔루션스 아키텍트 및 Professional Services는 솔루션 구현에 대한 지침을 제공합니다. APN 파트너는 비즈니스 민첩성 및 혁신을 달성하는 데 도움이 되는 AWS 전문 지식을 제공합니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS Solutions Library](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 

# PERF01-BP06 기존 워크로드 벤치마크
<a name="perf_performing_architecture_benchmark"></a>

 기존 워크로드의 성능을 벤치마크하여 클라우드에서의 성능을 파악합니다. 이러한 벤치마크에서 수집된 데이터를 사용하면 아키텍처를 원활하게 결정할 수 있습니다. 

 통합 테스트 및 실제 사용자 모니터링과 함께 벤치마킹을 활용하여 워크로드 구성 요소의 성능에 대한 데이터를 생성합니다. 벤치마킹은 대개 로드 테스트보다 빠르게 설정할 수 있으며, 특정 구성 요소의 기술을 평가할 때 사용됩니다. 벤치마킹은 새 프로젝트를 시작할 때 로드 테스트를 위한 완전한 솔루션이 부족한 경우 종종 사용됩니다. 

 사용자 지정 벤치마크 테스트를 직접 작성할 수도 있고 [TPC-DS](http://www.tpc.org/tpcds/) 등의 업계 표준 테스트를 사용하여 데이터 웨어하우징 워크로드를 벤치마킹할 수도 있습니다. 산업 벤치마크는 여러 환경을 비교할 때 유용합니다. 사용자 지정 벤치마크는 아키텍처 내에서 수행될 것으로 예상되는 특정 작업 유형을 타게팅하는 데 유용합니다. 

 벤치마킹을 사용할 때는 유효한 결과를 얻을 수 있도록 테스트 환경을 사전 준비하는 것이 중요합니다. 동일한 벤치마크를 여러 번 실행하여 시간대별 차이를 파악하십시오. 

 벤치마크는 대개 로드 테스트보다 더 빠르게 실행되므로 배포 파이프라인 초기에 성능 편차 관련 피드백을 더 빠르게 제공하려는 경우에 사용할 수 있습니다. 구성 요소나 서비스의 큰 변화를 평가할 때 벤치마킹을 수행하면 변경 작업의 타당성을 빠르게 확인할 수 있습니다. 벤치마킹은 로드 테스트와 함께 사용해야 합니다. 로드 테스트에서는 프로덕션 환경의 워크로드 성능에 대한 정보를 얻을 수 있기 때문입니다. 

 **일반적인 안티 패턴:** 
+  워크로드 특성을 나타내지 않는 일반적인 벤치마크를 사용합니다. 
+  고객의 피드백과 관점을 유일한 벤치마크로 삼습니다. 

 **이 모범 사례 수립의 이점:** 현재 구현을 벤치마킹하면 성능 개선을 측정할 수 있습니다. 

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

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

 개발 중 성능 모니터링: 워크로드가 변경될 때의 성능을 파악할 수 있는 프로세스를 구현합니다. 

 전송 파이프라인에 통합: 전송 파이프라인에서 로드 테스트를 자동으로 실행합니다. 미리 정의된 KPI(핵심 성능 지표) 및 임계값을 기준으로 테스트 결과를 비교하여 성능 요구 사항이 계속 충족되는지 확인합니다. 

 사용자 여정 테스트: 로드 테스트에는 프로덕션 데이터의 통합 또는 제거 버전(민감한 정보 또는 식별 정보 제거)을 사용하십시오. 대규모 애플리케이션에서 재생 또는 사전 프로그래밍된 사용자 여정을 사용하여 전체 아키텍처를 실행합니다. 

 실제 사용자 모니터링: CloudWatch RUM을 사용하면 애플리케이션 성능에 대한 클라이언트 측 데이터를 수집하고 확인하는 데 도움이 됩니다. 이 데이터를 활용하여 실제 사용자 성능 벤치마크를 설정할 수 있습니다. 

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

 **관련 문서:** 
+  [AWS 아키텍처 센터](https://aws.amazon.com/architecture/) 
+  [AWS Partner Network](https://aws.amazon.com/partners/) 
+  [AWS 솔루션 라이브러리](https://aws.amazon.com/solutions/) 
+  [AWS 지식 센터](https://aws.amazon.com/premiumsupport/knowledge-center/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [This is my Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) 
+  [Amazon CloudWatch RUM을 통한 애플리케이션 최적화](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Amazon CloudWatch Synthetics 데모](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **관련 예시:** 
+  [AWS 샘플](https://github.com/aws-samples) 
+  [AWS SDK 예시](https://github.com/awsdocs/aws-doc-sdk-examples) 
+  [분산 로드 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 
+  [Amazon CloudWatch Synthetics를 활용한 페이지 로드 시간 측정](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM 웹 클라이언트](https://github.com/aws-observability/aws-rum-web) 

# PERF01-BP07 워크로드 로드 테스트
<a name="perf_performing_architecture_load_test"></a>

 다양한 리소스 유형 및 크기의 최신 워크로드 아키텍처를 클라우드에 배포합니다. 배포를 모니터링하여 병목 현상 또는 초과 용량을 식별하는 성능 지표를 캡처합니다. 이 성능 정보를 사용하여 아키텍처 및 리소스 선택을 설계하거나 개선할 수 있습니다. 

 로드 테스트에는 *실제* 워크로드가 사용되므로 프로덕션 환경에서 솔루션의 성능을 확인할 수 있습니다. 로드 테스트는 프로덕션 데이터의 통합 또는 제거 버전(민감한 정보 또는 식별 정보 제거)을 사용하여 실행되어야 합니다. 또한 대규모 워크로드를 통해 전체 아키텍처에서 진행되는 재생/사전 프로그래밍 방식의 사용자 작업 과정을 사용합니다. 전송 파이프라인의 일부로 로드 테스트를 자동으로 수행하고 결과를 미리 정의된 KPI 및 임계값과 비교합니다. 이렇게 하면 필요한 성능을 계속해서 달성할 수 있습니다. 

 **일반적인 안티 패턴:** 
+  전체 워크로드가 아니라 워크로드의 개별 부분에 대해 로드 테스트를 수행합니다. 
+  프로덕션 환경과 동일하지 않은 인프라에서 로드 테스트를 수행합니다. 
+  향후 문제가 발생할 수 있는 위치를 예측할 때 예상 로드에 대해서만 로드 테스트를 수행합니다. 
+  AWS Support에 알리지 않은 채로 로드 테스트를 수행하고, 서비스 거부 이벤트처럼 보여 테스트에 실패한 것으로 처리합니다. 

 **이 모범 사례 수립의 이점:** 로드 테스트에서 성능을 측정하면 로드 증가의 영향을 받게 될 위치를 알 수 있습니다. 이렇게 하면 워크로드에 영향을 미치기 전에 필요한 변경 사항을 예상할 수 있습니다. 

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

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

 로드 테스트를 수행하여 선택한 접근 방식 검증: 개념 증명에 대한 로드 테스트를 수행하여 성능 요구 사항이 충족되는지 확인합니다. AWS 서비스를 사용하면 프로덕션 규모의 환경을 실행하여 아키텍처를 테스트할 수 있습니다. 테스트 환경이 필요할 때에만 비용을 지불하므로 온프레미스 환경을 사용하는 데 드는 비용의 일부로 필요한 모든 테스트를 수행할 수 있습니다. 

 지표 모니터링: Amazon CloudWatch는 아키텍처의 리소스 전반에서 지표를 수집할 수 있습니다. 또한 사용자 지정 지표를 수집하고 게시하여 비즈니스 또는 파생 지표를 파악할 수도 있습니다. CloudWatch 또는 타사 솔루션을 사용하여 임계값 위반 시점을 나타내는 경보를 설정합니다. 

 대규모 데스트: 로드 테스트에는 실제 워크로드가 사용되므로 프로덕션 환경에서 솔루션의 성능을 확인할 수 있습니다. AWS 서비스를 사용하면 프로덕션 규모의 환경을 실행하여 아키텍처를 테스트할 수 있습니다. 테스트 환경이 필요할 때만 비용을 지불하므로 온프레미스 환경을 사용할 때보다 저렴한 비용으로 전체 테스트를 실행할 수 있습니다. AWS 클라우드를 활용하여 워크로드를 테스트하면 확장에 실패한 위치 또는 비선형 방식으로 확장되는 위치를 찾을 수 있습니다. 예를 들어, 스팟 인스턴스를 사용하여 저렴한 비용으로 로드를 생성하고 프로덕션 환경에서 발생하기 전에 병목 현상을 발견할 수 있습니다. 

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

 **관련 문서:** 
+  [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [CloudFormer를 사용한 AWS CloudFormation 템플릿 구축](https://aws.amazon.com/blogs/devops/building-aws-cloudformation-templates-using-cloudformer/) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [AWS에서의 분산 로드 테스트](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/welcome.html) 

 **관련 동영상:** 
+  [Amazon Builders’ Library 소개(DOP328)](https://www.youtube.com/watch?v=sKRdemSirDM) 
+  [Amazon CloudWatch RUM을 통한 애플리케이션 최적화](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Amazon CloudWatch Synthetics 데모](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **관련 예시:** 
+  [AWS에서의 분산 로드 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF 2  컴퓨팅 솔루션을 어떻게 선택합니까?
<a name="perf-02"></a>

워크로드에 가장 적합한 컴퓨팅 솔루션은 애플리케이션 설계, 사용량 패턴 및 구성 설정에 따라 다릅니다. 아키텍처는 다양한 구성 요소에 대해 서로 다른 컴퓨팅 솔루션을 사용하고 다양한 기능을 활성화하여 성능을 개선할 수 있습니다. 아키텍처에 대해 잘못된 컴퓨팅 솔루션을 선택하면 성능 효율성 저하로 이어질 수 있습니다.

**Topics**
+ [PERF02-BP01 사용 가능한 컴퓨팅 옵션 평가](perf_select_compute_evaluate_options.md)
+ [PERF02-BP02 사용 가능한 컴퓨팅 구성 옵션 파악](perf_select_compute_config_options.md)
+ [PERF02-BP03 컴퓨팅 관련 지표 수집](perf_select_compute_collect_metrics.md)
+ [PERF02-BP04 적정 크기 조정으로 필요한 구성 확인](perf_select_compute_right_sizing.md)
+ [PERF02-BP05 사용 가능한 리소스 탄력성 사용](perf_select_compute_elasticity.md)
+ [PERF02-BP06 지표를 기준으로 컴퓨팅 요구 사항의 지속적 평가](perf_select_compute_use_metrics.md)

# PERF02-BP01 사용 가능한 컴퓨팅 옵션 평가
<a name="perf_select_compute_evaluate_options"></a>

 워크로드가 인스턴스, 컨테이너 및 함수와 같은 다양한 컴퓨팅 옵션을 사용하여 어떻게 이점을 얻을 수 있는지 알아봅니다. 

 **원하는 결과:** 사용 가능한 모든 컴퓨팅 옵션을 이해하여 성능을 개선하고, 불필요한 인프라 비용을 절감하며, 워크로드를 유지하는 데 필요한 운영 노력을 줄일 기회를 파악할 수 있습니다. 또한 새로운 서비스와 기능을 배포할 때 출시 시간을 단축할 수 있습니다. 

 **일반적인 안티 패턴:** 
+  마이그레이션 후 워크로드에 온프레미스에서 사용하던 것과 동일한 컴퓨팅 솔루션을 활용합니다. 
+  클라우드 컴퓨팅 솔루션과 이러한 솔루션이 컴퓨팅 성능을 어떻게 개선할 수 있는지를 잘 모르고 있습니다. 
+  대체 컴퓨팅 솔루션이 워크로드 특성에 보다 적절한데도 확장 또는 성능 요구 사항을 충족하려고 기존 컴퓨팅 솔루션의 규모를 과도하게 키웁니다. 

 **이 모범 사례 정립의 이점:** 비즈니스 이해관계자와 엔지니어링 팀이 컴퓨팅 요구 사항을 파악하고 사용 가능한 컴퓨팅 솔루션을 평가하여 선택한 컴퓨팅 솔루션을 사용할 경우의 이점과 한계를 이해할 수 있습니다. 선택한 컴퓨팅 솔루션은 워크로드 성능 기준에 적합해야 합니다. 주요 기준에는 처리 요구 사항, 트래픽 패턴, 데이터 액세스 패턴, 확장 요구 사항 및 지연 시간 요구 사항이 포함됩니다. 

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

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

 워크로드에 도움이 되고 성능 요구 사항을 충족할 수 있는 가상화, 컨테이너화 및 관리 솔루션을 이해해야 합니다. 워크로드에는 여러 유형의 컴퓨팅 솔루션이 포함될 수 있는데 컴퓨팅 솔루션마다 특성이 다릅니다. 원하는 워크로드 규모와 컴퓨팅 요건에 따라 컴퓨팅 솔루션을 선택하고 구성하여 요구 사항을 충족할 수 있습니다. 클라우드 아키텍트는 인스턴스, 컨테이너 및 함수의 장점과 단점을 숙지해야 합니다. 다음 단계에서는 워크로드 특성 및 성능 요구 사항에 적합한 컴퓨팅 솔루션을 선택하는 방법에 대해 설명합니다. 


|  **유형**  |  **서버**  |  **컨테이너**  |  **함수**  | 
| --- | --- | --- | --- | 
|  AWS 서비스  |  Amazon Elastic Compute Cloud(Amazon EC2)  |  Amazon Elastic Container Service(Amazon ECS), Amazon Elastic Kubernetes Service(Amazon EKS)  |  AWS Lambda  | 
|  주요 특징  |  하드웨어 라이선스 요구 사항, 배치 옵션 및 컴퓨팅 지표를 기반으로 다양하게 선택할 수 있는 인스턴스 패밀리 전용 옵션이 있음  |  간편한 배포, 일관된 환경, EC2 인스턴스 위에서 실행, 확장성  |  짧은 런타임(15분 이하), 최대 메모리 및 CPU가 다른 서비스보다 높지 않음, 관리형 하드웨어 계층, 수백만 개의 동시 요청으로 확장 가능  | 
|  일반 사용 사례  |  리프트 앤드 시프트 마이그레이션, 단일 애플리케이션, 하이브리드 환경, 엔터프라이즈 애플리케이션  |  마이크로서비스, 하이브리드 환경  |  마이크로서비스, 이벤트 기반 애플리케이션  | 

 

 **구현 단계:** 

1.  섹션을 평가하여 컴퓨팅 솔루션이 상주해야 하는 위치를 선택합니다 [PERF05-BP06 네트워크 요구 사항에 따라 워크로드의 위치 선택](perf_select_network_location.md). 이 위치에서는 사용 가능한 컴퓨팅 솔루션 유형이 제한됩니다. 

1.  위치 및 애플리케이션 요구 사항에 맞는 컴퓨팅 솔루션 유형을 식별합니다.  

   1.  [https://aws.amazon.com/ec2/](https://aws.amazon.com/ec2/) 가상 서버 인스턴스는 폭넓은 패밀리와 크기로 제공됩니다. 이러한 인스턴스는 솔리드 스테이트 드라이브(SSD) 및 그래픽 처리 장치(GPU)를 비롯하여 다양한 기능을 제공합니다. EC2 인스턴스는 인스턴스를 선택할 때 가장 큰 유연성을 제공합니다. EC2 인스턴스를 시작할 때 지정한 인스턴스 유형에 따라 인스턴스의 하드웨어가 정해집니다. 각 인스턴스 유형은 서로 다른 컴퓨팅, 메모리 및 스토리지 기능을 제공합니다. 인스턴스 유형은 이러한 기능에 따라 인스턴스 패밀리로 그룹화됩니다. 대표적인 사용 사례로는 엔터프라이즈 애플리케이션 실행, 고성능 컴퓨팅(HPC), 기계 학습 애플리케이션 훈련 및 배포, 클라우드 네이티브 애플리케이션 실행 등이 있습니다. 

   1.  [https://aws.amazon.com/ecs/](https://aws.amazon.com/ecs/) 는 AWS Fargate를 사용하여 EC2 인스턴스 또는 서버리스 인스턴스의 클러스터에서 컨테이너를 자동으로 실행하고 관리할 수 있는 완전관리형 컨테이너 오케스트레이션 서비스입니다. Amazon ECS를 Amazon Route 53, Secrets Manager, AWS Identity and Access Management(IAM), Amazon CloudWatch 등 다른 서비스와 함께 사용할 수 있습니다. 애플리케이션이 컨테이너화되어 있고 엔지니어링 팀이 도커 컨테이너를 선호하는 경우 Amazon ECS를 사용하는 것이 좋습니다. 

   1.  [https://aws.amazon.com/eks/](https://aws.amazon.com/eks/) 는 완전관리형 Kubernetes 서비스입니다. AWS Fargate를 사용하여 EKS 클러스터를 실행하도록 선택하면 서버를 프로비저닝하고 관리할 필요가 없습니다. Amazon EKS는 Amazon CloudWatch, 오토 스케일링, AWS Identity and Access Management(IAM), Amazon Virtual Private Cloud(VPC)와 같은 AWS 서비스에 통합되어 관리하기가 편리합니다. 컨테이너를 사용할 때는 계산 지표를 활용하여 EC2 또는 AWS Fargate 인스턴스 유형을 선택하는 방식과 마찬가지로 계산 지표를 통해 워크로드에 가장 적합한 유형을 선택해야 합니다. 애플리케이션이 컨테이너화되어 있고 엔지니어링 팀이 도커 컨테이너보다 Kubernetes를 선호하는 경우 Amazon EKS를 선택하는 것이 좋습니다. 

   1.  기존 파이프라인과 함께 [https://aws.amazon.com/lambda/](https://aws.amazon.com/lambda/) 를 사용하여 허용된 런타임, 메모리 및 CPU 옵션을 지원하는 코드를 실행할 수 있습니다. 코드를 업로드하기만 하면 AWS Lambda가 해당 코드를 실행하고 확장하는 데 필요한 모든 것을 관리합니다. 다른 AWS 서비스에서 자동으로 트리거하거나 직접 호출하도록 코드를 설정할 수 있습니다. Lambda는 클라우드용으로 개발된 단기 실행 마이크로서비스 아키텍처에 권장됩니다.  

1.  새로운 컴퓨팅 솔루션을 실험한 후 마이그레이션을 계획하고 성능 지표를 검증합니다. 이는 한 번으로 끝나는 과정이 아닙니다. 다음 섹션을 참조하십시오 [PERF02-BP04 적정 크기 조정으로 필요한 구성 확인](perf_select_compute_right_sizing.md). 

 **구현 계획의 작업 수준:** 워크로드가 한 컴퓨팅 솔루션에서 다른 컴퓨팅 솔루션으로 이동하는 경우 애플리케이션을 리팩터링하는 데 *보통* 수준의 노력이 필요할 수 있습니다.   

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

 **관련 문서:** 
+  [AWS로 클라우드 컴퓨팅 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [EC2 인스턴스 유형 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html?ref=wellarchitected) 
+  [EC2 인스턴스에 대한 프로세서 상태 제어 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html?ref=wellarchitected) 
+  [EKS 컨테이너: EKS 워커 노드 ](https://docs.aws.amazon.com/eks/latest/userguide/worker.html?ref=wellarchitected) 
+  [Amazon ECS 컨테이너: Amazon ECS 컨테이너 인스턴스 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html?ref=wellarchitected) 
+  [함수: Lambda 함수 구성](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?ref=wellarchitected#function-configuration) 
+  [컨테이너 권장 가이드](https://aws.amazon.com/prescriptive-guidance/?apg-all-cards.sort-by=item.additionalFields.sortText&apg-all-cards.sort-order=desc&awsf.apg-new-filter=*all&awsf.apg-content-type-filter=*all&awsf.apg-code-filter=*all&awsf.apg-category-filter=categories%23containers&awsf.apg-rtype-filter=*all&awsf.apg-isv-filter=*all&awsf.apg-product-filter=*all&awsf.apg-env-filter=*all) 
+  [서버리스 권장 가이드](https://aws.amazon.com/prescriptive-guidance/?apg-all-cards.sort-by=item.additionalFields.sortText&apg-all-cards.sort-order=desc&awsf.apg-new-filter=*all&awsf.apg-content-type-filter=*all&awsf.apg-code-filter=*all&awsf.apg-category-filter=categories%23serverless&awsf.apg-rtype-filter=*all&awsf.apg-isv-filter=*all&awsf.apg-product-filter=*all&awsf.apg-env-filter=*all) 

 **관련 동영상:** 
+  [How to choose compute option for startups](https://aws.amazon.com/startups/start-building/how-to-choose-compute-option/) 
+  [Optimize performance and cost for your AWS compute(CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg) 
+  [Amazon EC2 foundations(CMP211-R2) ](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system ](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected) 
+  [Deliver high-performance ML inference with AWS Inferentia(CMP324-R1) ](https://www.youtube.com/watch?v=17r1EapAxpk&ref=wellarchitected) 
+  [Better, faster, cheaper compute: Cost-optimizing Amazon EC2(CMP202-R1) ](https://www.youtube.com/watch?v=_dvh4P2FVbw&ref=wellarchitected) 

 **관련 예시:** 
+  [웹 애플리케이션을 컨테이너로 마이그레이션](https://application-migration-with-aws.workshop.aws/en/container-migration.html) 
+  [서버리스 Hello World 실행](https://aws.amazon.com/getting-started/hands-on/run-serverless-code/) 

# PERF02-BP02 사용 가능한 컴퓨팅 구성 옵션 파악
<a name="perf_select_compute_config_options"></a>

 각 컴퓨팅 솔루션에는 워크로드 특성을 지원하는 옵션과 구성이 있습니다. 다양한 옵션을 통해 워크로드를 보완할 수 있는 방식과 애플리케이션에 가장 적합한 구성 옵션을 알아봅니다. 이러한 옵션의 예로는 인스턴스 패밀리, 크기, 기능(GPU, I/O), 버스팅, 시간 초과, 함수 크기, 컨테이너 인스턴스 및 동시성이 있습니다. 

 **원하는 결과:** CPU, 메모리, 네트워크 처리량(throughput), GPU, IOPS, 트래픽 패턴, 데이터 액세스 패턴을 비롯한 워크로드 특성이 문서화되어 있어 워크로드 특성에 맞는 컴퓨팅 솔루션을 구성하는 데 사용됩니다. 이러한 각 지표와 워크로드별 사용자 지정 지표를 기록하여 모니터링한 후 요구 사항을 효과적으로 충족하도록 컴퓨팅 구성을 최적화하는 데 사용합니다. 

 **일반적인 안티 패턴:** 
+  온프레미스에서 사용하던 컴퓨팅 솔루션을 그대로 활용합니다. 
+  워크로드 특성에 맞게 컴퓨팅 옵션 또는 인스턴스 패밀리를 검토하지 않습니다. 
+  버스팅 기능을 보장하기 위해 컴퓨팅 규모를 과도하게 키웁니다. 
+  동일한 워크로드에 여러 컴퓨팅 관리 플랫폼을 사용합니다. 

** 이 모범 사례 수립의 이점:** 각 워크로드에 적합한 솔루션을 결정하려면 AWS 컴퓨팅 오퍼링에 대해 잘 알아야 합니다. 워크로드에 사용할 컴퓨팅 오퍼링을 선택한 후에는 이러한 컴퓨팅 오퍼링을 신속하게 실험하여 워크로드 요구 사항이 제대로 충족되는지 확인할 수 있습니다. 워크로드 특성에 맞게 최적화된 컴퓨팅 솔루션을 사용하면 성능이 향상되고 ,비용이 줄어들며, 신뢰성이 높아집니다.

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

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

 워크로드에서 4주 이상 동일한 컴퓨팅 옵션을 사용하고 있으며 앞으로도 특성이 변하지 않을 것으로 예상되는 경우 [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 를 사용하여 컴퓨팅 특성에 따라 권장 사항을 알아볼 수 있습니다. 지표 부족, 지원되지 않는 인스턴스 유형 또는 예측 가능한 특성 변경으로 인해 AWS Compute Optimizer를 [사용할 수 없는 경우](https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html#requirements-ec2-instances) 로드 테스트 및 실험을 기반으로 지표를 예측해야 합니다.  

 **구현 단계:** 

1.  EC2 시작 유형을 사용하여 EC2 인스턴스 또는 컨테이너에서 실행 중입니까? 

   1.  워크로드에서 GPU를 사용하여 성능을 높일 수 있습니까? 

      1.  [가속화된 컴퓨팅](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Accelerated_Computing) 인스턴스는 기계 학습 훈련, 추론 및 고성능 컴퓨팅에 최상의 성능을 제공하는 GPU 기반 인스턴스입니다. 

   1.  워크로드에서 기계 학습 추론 애플리케이션을 실행합니까? 

      1.  [AWS Inferentia(Inf1)](https://aws.amazon.com/ec2/instance-types/inf1/) - Inf1 인스턴스는 기계 학습 추론 애플리케이션을 지원하도록 구축되었습니다. Inf1 인스턴스를 사용하는 고객은 이미지 인식, 음성 인식, 자연어 처리, 개인화 및 사기 탐지와 같은 대규모 기계 학습 추론 애플리케이션을 실행할 수 있습니다. TensorFlow, PyTorch 또는 MXNet과 같이 널리 사용되는 기계 학습 프레임워크 중 하나에 모델을 구축하고 GPU 인스턴스를 사용하여 모델을 훈련할 수 있습니다. 요구 사항을 충족하도록 기계 학습 모델을 훈련한 후에는 Inferentia 칩의 기계 학습 추론 성능을 최적화하는 컴파일러, 런타임 및 프로파일링 도구로 구성된 특수 SDK(소프트웨어 개발 키트)인 [AWS Neuron](https://aws.amazon.com/machine-learning/neuron/)을 사용하여 Inf1 인스턴스에 모델을 배포할 수 있습니다. 

   1.  워크로드를 낮은 수준의 하드웨어와 통합하여 성능을 개선합니까?  

      1.  [FPGA(Field Programmable Gate Array)](https://aws.amazon.com/ec2/instance-types/f1/) - FPGA를 사용하면 매우 까다로운 워크로드에 사용자 지정 하드웨어 가속 실행 기능을 사용함으로써 워크로드를 최적화할 수 있습니다. C, Go 등의 지원되는 일반 프로그래밍 언어나 Verilog, VHDL 등의 하드웨어 중심 언어를 활용해 알고리즘을 정의할 수 있습니다. 

   1.  최소 4주간의 지표를 보유하고 있으며 향후 트래픽 패턴과 지표가 흡사하게 유지될 것으로 예측 가능합니까? 

      1.  사용 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 를 활용하여 사용자의 컴퓨팅 특성에 가장 알맞은 컴퓨팅 구성에 대한 기계 학습 권장 사항을 알아봅니다. 

   1.  CPU 지표로 인해 워크로드 성능이 제한됩니까?  

      1.  [컴퓨팅 최적화](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Compute_Optimized) 인스턴스는 고성능 프로세서가 필요한 워크로드에 이상적입니다.  

   1.  메모리 지표로 인해 워크로드 성능이 제한됩니까?  

      1.  [메모리 최적화](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Memory_Optimized) 인스턴스는 상당한 메모리를 제공하여 메모리를 많이 사용하는 워크로드를 지원합니다. 

   1.  IOPS로 인해 워크로드 성능이 제한됩니까? 

      1.  [스토리지 최적화](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Storage_Optimized) 인스턴스는 로컬 스토리지에 대한 높은 순차 읽기 및 쓰기 액세스(IOPS)가 필요한 워크로드에 적합하도록 설계되었습니다. 

   1.  워크로드 특성에 모든 지표에 걸친 균형 잡힌 요구 사항이 반영되었습니까? 

      1.  트래픽 급증을 처리하려면 워크로드 CPU를 버스트해야 합니까? 

         1.  [버스트 가능 성능](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Instance_Features) 인스턴스는 컴퓨팅 최적화 인스턴스와 유사하지만, 컴퓨팅에 최적화된 인스턴스에서 식별된 고정 CPU 기준을 초과하여 버스트할 수 있습니다. 

      1.  [범용](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#General_Purpose) 인스턴스는 모든 특성을 균형 있게 제공하여 다양한 워크로드를 지원합니다. 

   1.  컴퓨팅 인스턴스가 Linux에서 실행 중이고 네트워크 인터페이스 카드의 네트워크 처리량(throughput)으로 인해 제한을 받습니까? 

      1.  검토 ['성능 질문 5, 모범 사례 2: 사용 가능한 네트워킹 기능 평가'를 검토하여](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/network-architecture-selection.html) 성능 요구 사항을 충족하는 올바른 인스턴스 유형 및 패밀리를 찾아봅니다. 

   1.  워크로드에 1년 동안 사용할 수 있는 특정 가용 영역의 일관되고 예측 가능한 인스턴스가 필요합니까?  

      1.  [예약 인스턴스](https://aws.amazon.com/ec2/pricing/reserved-instances/) 는 특정 가용 영역에서 용량 예약을 확정합니다. 예약 인스턴스는 특정 가용 영역에서 컴퓨팅 기능이 필요한 경우에 이상적입니다.  

   1.  워크로드에 전용 하드웨어가 필요한 라이선스가 있습니까? 

      1.  [전용 호스트](https://aws.amazon.com/ec2/dedicated-hosts/) 는 기존 소프트웨어 라이선스를 지원하고 규정 준수 요구 사항을 충족할 수 있도록 합니다. 

   1.  컴퓨팅 솔루션을 버스트해야 하고 동기식 처리가 필요합니까? 

      1.  [온디맨드 인스턴스](https://aws.amazon.com/ec2/pricing/on-demand/) 를 사용하면 장기 약정 없이 시간 또는 초 단위로 컴퓨팅 용량을 이용할 수 있습니다. 이러한 인스턴스는 성능 기준 요구를 넘어서 버스팅하는 데 도움이 됩니다. 

   1.  스테이스리스, 내결함성 및 비동기식인 컴퓨팅 솔루션을 사용합니까?  

      1.  [스팟 인스턴스](https://aws.amazon.com/ec2/spot/) 를 사용하면 내결함성을 갖춘 스테이스리스 워크로드를 위해 미사용 인스턴스 용량을 활용할 수 있습니다.  

1.  컨테이너를 [Fargate에서 실행하고 있습니까](https://aws.amazon.com/fargate/)? 

   1.  메모리 또는 CPU로 인해 작업 성능이 제한됩니까? 

      1.  SAP 환경의 보안 관련 작업에 대한 지침은 [태스크 크기](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-tasksize.html) 를 사용하여 메모리 또는 CPU를 조정할 수 있습니다. 

   1.  성능이 트래픽 패턴 버스트의 영향을 받고 있습니까? 

      1.  SAP 환경의 보안 관련 작업에 대한 지침은 [Auto Scaling](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-autoscaling.html) 구성을 사용하여 트래픽 패턴을 일치시킬 수 있습니다. 

1.  컴퓨팅 솔루션이 [Lambda에 있습니까](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-features.html)? 

   1.  최소 4주간의 지표를 보유하고 있으며 향후 트래픽 패턴과 지표가 흡사하게 유지될 것으로 예측 가능합니까? 

      1.  사용 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 를 활용하여 사용자의 컴퓨팅 특성에 가장 알맞은 컴퓨팅 구성에 대한 기계 학습 권장 사항을 알아봅니다. 

   1.  AWS Compute Optimizer를 사용하는 데 필요한 지표가 충분하지 않습니까? 

      1.  Compute Optimizer를 사용하는 데 활용할 지표가 없는 경우 [AWS Lambda 파워 튜닝](https://docs.aws.amazon.com/lambda/latest/operatorguide/profile-functions.html) 을 통해 최적의 구성을 선택할 수 있습니다. 

   1.  메모리 또는 CPU로 인해 함수 성능이 제한됩니까? 

      1.  성능 요구 지표를 충족하도록 [Lambda 메모리](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) 를 구성합니다. 

   1.  함수 실행 시 시간이 초과되었습니까? 

      1.  시간 초과 설정을 [변경합니다.](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html) 

   1.  함수 성능이 활동 및 동시성 버스트로 인해 제한됩니까?  

      1.  성능 요구 사항을 충족하도록 [동시성 설정](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) 을 구성합니다. 

   1.  함수가 비동기적으로 실행되며 재시도 시 실패합니까? 

      1.  비동기 구성 설정에서 이벤트의 최대 사용 기간과 [최대 재시도 제한을](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html) 구성합니다. 

## 구현 계획의 작업 수준: 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-compute-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-compute-option-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

이 모범 사례를 적용하려면 현재 컴퓨팅 특성과 지표를 알고 있어야 합니다. 이러한 지표를 수집하고 기준선을 설정한 다음 해당 지표를 사용하여 이상적인 컴퓨팅 옵션을 식별하는 작업은 *낮음* 수준부터 *보통* 수준의 노력을 투자하여 수행됩니다. 이는 로드 테스트 및 실험을 통해 가장 효과적으로 검증됩니다. 

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

 **관련 문서:** 
+  [AWS 클라우드 컴퓨팅 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [EC2 인스턴스 유형 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html?ref=wellarchitected) 
+  [EC2 인스턴스에 대한 프로세서 상태 제어 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html?ref=wellarchitected) 
+  [EKS 컨테이너: EKS 워커 노드 ](https://docs.aws.amazon.com/eks/latest/userguide/worker.html?ref=wellarchitected) 
+  [Amazon ECS 컨테이너: Amazon ECS 컨테이너 인스턴스 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html?ref=wellarchitected) 
+  [함수: Lambda 함수 구성](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?ref=wellarchitected#function-configuration) 

 **관련 동영상:** 
+  [Amazon EC2 foundations(CMP211-R2) ](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected) 
+  [Powering next-gen Amazon EC2: Deep dive into the Nitro system ](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected) 
+  [AWS 컴퓨팅의 성능 및 비용 최적화(CMP323-R1) ](https://www.youtube.com/watch?v=zt6jYJLK8sg&ref=wellarchitected) 

 **관련 예시:** 
+  [Compute Optimizer 및 메모리 사용률을 활성화하여 적절한 크기 지정](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer 데모 코드](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 

# PERF02-BP03 컴퓨팅 관련 지표 수집
<a name="perf_select_compute_collect_metrics"></a>

계산 리소스의 성능을 이해하려면 다양한 시스템의 활용률을 기록하고 추적해야 합니다. 이 데이터를 사용하면 리소스 요구 사항을 보다 정확하게 파악할 수 있습니다.  

 워크로드를 통해 지표, 로그 및 이벤트와 같은 대량의 데이터가 생성될 수 있습니다. 기존 스토리지, 모니터링 및 관찰성 서비스가 이렇게 만들어진 데이터를 관리할 수 있는지를 결정해야 합니다. 리소스 활용률을 반영하는 지표를 식별하고, 단일 플랫폼에서 수집 및 집계되고 상관 관계가 지정될 수 있는 지표를 파악하십시오. 이러한 지표는 모든 워크로드 리소스, 애플리케이션 및 서비스를 반영하여 시스템 전체를 한눈에 살펴보고 성능 향상 기회 및 문제를 신속하게 식별할 수 있도록 지원합니다.

 **원하는 결과:** 컴퓨팅 관련 리소스에 대한 모든 지표는 보존 기능이 구현된 단일 플랫폼에서 식별, 수집 및 집계되고 상관 관계가 지정되어 비용 및 운영 목표를 지원합니다. 

 **일반적인 안티 패턴:** 
+  지표에 대해 수동 로그 파일 검색만 사용합니다.  
+  지표를 내부 도구에만 게시합니다. 
+  선택한 모니터링 소프트웨어에서 기록한 기본 지표만 사용합니다. 
+  문제가 발생한 경우에만 지표를 검토합니다. 

 

 **이 모범 사례 정립의 이점:** 워크로드의 성능을 모니터링하려면 일정 기간에 걸쳐 여러 성능 지표를 기록해야 합니다. 이러한 지표를 바탕으로 성능 이상을 감지할 수 있습니다. 비즈니스 지표를 기준으로 성능을 측정하여 워크로드 요구 사항을 충족하는지 확인할 수도 있습니다. 

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

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

 컴퓨팅 관련 지표를 식별, 수집 및 집계하고 상관 관계를 지정하십시오. Amazon CloudWatch와 같은 서비스를 사용하면 구현을 보다 빠르고 편리하게 유지 관리할 수 있습니다. 기록된 기본 지표 외에도 워크로드 내에서 추가 시스템 수준 지표를 식별하고 추적해야 합니다. CPU 활용률, 메모리, 디스크 I/O, 네트워크 인바운드 및 아웃바운드 지표와 같은 데이터를 기록하면 활용률 수준이나 병목 현상을 파악할 수 있습니다. 이와 같은 데이터는 워크로드의 성능과 컴퓨팅 솔루션의 활용 방법을 이해하는 데 매우 중요합니다. 데이터 기반 접근 방식의 일환으로 이 지표를 사용하면 워크로드 리소스를 능동적으로 튜닝하고 최적화할 수 있습니다.  

 **구현 단계:** 

1.  어떤 컴퓨팅 솔루션 지표를 추적해야 합니까? 

   1.  [EC2 기본 지표](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html) 

   1.  [Amazon ECS 기본 지표](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html) 

   1.  [EKS 기본 지표](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/kubernetes-eks-metrics.html) 

   1.  [Lambda 기본 지표](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-access-metrics.html) 

   1.  [EC2 메모리 및 디스크 지표](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html) 

1.  현재 승인되어 사용 중인 로깅 및 모니터링 솔루션이 있습니까? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 

   1.  [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/) 

   1.  [Amazon Managed Service for Prometheus](https://docs.aws.amazon.com/grafana/latest/userguide/prometheus-data-source.html) 

1.  보안 및 운영 목표에 맞게 데이터 보존 정책을 식별하고 구성했습니까? 

   1.  [CloudWatch 지표용 기본 데이터 보존](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs용 기본 데이터 보존](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

1.  지표 및 로그 집계 에이전트를 어떻게 배포합니까? 

   1.  [AWS Systems Manager 자동화](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html?ref=wellarchitected) 

   1.  [OpenTelemetry Collector](https://aws-otel.github.io/docs/getting-started/collector) 

 **구현 계획의 작업 수준: **보통 수준의 *노력을 들여* 모든 컴퓨팅 리소스에서 지표를 식별, 추적, 수집 및 집계하고 상관 관계를 지정할 수 있습니다. 

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

 **관련 문서:** 
+  [Amazon CloudWatch 설명서](https://docs.aws.amazon.com/cloudwatch/index.html?ref=wellarchitected) 
+  [CloudWatch 에이전트를 사용하여 Amazon EC2 인스턴스 및 온프레미스 서버에서 지표 및 로그 수집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [AWS Lambda의 Amazon CloudWatch Logs 액세스](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html?ref=wellarchitected) 
+  [컨테이너 인스턴스와 CloudWatch Logs 사용](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_cloudwatch_logs.html?ref=wellarchitected) 
+  [사용자 지정 지표 게시](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html?ref=wellarchitected) 
+  [AWS Answers: 중앙 집중식 로깅](https://aws.amazon.com/answers/logging/centralized-logging/?ref=wellarchitected) 
+  [CloudWatch 지표를 게시하는 AWS 서비스](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html?ref=wellarchitected) 
+  [AWS Fargate에서의 Amazon EKS 모니터링](https://aws.amazon.com/blogs/containers/monitoring-amazon-eks-on-aws-fargate-using-prometheus-and-grafana/) 

 

 **관련 동영상:** 
+  [AWS의 애플리케이션 성능 관리](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [모니터링 플랜 세우기](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 

 **관련 예시:** 
+  [레벨 100: CloudWatch 대시보드를 통한 모니터링](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [레벨 100: CloudWatch 대시보드를 통한 Windows EC2 인스턴스 모니터링](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_windows_ec2_cloudwatch/) 
+  [레벨 100: CloudWatch 대시보드를 통한 Amazon Linux EC2 인스턴스 모니터링](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_linux_ec2_cloudwatch/) 

# PERF02-BP04 적정 크기 조정으로 필요한 구성 확인
<a name="perf_select_compute_right_sizing"></a>

워크로드의 다양한 성능 특성, 그리고 이러한 특성과 메모리, 네트워크, I/O 및 CPU 사용량 간의 관계를 분석합니다. 이 데이터를 사용하면 워크로드 프로필에 가장 적합한 리소스를 선택할 수 있습니다. 예를 들어 데이터베이스와 같은 메모리 집약적 워크로드는 코어당 메모리 비율이 높을수록 유리할 수 있습니다. 하지만 컴퓨팅 집약적인 워크로드에는 더 많은 코어 수와 더 높은 주파수가 필요할 수 있지만 코어당 더 적은 양의 메모리로 만족할 수 있습니다.

 **일반적인 안티 패턴:** 
+  모든 워크로드에 사용할 수 있는 모든 성능 특성에서 가장 큰 값을 가진 인스턴스를 선택합니다. 
+  관리 용이성을 위해 모든 인스턴스 유형을 한 가지 유형으로 표준화합니다. 
+  특정 워크로드의 실제 요구 사항을 검증하지 않고 종합 표준 벤치마크에 대해 최적화합니다. 
+  새로운 오퍼링을 재평가하고 통합하지 않고도 오랜 기간 동안 동일한 인프라를 유지합니다. 

 **이 모범 사례 수립의 이점:** 워크로드의 요구 사항을 숙지하면 이러한 요구 사항을 사용 가능한 컴퓨팅 오퍼링과 비교하고 신속하게 실험하여 워크로드 요구 사항을 가장 효율적으로 충족하는 오퍼링을 결정할 수 있습니다. 이를 통해 필요하지 않은 리소스 비용을 초과 지불하지 않고도 최적의 성능을 얻을 수 있습니다. 

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

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

적정 크기 조정으로 워크로드 구성을 수정합니다. 성능, 전반적인 효율성 및 비용 효율성을 최적화하려면 먼저 워크로드에 필요한 리소스를 결정해야 합니다. 데이터베이스와 같은 메모리 집약적 워크로드의 경우 인스턴스의 R-패밀리와 같은 메모리 최적화 인스턴스를 선택합니다. 더 높은 컴퓨팅 용량이 필요한 워크로드의 경우 인스턴스의 C-패밀리를 선택하거나 코어 수가 더 많거나 코어 주파수가 더 높은 인스턴스를 선택합니다. 종합 표준 벤치마크와 비교하는 대신 워크로드의 요구 사항에 따라 I/O 성능을 선택합니다. I/O 성능을 높이려면 인스턴스의 I-패밀리에서 인스턴스를 선택하거나 [I/O 최적화 Amazon EBS 볼륨을 선택](https://aws.amazon.com/premiumsupport/knowledge-center/optimize-ebs-provisioned-iops/)하거나 [인스턴스 스토어](https://aws.amazon.com/premiumsupport/knowledge-center/instance-store-vs-ebs/)가 있는 인스턴스를 선택합니다. 특정 인스턴스 유형에 대한 자세한 내용은 [Amazon EC2 인스턴스 유형](https://aws.amazon.com/ec2/instance-types/)을 참조하세요.

 적정 크기 조정을 통해 불필요한 리소스에 과도한 비용을 지불하지 않으면서 워크로드가 가능한 한 잘 수행되도록합니다. 

 **구현 단계** 
+  워크로드를 파악하거나 리소스 요구 사항을 분석합니다. 
+  워크로드를 별도로 평가합니다. AWS 클라우드 클라우드는 어느 한쪽을 포기할 필요 없이 자체적으로 각 워크로드의 크기를 적절하게 조정할 수 있는 유연성과 민첩성을 제공합니다. 
+  테스트 환경을 생성하여 워크로드에 가장 적합한 컴퓨팅 오퍼링을 찾습니다. 
+  새로운 컴퓨팅 오퍼링을 지속적으로 재평가하고 워크로드 요구 사항과 비교합니다. 
+  더 나은 가격 대비 성능을 위해 새로운 서비스 오퍼링을 정기적으로 검토합니다. 
+  Well-Architected Framework를 정기적으로 검토합니다. 

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

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

 **관련 문서:** 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/)  
+  [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 시스템 심층 분석) 
+  [How to choose compute option for startups](https://aws.amazon.com/startups/start-building/how-to-choose-compute-option/)(스타트업을 위한 컴퓨팅 옵션을 선택하는 방법) 
+  [Optimize performance and cost for your AWS compute (CMP323-R1)](https://www.youtube.com/watch?v=zt6jYJLK8sg)(AWS 컴퓨팅의 성능 및 비용 최적화(CMP323-R1)) 

 **관련 예시:** 
+  [Compute Optimizer 및 메모리 사용률을 활성화하여 적정 크기 조정](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer데모 코드](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 

# 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 \$1 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) 

# PERF02-BP06 지표를 기준으로 컴퓨팅 요구 사항의 지속적 평가
<a name="perf_select_compute_use_metrics"></a>

데이터 기반 접근 방식을 사용하여 시간이 지남에 따라 워크로드에 적합한 컴퓨팅 리소스를 지속적으로 평가하고 최적화합니다.

 **원하는 결과:** 시스템 수준 지표를 사용하여 시간별 워크로드 동작 및 요구 사항을 적극적으로 모니터링합니다. 수집된 데이터를 기반으로 사용 가능한 리소스에 대해 워크로드의 요구 사항을 평가하고 워크로드 프로필에 가장 적합하도록 컴퓨팅 환경을 변경합니다 예를 들어 워크로드는 계속 사용하다 보면 초기에 지정된 것보다 메모리가 더 많이 사용될 수 있습니다. 이 경우 다른 인스턴스 패밀리나 크기로 전환하면 성능과 효율성이 모두 개선될 수 있습니다. 

 **일반적인 안티 패턴:** 
+  컴퓨팅 요구 사항을 재평가하지 않고 워크로드에 대한 인사이트를 얻기 위해 시스템 수준 지표를 모니터링합니다. 
+  피크 워크로드 요구 사항에 따라 컴퓨팅 요구 사항을 설계합니다. 
+  워크로드 특성에 보다 효율적으로 맞는 대체 컴퓨팅 솔루션으로 이동할 때 확장 또는 성능 요구 사항을 충족하도록 기존 컴퓨팅 솔루션의 규모를 과도하게 키웁니다. 

 **이 모범 사례 수립의 이점:** 실제 데이터 및 원하는 비용과 성능의 균형을 기반으로 컴퓨팅 리소스를 최적화합니다. 

 **이 모범 사례를 따르지 않을 경우 노출되는 위험 수준:** 낮음 

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

데이터 기반 접근 방식을 사용하여 관찰된 워크로드 동작을 기반으로 컴퓨팅 리소스를 최적화합니다. 성능 및 효율성을 극대화하려면 워크로드에서 시간대별로 수집된 데이터를 사용하여 리소스를 지속적으로 튜닝하고 최적화합니다. 워크로드의 현재 리소스 사용량 추세를 파악하고, 워크로드의 요구에 더 적합하게 리소스 사용 방식을 변경할 수 있는 영역을 확인합니다. 리소스가 너무 많이 커밋되면 시스템 성능이 저하되고 리소스가 적절하게 사용되지 않으면 시스템 사용 효율성이 낮아지고 비용이 높아집니다. 

 성능 및 리소스 사용률을 최적화하려면 통합된 운영 보기, 세분화된 실시간 데이터 및 기간별 참조가 필요합니다. 자동화된 대시보드를 생성하여 이 데이터를 시각화하고 운영 및 사용률에 관한 인사이트를 얻을 수 있습니다. 

 **구현 단계** 

1.  시간 경과에 따른 컴퓨팅 관련 지표를 수집합니다. 

1.  선택한 컴퓨팅 솔루션에서 사용 가능한 리소스와 워크로드 지표를 비교합니다. 

1.  기존 솔루션의 크기를 조정하거나 대체 컴퓨팅 솔루션을 평가하여 필요한 구성 변경을 결정합니다. 

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

 **관련 모범 사례:** 
+  [PERF02-BP01 사용 가능한 컴퓨팅 옵션 평가](perf_select_compute_evaluate_options.md) 
+  [PERF02-BP02 사용 가능한 컴퓨팅 구성 옵션 파악](perf_select_compute_config_options.md) 
+  [PERF02-BP03 컴퓨팅 관련 지표 수집](perf_select_compute_collect_metrics.md) 
+  [PERF02-BP04 적정 크기 조정으로 필요한 구성 확인](perf_select_compute_right_sizing.md) 

 **관련 문서:** 
+  [AWS 클라우드 컴퓨팅](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [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) 
+ [AWS 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 시스템 심층 분석) 
+ [ Selecting and optimizing Amazon EC2 instances](https://www.youtube.com/watch?v=Vz0HZ6hlpgM)(Amazon EC2 인스턴스 선택 및 최적화)

 **관련 예시:** 
+  [Compute Optimizer 및 메모리 사용률을 활성화하여 적정 크기 조정](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer데모 코드](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 

# PERF 3  스토리지 솔루션을 어떻게 선택합니까?
<a name="perf-03"></a>

 시스템에 대한 최적의 스토리지 솔루션은 액세스 방식 종류(블록, 파일, 객체), 액세스 패턴(랜덤 또는 순차), 필요한 처리량, 액세스 빈도(온라인, 오프라인, 보관), 업데이트 빈도(WORM, 동적) 및 가용성과 내구성 제약 사항에 따라 다릅니다. 설계가 잘된 시스템은 여러 스토리지 솔루션을 사용하며, 다양한 기능을 통해 성능을 개선하고 리소스를 효율적으로 사용할 수 있도록 지원합니다. 

**Topics**
+ [PERF03-BP01 스토리지 특성 및 요구 사항 파악](perf_right_storage_solution_understand_char.md)
+ [PERF03-BP02 사용 가능한 구성 옵션 평가](perf_right_storage_solution_evaluated_options.md)
+ [PERF03-BP03 액세스 패턴과 지표를 기준으로 결정](perf_right_storage_solution_optimize_patterns.md)

# PERF03-BP01 스토리지 특성 및 요구 사항 파악
<a name="perf_right_storage_solution_understand_char"></a>

 워크로드 스토리지의 요구 사항 파악하여 문서화하고 각 위치의 스토리지 특성을 정의합니다. 스토리지 특성 예시에는 공유 가능한 액세스, 파일 크기, 성장률, IOPS, 지연 시간, 액세스 패턴 및 데이터 지속성 등이 있습니다. 이러한 특성을 사용하여 스토리지의 요구 사항에 대해 블록, 파일, 객체 또는 인스턴스 스토리지 서비스가 가장 효율적인 솔루션인지 평가합니다. 

 **원하는 결과:** 스토리지 요구 사항을 파악하여 스토리지의 요구 사항별로 문서화하고 사용 가능한 스토리지 솔루션을 평가합니다. 주요 스토리지 특성을 바탕으로 팀에서는 선택한 스토리지 서비스가 워크로드 성능에 어떻게 도움이 될지 이해합니다. 주요 기준에는 데이터 액세스 패턴, 성장률, 스케일링 요구 사항 및 지연 시간 요구 사항이 포함됩니다. 

 **일반적인 안티 패턴:** 
+  모든 워크로드에 Amazon Elastic Block Store(Amazon EBS)와 같은 하나의 스토리지 유형만 사용합니다. 
+  모든 워크로드의 스토리지 액세스 성능 요구 사항이 비슷하다고 가정합니다. 

 **이 모범 사례 확립의 이점:** 파악한 특성과 필요한 특성을 바탕으로 스토리지 솔루션을 선택하면 워크로드 성능을 개선하고 비용을 절감하며 워크로드 유지 관리를 위한 운영 작업을 줄일 수 있습니다. 워크로드 성능은 스토리지 서비스의 솔루션, 구성 및 위치에 따라 향상됩니다. 

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

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

 벤치마킹 또는 로드 테스트를 사용하여 워크로드의 가장 중요한 스토리지 성능 지표를 식별하고 데이터 기반 접근 방식의 일부로 개선 사항을 구현합니다. 이 데이터를 사용하여 스토리지 솔루션이 제한되는 위치를 식별하고, 솔루션을 개선할 수 있는 구성 옵션을 검사합니다. 워크로드의 예상 증가율을 확인하고 해당 속도에 맞는 스토리지 솔루션을 선택합니다. AWS 스토리지 서비스를 조사하여 다양한 워크로드에 적합한 스토리지 솔루션을 결정하세요. AWS의 프로비저닝 스토리지 솔루션은 스토리지 서비스를 테스트하고 이것이 워크로드의 요구 사항에 적합한지 확인할 수 있는 기회를 늘립니다. 


| AWS 서비스 | 주요 특징 | 일반 사용 사례 | 
| --- | --- | --- | 
| Amazon S3 |  99.999999999% 내구성, 무제한 성장, 어디에서나 액세스 가능, 액세스 및 복원력에 기반한 여러 가지 비용 모델  |  클라우드 네이티브 애플리케이션 데이터, 데이터 아카이빙 및 백업, 분석, 데이터 레이크, 정적 웹 사이트 호스팅, IoT 데이터   | 
| Amazon Glacier |  몇 초에서 몇 시간에 이르는 지연 시간, 무제한 성장, 최저 가격, 장기 스토리지  |  데이터 아카이빙, 미디어 아카이브, 장기 백업 보존  | 
| Amazon EBS | 스토리지 크기에 관리 및 모니터링, 낮은 지연 시간, 지속적인 스토리지, 99.8%\$199.9% 내구성이 필요하며, 대부분의 볼륨 유형은 하나의 EC2 인스턴스에서만 액세스 가능 |  COTS 애플리케이션, I/O 집약적 애플리케이션, 관계형 및 NoSQL 데이터베이스, 백업 및 복구  | 
| EC2 인스턴스 스토어 |  미리 정의된 스토리지 크기, 가장 짧은 지연 시간, 지속성 없음, EC2 인스턴스에서만 액세스 가능  |  COTS 애플리케이션, I/O 집약적 애플리케이션, 인 메모리 데이터 저장소  | 
| Amazon EFS |  99.999999999% 내구성, 무제한 성장, 여러 컴퓨팅 서비스에서 액세스 가능  |  여러 컴퓨팅 서비스 간에 현대화된 애플리케이션 파일 공유, 콘텐츠 관리 시스템 스케일링을 위한 파일 스토리지  | 
| Amazon FSx |  네 가지 파일 시스템(NetApp, OpenZFS, Windows File Server 및 Amazon FSx for Lustre) 지원, 여러 파일별 시스템에 사용할 수 있는 스토리지, 여러 컴퓨팅 서비스에서 액세스 가능  |  클라우드 네이티브 워크로드, 프라이빗 클라우드 버스팅, 특정 파일 시스템이 필요한 마이그레이션된 워크로드, VMC, ERP 시스템, 온프레미스 파일 스토리지 및 백업   | 
| Snow 제품군 |  휴대용 디바이스, 256비트 암호화, NFS 엔드포인트, 온보드 컴퓨팅, TB 스토리지  |  클라우드로 데이터 마이그레이션, 스토리지, 극한의 온프레미스 조건에서 컴퓨팅, 재해 복구, 원격 데이터 수집  | 
| AWS Storage Gateway |  클라우드 지원 스토리지에 대해 지연 시간이 짧은 온프레미스 액세스 제공, 완전 관리형 온프레미스 캐시   |  클라우드 마이그레이션에 대한 온프레미스 데이터, 온프레미스 소스에서 클라우드 데이터 레이크 채우기, 현대화된 파일 공유  | 

 **구현 단계:** 

1. 벤치 마킹 또는 로드 테스트를 사용하여 스토리지 필요의 주요 특성을 수집합니다. 주요 특징은 다음과 같습니다. 

   1. 공유 가능(구성 요소가 이 스토리지에 액세스할 수 있음) 

   1. 성장률 

   1. 처리량 

   1. 지연 시간 

   1. I/O 크기 

   1. 내구성 

   1. 액세스 패턴(일기와 쓰기, 빈도, 급증하는지 또는 일관적인지) 

1. 스토리지 특성을 지원하는 스토리지 솔루션 유형을 파악합니다. 

   1. [Amazon S3](https://aws.amazon.com/s3/) 은(는) 무제한 확장성, 높은 가용성과 액세스 가능성을 위한 여러 옵션을 갖춘 객체 스토리지 서비스입니다. Amazon S3 안팎에서 객체 전송 및 액세스는 [Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 또는 [액세스 포인트](https://aws.amazon.com/s3/features/access-points/) 등과 같은 서비스를 사용하여 위치, 보안 필요 및 액세스 패턴을 지원할 수 있습니다. [Amazon S3의 성능 지침](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html) 을 사용하여 워크로드 성능의 요구 사항을 충족하도록 Amazon S3 구성을 최적화할 수 있습니다. 

   1. [Amazon Glacier](https://aws.amazon.com/s3/storage-classes/glacier/) 은(는) 데이터 아카이빙을 위해 구축된 Amazon S3의 스토리지 클래스입니다. 밀리초에서 5\$112시간까지 액세스 시간이 다양하고 비용 및 보안 옵션이 제각각인 세 가지 아카이빙 솔루션 중에서 선택할 수 있습니다. Amazon Glacier은(는) 비즈니스 요구 사항 및 데이터 특성을 지원하는 데이터 수명 주기를 구현하여 성능 요구 사항을 충족하도록 돕습니다. 

   1. [Amazon Elastic Block Store(Amazon EBS)](https://aws.amazon.com/ebs/) 은(는) Amazon Elastic Compute Cloud(Amazon EC2)을(를) 위해 설계된 고성능 블록 스토리지 서비스입니다. IOPS 또는 처리량에 대한 우선 순위를 지정하는 특성이 다른 [SSD 기반 또는 HDD 기반](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html) 솔루션 중에서 [선택할](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/provisioned-iops.html) 수 [있습니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hdd-vols.html). EBS 볼륨은 고성능 워크로드, 파일 시스템을 위한 기본 스토리지, 데이터베이스 또는 연결된 스테이지 시스템에만 액세스할 수 있는 애플리케이션에 적합합니다. 

   1. [Amazon EC2 인스턴스 스토어](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) 는 Amazon EC2 인스턴스에 연결되므로 Amazon EBS과(와) 유사하지만 이상적으로 버퍼, 캐시 또는 기타 임시 콘텐츠로 사용해야 하는 임시 스토리지에 불과합니다. 인스턴스 스토어는 분리할 수 없으며 인스턴스가 종료되면 모든 데이터가 손실됩니다. 인스턴스 스토어는 데이터를 지속할 필요가 없는 높은 I/O 성능 및 짧은 지연 시간 사용 사례에 사용할 수 있습니다. 

   1. [Amazon Elastic File System(Amazon EFS)](https://aws.amazon.com/efs/) 은(는) 여러 유형의 컴퓨팅 솔루션에서 액세스할 수 있는 탑재 가능한 파일 시스템입니다. Amazon EFS은(는) 스토리지를 자동으로 늘리고 줄이며 대기 시간을 일정하게 짧게 유지하기 위해 성능이 최적화됩니다. EFS에는 [두 가지 성능 구성 모드](https://docs.aws.amazon.com/efs/latest/ug/performance.html)인 범용 모드와 최대 I/O 모드가 있습니다. 범용은 읽기 지연 시간이 1밀리초 미만이며, 쓰기 지연 시간은 한 자릿수 밀리초입니다. 최대 I/O 기능은 공유 파일 시스템이 필요한 수천 개의 컴퓨팅 인스턴스를 지원할 수 있습니다. Amazon EFS은(는) [두 가지 처리량 모드](https://docs.aws.amazon.com/efs/latest/ug/managing-throughput.html)즉, 버스팅과 프로비저닝을 지원합니다. 갑작스러운 액세스 급증 패턴이 나타나는 워크로드는 버스팅 처리량 모드에서 이점을 얻을 수 있는 동시에 일정하게 액세스가 높은 워크로드는 프로비저닝 처리량 모드에서 잘 작동할 수 있습니다. 

   1. [Amazon FSx](https://aws.amazon.com/fsx/) 은(는) 일반적으로 사용되는 네 가지 파일 시스템인 NetApp ONTAP, OpenZFS, Windows File Server 및 Lustre를 지원하는 최신 AWS 컴퓨팅 솔루션을 기반으로 구축되었습니다. Amazon FSx [지연 시간, 처리량 및 IOPS](https://aws.amazon.com/fsx/when-to-choose-fsx/) 는 파일 시스템에 따라 달라지며 워크로드의 요구 사항에 적합한 파일 시스템을 선택할 때 고려해야 합니다. 

   1. [AWS Snow Family](https://aws.amazon.com/snow/) 은(는) 클라우드과 데이터 스토리지로 온라인 및 오프라인 데이터 마이그레이션과 온프레미스 컴퓨팅을 지원하는 스토리지 및 컴퓨팅 디바이스입니다. AWS Snow 디바이스는 많은 양의 온프레미스 데이터 수집, 해당 데이터의 처리 및 클라우드로 해당 데이터 이동을 지원합니다. 파일 수, 파일 크기 및 압축과 관련하여 여러 가지 [문서화된 성능 모범 사례](https://docs.aws.amazon.com/snowball/latest/developer-guide/performance.html) 가 있습니다. 

   1. [AWS Storage Gateway](https://aws.amazon.com/storagegateway/) 은(는) 클라우드 기반 스토리지에 대한 온프레미스 애플리케이션 액세스를 제공합니다. AWS Storage Gateway는 Amazon S3, Amazon Glacier, Amazon FSx 및 Amazon EBS 등과 같은 여러 클라우드 스토리지 서비스를 지원하고 iSCSI, SMB 및 NFS 등과 같은 여러 프로토콜을 지원합니다. 자주 액세스하는 데이터를 온프레미스에 캐싱하여 지연 시간이 짧은 성능을 제공하고 변경된 데이터와 압축된 데이터만 AWS(으)로 전송합니다. 

1. 새로운 스토리지 솔루션을 실험하고 최적의 구성을 파악한 후 마이그레이션을 계획하고 성능 지표를 검증합니다. 이는 지속적인 프로세스이며 주요 특성이 변경되거나 사용 가능한 서비스 또는 옵션이 변경되면 다시 평가해야 합니다. 

 **구현 계획의 작업 수준: **워크로드가 한 스토리지 솔루션에서 다른 컴퓨팅 솔루션으로 이동하는 경우 애플리케이션을 리팩터링하는 데 *중간* 수준의 작업이 필요할 수 있습니다.   

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

 **관련 문서:** 
+  [Amazon EBS 볼륨 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 스토리지](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS: Amazon EFS 성능](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 성능](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 성능](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+ [Amazon FSx for NetApp ONTAP 성능](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html)
+ [Amazon FSx for OpenZFS 성능](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/performance.html)
+  [Amazon Glacier: Amazon Glacier 설명서](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3: 요청 속도 및 성능 고려 사항](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS의 클라우드 스토리지](https://aws.amazon.com/products/storage/) 
+ [AWS Snow Family](https://aws.amazon.com/snow/#Feature_comparison)
+  [EBS I/O 특성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 

 **관련 동영상:** 
+  [Deep dive on Amazon EBS(STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [Optimize your storage performance with Amazon S3(STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **관련 예시:** 
+  [Amazon EFS CSI 드라이버](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 유틸리티](https://github.com/aws/efs-utils) 
+  [Amazon EBS 오토 스케일링](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 예시](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 
+ [Amazon FSx for Lustre Container Storage Interface(CSI) 드라이버](https://github.com/kubernetes-sigs/aws-fsx-csi-driver)

# PERF03-BP02 사용 가능한 구성 옵션 평가
<a name="perf_right_storage_solution_evaluated_options"></a>

 다양한 특성 및 구성 옵션과 스토리지와의 관련성을 평가합니다. 프로비저닝된 IOPS, SSD, 마그네틱 스토리지, 객체 스토리지, 아카이브 스토리지 또는 휘발성 스토리지를 사용하는 위치와 방법을 파악하여 워크로드의 성능과 스토리지 공간을 최적화합니다. 

 [Amazon EBS](https://aws.amazon.com/ebs) 는 워크로드에 맞게 스토리지 성능과 비용을 최적화할 수 있는 광범위한 옵션을 제공합니다. 이러한 옵션은 두 가지 주요 범주로 구분됩니다. 그중 하나는 데이터베이스 및 부트 볼륨과 같은 트랜잭션 워크로드용 SSD-지원 스토리지이고(주로 IOPS에 따라 성능이 달라짐), 다른 하나는 MapReduce 및 로그 처리와 같은 처리량이 높은 워크로드용 HDD 지원 스토리지입니다(주로 초당 MB에 따라 성능이 달라짐). 

 SSD 지원 볼륨에는 지연 시간에 따라 달라지는 트랜잭션 워크로드용으로 최상의 성능을 제공하는 프로비저닝된 IOPS SSD와 다양한 트랜잭션 데이터용으로 사용 가능하도록 가격과 성능이 적절하게 절충된 범용 SSD가 포함됩니다. 

 [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 을 사용하면 클라이언트와 S3 버킷 간의 장거리 파일 전송을 빠르게 수행할 수 있습니다. Transfer Acceleration은 전 세계에 분산된 Amazon CloudFront의 엣지 로케이션을 활용하여 최적화된 네트워크 경로를 통해 데이터를 라우팅합니다. GET 요청을 많이 수행하는 S3 버킷의 워크로드에는 CloudFront가 포함된 Amazon S3를 사용합니다. 큰 파일을 업로드할 때는 여러 부분이 동시에 업로드되는 멀티 파트 업로드를 사용하면 네트워크 처리량을 극대화할 수 있습니다. 

 [Amazon Elastic File System(Amazon EFS)](https://aws.amazon.com/efs/) 은 AWS 클라우드 서비스 및 온프레미스 리소스에 사용할 수 있는 간편하고 확장 가능하며 탄력적인 완전관리형 NFS 파일 시스템을 제공합니다. Amazon EFS는 범용 성능 모드와 최대 I/O 성능 모드라는 두 성능 모드를 제공하여 다양한 클라우드 스토리지 워크로드를 지원합니다. 또한 버스팅 처리량(throughput) 및 프로비저닝된 처리량(throughput)이라는 두 처리량(throughput) 모드 중에서 파일 시스템에 적합한 모드를 선택할 수 있습니다. 워크로드에 사용할 설정을 결정하려면 [Amazon EFS 사용 설명서](https://docs.aws.amazon.com/efs/latest/ug/performance.html)를 참조하십시오. 

 [Amazon FSx](https://aws.amazon.com/fsx/) 는 엔터프라이즈 워크로드용 [Amazon FSx for Windows File Server,](https://aws.amazon.com/fsx/windows/) 고성능 워크로드용 [Amazon FSx for Lustre,](https://aws.amazon.com/fsx/lustre/) NetApps 주요 ONTAP 파일 시스템용 [Amazon FSx for NetApp ONTAP,](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/index.html) Linux 기반 파일 서버용 [Amazon FSx for OpenZFS](https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/what-is-fsx.html) 등 4가지 파일 시스템 중에서 선택할 수 있는 옵션을 제공합니다. FSx는 SSD를 지원하며, 빠르고 예측 가능하며 확장 가능하고 일관된 성능을 제공하도록 설계되었습니다. Amazon FSx 파일 시스템은 지속적으로 높은 읽기 및 쓰기 속도와 일관되게 지연 시간이 짧은 데이터 액세스를 제공합니다. 워크로드의 요구 사항에 따라 필요한 처리량 수준을 선택할 수 있습니다. 

 **일반적인 안티 패턴:** 
+  모든 워크로드에 Amazon EBS와 같은 하나의 스토리지 유형만 사용합니다. 
+  모든 스토리지 계층을 기준으로 한 실제 테스트 없이 워크로드 전체에 프로비저닝된 IOPS를 사용합니다. 
+  모든 워크로드의 스토리지 액세스 성능 요구 사항이 비슷하다고 가정합니다. 

 **이 모범 사례 수립의 이점:** 모든 스토리지 서비스 옵션을 평가하면 인프라 비용과 워크로드를 유지 관리하는 데 필요한 노력을 줄일 수 있습니다. 새로운 서비스와 기능의 배포에 대한 출시 시간을 가속화할 수 있습니다. 

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

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

 스토리지 특성 결정: 스토리지 솔루션을 평가할 때는 공유 기능, 파일 크기, 캐시 크기, 지연 시간, 처리량(throughput) 및 데이터 지속성 등 필요한 스토리지 특성이 무엇인지 결정합니다. 그런 다음 요구 사항에 가장 적합한 AWS 서비스에 요구 사항을 맞춥니다. 

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

 **관련 문서:** 
+  [AWS의 클라우드 스토리지](https://aws.amazon.com/products/storage/?ref=wellarchitected) 
+  [Amazon EBS 볼륨 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 스토리지](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS: Amazon EFS 성능](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 성능](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 성능](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+  [Amazon Glacier: Amazon Glacier 설명서](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3: 요청 속도 및 성능 고려 사항](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS의 클라우드 스토리지](https://aws.amazon.com/products/storage/) 
+  [AWS의 클라우드 스토리지](https://aws.amazon.com/products/storage/?ref=wellarchitected) 
+  [EBS I/O 특성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 

 **관련 동영상:** 
+  [Deep dive on Amazon EBS(STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [Optimize your storage performance with Amazon S3(STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **관련 예시:** 
+  [Amazon EFS CSI 드라이버](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 유틸리티](https://github.com/aws/efs-utils) 
+  [Amazon EBS 자동 확장](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 예시](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 

# PERF03-BP03 액세스 패턴과 지표를 기준으로 결정
<a name="perf_right_storage_solution_optimize_patterns"></a>

 워크로드의 액세스 패턴을 기준으로 스토리지 시스템을 선택하고, 워크로드에서 데이터에 액세스하는 방법을 결정하여 이러한 스토리지 시스템을 구성합니다. 블록 스토리지 대신 객체 스토리지를 선택하여 스토리지 효율성을 높이십시오. 선택한 스토리지 옵션을 데이터 접근 패턴과 일치하도록 구성합니다. 

 데이터에 액세스하는 방식은 스토리지 솔루션의 성능에 영향을 줍니다. 따라서 성능을 극대화하려면 접근 패턴에 가장 적합한 스토리지 솔루션을 선택하거나, 스토리지 솔루션에 따라 접근 패턴을 변경하는 것이 좋습니다. 

 RAID 0 어레이를 생성하면 단일 볼륨에서 프로비저닝할 때보다 파일 시스템의 성능 수준을 더 높일 수 있습니다. 내결함성보다 I/O 성능이 더 중요할 때는 RAID 0를 사용하는 것이 좋습니다. 예를 들어 데이터 복제가 이미 별도로 설정되어 있으며 사용 빈도가 매우 높은 데이터베이스의 경우에는 RAID 0를 사용해야 합니다. 

 워크로드에 사용된 모든 스토리지 옵션에서 워크로드에 적절한 스토리지 지표를 선택합니다. 버스트 크레딧을 이용하는 파일 시스템을 사용하는 경우에는 이러한 크레딧 제한에 근접할 때 알림을 제공하는 경보를 생성합니다. 전체 워크로드 스토리지 상태를 보여주는 스토리지 대시보드를 생성해야 합니다. 

 Amazon EBS 또는 Amazon FSx와 같이 크기가 고정된 스토리지 시스템의 경우 전체 스토리지 크기 대비 사용된 스토리지의 양을 모니터링해야 하며, 임계값에 도달할 때 스토리지 크기를 늘릴 수 있는 자동화 기능을 생성해야 합니다. 

 **일반적인 안티 패턴:** 
+  고객이 불만을 제기하지 않으면 스토리지 성능이 적절한 것이라고 가정합니다. 
+  모든 워크로드가 해당 계층 내에서 적합하다고 가정하고 하나의 스토리지 계층만 사용합니다. 

 **이 모범 사례 수립의 이점:** 성능 및 리소스 사용률을 최적화하려면 통합된 운영 보기, 세분화된 실시간 데이터 및 기간별 참조가 필요합니다. 1초의 세분성을 포함하는 자동 대시보드와 데이터를 생성하여 데이터에 대한 지표 산술을 수행하고 스토리지 요구 사항에 대한 운영 및 사용률 인사이트를 도출할 수 있습니다. 

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

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

 스토리지 사용량 및 액세스 패턴 최적화: 워크로드 액세스 패턴 및 사용 가능한 스토리지 옵션의 특성에 따라 스토리지 시스템을 선택합니다. 오버헤드를 줄이면서 요구 사항을 충족할 수 있는 최적의 데이터 저장 위치를 결정합니다. 스토리지의 특성에 따라 데이터를 구성하고 데이터와 상호 작용할 때는 성능 최적화 및 액세스 패턴을 사용합니다(예: 볼륨 스트라이핑 또는 데이터 분할). 

 스토리지 옵션에 적합한 지표 선택: 워크로드에 적합한 스토리지 지표를 선택해야 합니다. 각 스토리지 옵션은 워크로드의 시간대별 성능을 추적할 수 있는 다양한 지표를 제공합니다. 스토리지 버스트 지표를 기준으로 측정해야 합니다(예: Amazon EFS의 버스트 크레딧 모니터링). Amazon Elastic Block Store 또는 Amazon FSx와 같이 크기가 고정된 스토리지 시스템의 경우 사용된 스토리지의 양과 전체 스토리지 크기를 비교하여 모니터링해야 합니다. 임계값에 도달하면 가능한 경우 스토리지 크기를 늘리는 자동화를 생성합니다. 

 지표 모니터링: Amazon CloudWatch는 아키텍처의 리소스 전반에서 지표를 수집할 수 있습니다. 또한 사용자 지정 지표를 수집하고 게시하여 비즈니스 또는 파생 지표를 파악할 수도 있습니다. CloudWatch 또는 타사 솔루션을 사용하여 임계값 위반 시점을 나타내는 경보를 설정합니다. 

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

 **관련 문서:** 
+  [Amazon EBS 볼륨 유형](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) 
+  [Amazon EC2 스토리지](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html) 
+  [Amazon EFS: Amazon EFS 성능](https://docs.aws.amazon.com/efs/latest/ug/performance.html) 
+  [Amazon FSx for Lustre 성능](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 
+  [Amazon FSx for Windows File Server 성능](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/performance.html) 
+  [Amazon Glacier: Amazon Glacier 설명서](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html) 
+  [Amazon S3: 요청 속도 및 성능 고려 사항](https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html) 
+  [AWS의 클라우드 스토리지](https://aws.amazon.com/products/storage/) 
+  [EBS I/O 특성](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-io-characteristics.html) 
+  [Amazon CloudWatch를 사용한 Amazon EBS 성능 모니터링 및 이해](https://aws.amazon.com/blogs/storage/valuable-tips-for-monitoring-and-understanding-amazon-ebs-performance-using-amazon-cloudwatch/) 

 **관련 동영상:** 
+  [Deep dive on Amazon EBS(STG303-R1)](https://www.youtube.com/watch?v=wsMWANWNoqQ) 
+  [Optimize your storage performance with Amazon S3(STG343)](https://www.youtube.com/watch?v=54AhwfME6wI) 

 **관련 예시:** 
+  [Amazon EFS CSI 드라이버](https://github.com/kubernetes-sigs/aws-efs-csi-driver) 
+  [Amazon EBS CSI 드라이버](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 
+  [Amazon EFS 유틸리티](https://github.com/aws/efs-utils) 
+  [Amazon EBS 자동 확장](https://github.com/awslabs/amazon-ebs-autoscale) 
+  [Amazon S3 예시](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-examples.html) 

# PERF 4  데이터베이스 솔루션을 어떻게 선택합니까?
<a name="perf-04"></a>

 시스템에 대한 최적의 데이터베이스 솔루션은 가용성, 일관성, 파티션 허용 오차, 지연 시간, 내구성, 확장성, 쿼리 기능에 대한 요구 사항에 따라 다릅니다. 여러 시스템은 다양한 하위 시스템에 서로 다른 데이터베이스 솔루션을 사용하고 다양한 기능을 활성화하여 성능을 개선할 수 있습니다. 시스템에 대해 잘못된 데이터베이스 솔루션 및 기능을 선택하면 성능 효율성이 저하될 수 있습니다. 

**Topics**
+ [PERF04-BP01 데이터 특성 파악](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 사용 가능한 옵션 평가](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 데이터베이스 성능 지표 수집 및 기록](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 액세스 패턴을 기준으로 데이터 스토리지 선택](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 액세스 패턴 및 지표를 기준으로 데이터 스토리지 최적화](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 데이터 특성 파악
<a name="perf_right_database_solution_understand_char"></a>

 워크로드 데이터 세트의 특성, 액세스 패턴 및 요구 사항에 최적으로 일치하는 데이터 관리 솔루션을 선택합니다. 데이터 관리 솔루션을 선택하고 구현할 때는 쿼리, 확장 및 스토리지 특성이 워크로드 데이터 요구 사항을 지원하는지 확인해야 합니다. 다양한 데이터베이스 옵션이 데이터 모델과 어떻게 일치하는지, 어떤 구성 옵션이 사용 사례에 가장 적합한지 알아보십시오.  

 AWS에서는 관계형, 키 값, 문서, 인 메모리, 그래프, 시계열 및 원장 데이터베이스를 포함한 수많은 데이터베이스 엔진을 제공합니다. 각 데이터 관리 솔루션에는 사용 사례 및 데이터 모델을 지원하는 옵션과 구성이 있습니다. 워크로드에서 데이터 특성에 따라 여러 가지 데이터베이스 솔루션을 사용할 수 있습니다. 특정 문제에 가장 적합한 데이터베이스 솔루션을 선택하면, 모든 상황에 한 가지 접근 방식을 사용하는 제한적인 모놀리식 데이터베이스에서 탈피하여 고객의 요구를 충족하는 데이터 관리에 집중할 수 있습니다. 

 **원하는 결과:** 지원 데이터베이스 솔루션의 선택과 구성을 용이하게 하고 잠재적인 대안에 대한 인사이트를 제공하도록 충분한 세부 정보를 담아 워크로드 데이터 특성을 문서화합니다. 

 **일반적인 안티 패턴:** 
+  대규모 데이터 세트를 유사한 특성을 가진 더 작은 데이터 모음으로 분할하는 방법을 고려하지 않아 데이터 및 성장 특성에 보다 적합한 목적별 데이터베이스를 더 많이 사용할 기회를 놓칩니다. 
+  데이터 액세스 패턴을 사전에 식별하지 않아 나중에 많은 비용이 들고 복잡한 재작업을 해야 합니다. 
+  필요에 따라 신속하게 확장되지 않는 데이터 스토리지 전략을 사용하여 성장을 제한합니다. 
+  모든 워크로드에 하나의 데이터베이스 유형과 공급업체를 선택합니다. 
+  특정 데이터베이스 솔루션 유형에 대한 내부 경험과 지식이 있어 하나의 데이터베이스 솔루션만 고수합니다. 
+  온프레미스 환경에서 잘 작동했다는 이유로 같은 데이터베이스 솔루션을 그대로 사용합니다. 

 **이 모범 사례 수립의 이점:** 다양한 워크로드에 적합한 데이터베이스 솔루션을 결정하려면 모든 AWS 데이터베이스 솔루션에 대해 잘 알아야 합니다. 워크로드에 사용할 데이터베이스 솔루션을 선택한 후에는 이러한 각 데이터베이스 오퍼링을 신속하게 실험하여 워크로드 요구 사항이 계속해서 충족되는지 확인할 수 있습니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 높음 
+  잠재적인 비용 절감 효과가 나타나지 않을 수 있습니다. 
+  데이터가 필요한 수준으로 보호되지 않을 수 있습니다. 
+  데이터 액세스 및 스토리지 성능이 최적의 상태가 아닐 수 있습니다. 

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

 워크로드의 데이터 특성과 액세스 패턴을 정의하십시오. 사용 가능한 모든 데이터베이스 솔루션을 검토하여 데이터 요건을 지원하는 솔루션을 식별해야 합니다. 주어진 워크로드 내에서 다양한 데이터베이스를 선택할 수 있습니다. 각 서비스 또는 서비스 그룹을 평가하고 개별적으로 검토하십시오. 데이터의 일부 또는 전체에 대해 사용할 수 있는 대체 데이터 관리 솔루션이 확인된 경우 비용, 보안, 성능, 신뢰성 측면에서 이점을 제공할 수 있는 대체 구현을 시험해 보면 좋습니다. 새로운 데이터 관리 전략을 채택할 경우 기존 문서를 업데이트합니다. 


|  **유형**  |  **AWS 서비스**  |  **주요 특징**  |  **일반 사용 사례**  | 
| --- | --- | --- | --- | 
|  관계형  |  Amazon RDS, Amazon Aurora  |  참조 무결성, ACID 트랜잭션, 쓰기 스키마  |  ERP, CRM, 상용 소프트웨어  | 
|  키-값  |  Amazon DynamoDB  |  높은 처리량(throughput), 짧은 지연 시간, 무한에 가까운 확장성  |  장바구니(전자 상거래), 제품 카탈로그, 채팅 애플리케이션  | 
|  문서  |  Amazon DocumentDB  |  JSON 문서를 저장하고 모든 속성 쿼리  |  콘텐츠 관리(CMS), 고객 프로파일, 모바일 애플리케이션  | 
|  인 메모리  |  Amazon ElastiCache, Amazon MemoryDB  |  마이크로초 단위의 지연 시간  |  캐싱, 게임 리더보드  | 
|  그래프  |  Amazon Neptune  |  데이터 간의 관계가 의미를 갖는 고도의 관계형 데이터  |  소셜 네트워크, 개인화 엔진, 사기 탐지  | 
|  시계열  |  Amazon Timestream  |  기본 차원이 시간인 데이터  |  DevOps, IoT, 모니터링  | 
|  와이드 컬럼  |  Amazon Keyspaces  |  Cassandra 워크로드  |  산업 장비 유지보수, 경로 최적화  | 
|  원장  |  Amazon QLDB  |  변경 불가능하고 암호로 확인할 수 있는 원장 변경 사항  |  기록 시스템, 의료, 공급망, 금융 기관  | 

 **구현 단계** 

1.  데이터가 어떻게 구조화되었습니까?(예: 비정형, 키 값, 반정형, 관계형) 

   1.  데이터가 비정형인 경우 [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) 와 같은 객체 스토어 또는 [Amazon DocumentDB와 같은 NoSQL 데이터베이스를 고려합니다.](https://aws.amazon.com/documentdb/) 

   1.  키 값 데이터의 경우 [DynamoDB](https://aws.amazon.com/documentdb/), [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) 또는 [MemoryDB를 고려합니다.](https://aws.amazon.com/memorydb/) 

   1.  데이터가 관계형 구조를 가진다면 어느 정도의 참조 무결성이 요구됩니까? 

      1.  외래 키 제약 조건의 경우 [Amazon RDS](https://aws.amazon.com/rds/) 및 [Aurora](https://aws.amazon.com/rds/aurora/) 와 같은 관계형 데이터베이스가 원하는 무결성 수준을 제공할 수 있습니다. 

      1.  일반적으로 NoSQL 데이터 모델 내에서는 문서나 테이블을 조인하는 대신 단일 요청으로 검색하도록 데이터를 단일 문서 또는 문서 모음으로 비정규화합니다.  

1.  원자성, 일관성, 격리, 내구성(ACID) 규정 준수가 필요합니까? 

   1.  관계형 데이터베이스와 연결된 ACID 속성이 필요한 경우 [Amazon RDS](https://aws.amazon.com/rds/) 및 [Aurora와 같은 관계형 데이터베이스를 고려합니다.](https://aws.amazon.com/rds/aurora/) 

1.  어떤 정합성 모델이 필요합니까? 

   1.  애플리케이션에서 최종 일관성을 허용할 수 있다면 NoSQL 구현을 고려합니다. 다른 특성을 검토하면 가장 적합한 [NoSQL 데이터베이스를](https://aws.amazon.com/nosql/) 선택하는 데 도움이 됩니다. 

   1.  철저한 일관성이 필요한 경우 [DynamoDB](https://aws.amazon.com/documentdb/) 또는 [Amazon RDS와 같은 관계형 데이터베이스로 강력히 일관된 읽기를 사용할 수 있습니다](https://aws.amazon.com/rds/). 

1.  어떤 쿼리 및 결과 형식을 지원해야 합니까?(예: SQL, CSV, Parque, Avro, JSON 등) 

1.  어떤 데이터 유형, 필드 크기 및 전체 용량을 사용합니까?(예: 텍스트, 숫자, 공간, 시계열 계산, 바이너리 또는 블롭, 문서) 

1.  시간이 흐르면서 스토리지 요구 사항이 어떻게 변경되며, 이러한 변화가 확장성에 어떤 영향을 미칩니까? 

   1.  서버리스 데이터베이스( [DynamoDB](https://aws.amazon.com/documentdb/) 및 [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) )는 무한에 가까운 스토리지로 동적으로 확장됩니다. 

   1.  관계형 데이터베이스는 프로비저닝된 스토리지에 대한 상한선이 있으며, 한도에 도달하면 샤딩과 같은 메커니즘을 통해 수평으로 분할해야 하는 경우가 많습니다. 

1.  쓰기 쿼리 대비 읽기 쿼리의 비율은 얼마입니까? 캐싱이 성능을 향상시킬 가능성이 있습니까? 

   1.  읽기 집약적인 워크로드는 캐싱 계층을 통해 이점을 얻을 수 있습니다. 이는 [ElastiCache](https://aws.amazon.com/elasticache/) 또는 [DAX일 수 있습니다](https://aws.amazon.com/dynamodb/dax/) (데이터베이스가 DynamoDB인 경우). 

   1.  읽기는 관계형 데이터베이스 [(예: Amazon RDS)가 있는 읽기 전용 복제본으로 오프로드될 수 있습니다](https://aws.amazon.com/rds/). 

1.  저장 및 수정(OLTP - 온라인 트랜잭션 처리) 또는 검색 및 보고(OLAP - 온라인 분석 처리)가 높은 우선순위를 가집니까? 

   1.  처리량(throughput)이 많은 트랜잭션 처리의 경우 DynamoDB 또는 Amazon DocumentDB와 같은 NoSQL 데이터베이스를 고려합니다. 

   1.  분석 쿼리의 경우 [Amazon Redshift](https://aws.amazon.com/redshift/) 와 같은 열 형식 데이터베이스를 사용하거나 데이터를 Amazon S3로 내보내고 [Athena](https://aws.amazon.com/athena/) 또는 [QuickSight를 사용하여 분석을 수행하는 것을 고려합니다.](https://aws.amazon.com/quicksight/) 

1.  이 데이터의 중요도와 필요한 보호 및 암호화 수준은 어느 정도입니까? 

   1.  Amazon RDS 및 Aurora 엔진은 AWS KMS를 사용하여 데이터 암호화를 지원합니다. 또한 Microsoft SQL Server 및 Oracle은 Amazon RDS를 사용할 때 기본 투명한 데이터 암호화(TDE)를 지원합니다. 

   1.  DynamoDB의 경우 [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) 과 함께 세분화된 액세스 제어를 통해 누가 키 수준에서 어떤 데이터에 액세스할지 제어할 수 있습니다. 

1.  데이터에 필요한 내구성은 어느 정도입니까? 

   1.  Aurora는 리전 내 3개의 가용 영역에서 데이터를 자동으로 복제하므로, 데이터 손실 가능성이 적으면서도 데이터의 내구성이 매우 높아집니다. 

   1.  DynamoDB는 여러 가용 영역에 걸쳐 자동으로 복제되므로, 높은 가용성과 데이터 내구성을 제공합니다. 

   1.  Amazon S3는 99.999999999%의 내구성을 지원합니다. Amazon RDS 및 DynamoDB와 같은 많은 데이터베이스 서비스는 장기 보존 및 아카이브를 위해 Amazon S3로 데이터 내보내기를 지원합니다. 

1.  할 것 [Recovery Time Objective(RTO) 또는 Recovery Point Objective(RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) 요건이 솔루션에 영향을 미칩니까? 

   1.  Amazon RDS, Aurora, DynamoDB, Amazon DocumentDB, Neptune은 모두 시점 복구와 온디맨드 백업 및 복원을 지원합니다.  

   1.  고가용성 요구 사항을 위해 DynamoDB 테이블은 [글로벌 테이블](https://aws.amazon.com/dynamodb/global-tables/) 기능을 사용하여 전역적으로 복제할 수 있으며, Aurora 클러스터는 글로벌 데이터베이스 기능을 사용하여 여러 리전에 걸쳐 복제할 수 있습니다. 나아가 S3 버킷은 교차 리전 복제를 사용하여 AWS 리전에 걸쳐 복제 가능합니다.  

1.  상용 데이터베이스 엔진/라이선싱 비용에 대한 걱정을 덜고 싶습니까? 

   1.  Amazon RDS 또는 Aurora에서 PostgreSQL 및 MySQL과 같은 오픈 소스 엔진을 고려합니다. 

   1.  그리고 [AWS DMS](https://aws.amazon.com/dms/) 및 [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) 를 활용하여 상용 데이터베이스 엔진에서 오픈 소스로 마이그레이션을 수행합니다. 

1.  데이터베이스에 대한 운영상의 기대치는 어떠합니까? 관리형 서비스로 전환하는 것이 주요 관심사입니까? 

   1.  Amazon EC2 대신 Amazon RDS를 활용하고 자체 호스팅한 NoSQL 데이터베이스 대신 DynamoDB 또는 Amazon DocumentDB를 활용하여 운영 오버헤드를 줄일 수 있습니다. 

1.  현재 데이터베이스에 어떻게 액세스합니까? 애플리케이션 액세스만 가능합니까? 아니면 비즈니스 인텔리전스(BI) 사용자와 기타 연결된 상용 애플리케이션이 있습니까? 

   1.  외부 도구에 의존하는 경우 해당 도구가 지원하는 데이터베이스와의 호환성을 유지해야 할 수도 있습니다. Amazon RDS는 Microsoft SQL Server, Oracle, MySQL, PostgreSQL 등 지원하는 다양한 엔진 버전과 완벽하게 호환됩니다. 

1.  잠재적인 데이터 관리 서비스 목록과 이러한 서비스를 가장 효과적으로 사용할 수 있는 위치는 다음과 같습니다. 

   1.  관계형 데이터베이스는 미리 정의된 스키마와 스키마 간의 관계를 사용하여 데이터를 저장합니다. 이러한 데이터베이스는 ACID(원자성, 일관성, 격리, 내구성) 트랜잭션을 지원하고 참조 무결성과 강력한 데이터 일관성을 유지하도록 설계되었습니다. 많은 기존 애플리케이션, 엔터프라이즈 리소스 계획(ERP), 고객 관계 관리(CRM) 및 전자 상거래의 데이터가 관계형 데이터베이스를 사용하여 저장됩니다. 이러한 데이터베이스 엔진의 다수를 Amazon EC2에서 실행하거나 AWS 관리형 [데이터베이스 서비스](https://aws.amazon.com/products/databases/): [Amazon Aurora](https://aws.amazon.com/rds/aurora), [Amazon RDS](https://aws.amazon.com/rds) 및 [Amazon Redshift](https://aws.amazon.com/redshift)중에서 선택할 수 있습니다. 

   1.  키-값 데이터베이스는 대개 대량의 데이터를 저장 및 검색하는 일반적인 액세스 패턴에 최적화되어 있습니다. 이 데이터베이스는 동시 요청의 양이 매우 많은 경우에도 빠른 응답 시간을 제공합니다. 트래픽이 많은 웹 앱, 전자 상거래 시스템 및 게임 애플리케이션은 키 값 데이터베이스의 일반적인 사용 사례입니다. AWS에서는 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)를 활용할 수 있습니다. Amazon DynamoDB는 인터넷 규모의 애플리케이션을 위한 보안, 백업 및 복원, 인 메모리 캐싱 기능이 내장된 탁월한 내구성을 지닌 완전관리형 다중 리전, 다중 마스터 데이터베이스입니다. 

   1.  인 메모리 데이터베이스는 데이터에 대한 실시간 액세스, 가장 짧은 지연 시간 및 가장 높은 처리량(throughput)이 필요한 애플리케이션에 사용됩니다. 이 데이터베이스는 데이터를 메모리에 직접 저장함으로써 밀리초 단위의 지연 시간도 허용되지 않는 애플리케이션에 마이크로초 단위의 지연 시간을 제공합니다. 애플리케이션 캐싱, 세션 관리, 게임 순위표 및 지리 공간 애플리케이션에 인메모리 데이터베이스를 사용할 수 있습니다. [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 는 다음과 호환되는 완전관리형 인메모리 데이터 스토어입니다. [Redis](https://aws.amazon.com/elasticache/redis/) 또는 [Memcached](https://aws.amazon.com/elasticache/memcached). 애플리케이션의 내구성 요건이 더 높은 경우 [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) 에서는 이를 조합하여 놀랍도록 빠르고 내구성이 뛰어난 인 메모리 데이터베이스 서비스를 제공합니다. 

   1.  도큐먼트 데이터베이스는 반정형 데이터를 JSON 유사 문서로 저장하도록 설계되었습니다. 이러한 데이터베이스는 개발자가 콘텐츠 관리, 카탈로그 및 사용자 프로필과 같은 애플리케이션을 신속하게 구축하고 업데이트하는 데 도움이 됩니다. [Amazon DocumentDB](https://aws.amazon.com/documentdb/) 는 MongoDB 워크로드를 지원하는 완전관리형 문서 데이터베이스 서비스로, 탁월한 속도, 확장성 및 고가용성을 제공합니다. 

   1.  와이드 컬럼 스토어는 NoSQL 데이터베이스의 한 유형입니다. 테이블, 행 및 열을 사용하지만 관계형 데이터베이스와 달리 열의 이름과 형식은 동일한 테이블에서 행마다 다를 수 있습니다. 일반적으로 와이드 컬럼 스토어는 대규모 산업 앱에서 장비 유지 관리, 플릿 관리 및 라우팅 최적화를 위해 사용됩니다. [Amazon Keyspaces(Apache Cassandra용)](https://aws.amazon.com/mcs/) 는 와이드 컬럼 확장성 및 고가용성을 갖춘 관리형 Apache Cassandra 호환 데이터베이스 서비스입니다. 

   1.  그래프 데이터베이스는 밀접한 관계가 있는 그래프 데이터 세트 간에 밀리초 단위의 지연 시간으로 수백만 개의 관계를 탐색하고 쿼리해야 하는 애플리케이션을 위한 솔루션입니다. 많은 기업에서 사기 탐지, 소셜 네트워킹 및 추천 엔진에 그래프 데이터베이스를 사용합니다. [Amazon Neptune](https://aws.amazon.com/neptune/) 은 빠르고 안정적인 완전 관리형 그래프 데이터베이스 서비스로, 상호 연결성이 높은 데이터 세트를 활용하는 애플리케이션을 쉽게 구축하고 실행할 수 있습니다. 

   1.  시계열 데이터베이스는 시간이 지남에 따라 변화하는 데이터에서 효율적으로 분석 정보를 수집, 통합 및 도출합니다. IoT 애플리케이션, DevOps 및 산업용 텔레메트리에 시계열 데이터베이스를 활용할 수 있습니다. [Amazon Timestream](https://aws.amazon.com/timestream/) 은 IoT 및 운영 애플리케이션을 위한 고속의 확장 가능한 완전관리형 시계열 데이터베이스 서비스입니다. 이 서비스를 사용하면 하루에 수조 건의 이벤트를 손쉽게 저장하고 분석할 수 있습니다. 

   1.  원장 데이터베이스는 모든 애플리케이션에 대해 확장 가능하고 변경 불가능하며 암호화 방식으로 확인 가능한 트랜잭션 레코드를 유지하는 신뢰할 수 있는 중앙 집중식 권한을 제공합니다. 레코드 시스템, 공급망, 등록 및 심지어 은행 거래 시스템에 원장 데이터베이스가 사용되는 것을 볼 수 있습니다. [Amazon Quantum Ledger Database(Amazon QLDB)](https://aws.amazon.com/qldb/) 는 신뢰할 수 있는 중앙 기관이 소유한 투명하고 변경 불가능하며 암호화 방식으로 확인 가능한 트랜잭션 로그를 제공하는 완전관리형 원장 데이터베이스입니다. Amazon QLDB는 모든 애플리케이션 데이터 변경 사항을 추적하고 시간 경과에 따른 완전하고 확인 가능한 변경 기록을 유지합니다. 

 **구현 계획의 작업 수준: **워크로드가 한 데이터베이스 솔루션에서 다른 데이터베이스 솔루션으로 이동하는 경우 데이터 및 애플리케이션을 리팩터링하는 데 *많은* 노력이 필요할 수 있습니다.   

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

 **관련 문서:** 
+  [AWS 클라우드 데이터베이스 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 데이터베이스 캐싱 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 모범 사례 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 성능 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10가지 성능 향상 팁 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 모범 사례 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 모범 사례](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [EC2 및 Amazon RDS 간 선택](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [Amazon ElastiCache 구현 모범 사례](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **관련 동영상:** 
+ [AWS 목적별 데이터베이스(DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [Amazon Aurora 스토리지 상세 설명: 작동 방식(DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [Amazon DynamoDB deep dive: Advanced design patterns(DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **관련 예시:** 
+  [Amazon Redshift 데이터 공유를 사용하여 데이터 패턴 최적화](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [데이터베이스 마이그레이션](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server - AWS Database Migration Service(DMS) 복제 데모](https://github.com/aws-samples/aws-dms-sql-server) 
+  [데이터베이스 현대화 실습 워크숍](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amazon Neptune 샘플](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 사용 가능한 옵션 평가
<a name="perf_right_database_solution_evaluate_options"></a>

 데이터 관리 솔루션을 선택하기 전에 사용 가능한 데이터베이스 옵션과 데이터베이스 옵션을 통해 성능을 최적화하는 방법을 이해해야 합니다. 로드 테스트를 통해 워크로드에 중요한 데이터베이스 지표를 식별하십시오. 데이터베이스 옵션을 탐색하면서 파라미터 그룹, 스토리지 옵션, 메모리, 컴퓨팅, 읽기 전용 복제본, 최종 일관성, 연결 풀링 및 캐싱 옵션과 같은 다양한 측면을 고려해야 합니다. 지표를 개선하려면 다음과 같은 다양한 구성 옵션을 사용해 보십시오. 

 **원하는 결과:** 워크로드에서 데이터 유형에 따라 하나 이상의 데이터베이스 솔루션을 사용할 수 있습니다. 데이터베이스 기능과 이점이 데이터 특성, 액세스 패턴 및 워크로드 요구 사항과 최적으로 맞아떨어집니다. 데이터베이스 성능과 비용을 최적화하려면 데이터 액세스 패턴을 평가하여 적절한 데이터베이스 옵션을 결정해야 합니다. 허용 가능한 쿼리 시간을 평가하여 선택한 데이터베이스 옵션이 요구 사항을 충족할 수 있는지 확인합니다. 

 **일반적인 안티 패턴:** 
+  데이터 액세스 패턴을 식별하지 않습니다. 
+  선택한 데이터 관리 솔루션의 구성 옵션을 알지 못합니다. 
+  다른 사용 가능한 구성 옵션을 고려하지 않고 인스턴스 크기만 늘립니다. 
+  선택한 솔루션의 확장 특성을 테스트하지 않습니다. 

 

 **이 모범 사례 수립의 이점:** 데이터베이스 옵션을 탐색하고 실험하여 인프라 비용을 절감하고, 성능 및 확장성을 향상하고, 워크로드를 유지하는 데 들여야 하는 수고를 줄일 수 있습니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 높음 
+  불필요하게 타협하며 모든 데이터베이스에 적합하게 *하나로* 최적화해야 할 필요는 없습니다. 
+  트래픽 패턴과 일치하도록 데이터베이스 솔루션을 구성하지 않으면 비용이 증가합니다. 
+  확장 문제로 인해 운영 문제가 발생할 수 있습니다. 
+  데이터가 필요한 수준으로 보호되지 않을 수 있습니다. 

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

 데이터베이스 옵션을 구성할 수 있도록 워크로드 데이터 특성을 파악하십시오. 로드 테스트를 실행하면 주요 성능 지표와 병목 현상을 식별할 수 있습니다. 이러한 특성과 지표를 사용하여 데이터베이스 옵션을 평가하고 다른 구성을 실험합니다. 


|  AWS 서비스  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  컴퓨팅 규모 조정  |  인스턴스 크기 증가, 로드 변화에 따라 Aurora 서버리스 인스턴스 자동 확장  |  온디맨드 용량 모드로 자동 읽기/쓰기 확장 또는 프로비저닝된 용량 모드에서 프로비저닝된 읽기/쓰기 용량 자동 확장  |  인스턴스 크기 증가  |  인스턴스 크기 증가, 클러스터에 노드 추가  |  인스턴스 크기 증가  |  용량을 조정하기 위해 자동 확장  |  온디맨드 용량 모드로 자동 읽기/쓰기 확장 또는 프로비저닝된 용량 모드에서 프로비저닝된 읽기/쓰기 용량 자동 확장  |  용량을 조정하기 위해 자동 확장  | 
|  읽기 스케일 아웃  |  모든 엔진에서 읽기 전용 복제본 지원, Aurora에서 읽기 전용 복제본 인스턴스의 자동 확장 지원  |  프로비저닝된 읽기 용량 단위 증대  |  읽기 전용 복제본  |  읽기 전용 복제본  |  읽기 전용 복제본, 읽기 전용 복제본 인스턴스의 자동 확장 지원  |  자동 확장  |  프로비저닝된 읽기 용량 단위 증대  |  문서화된 동시성 제한까지 자동 스케일 업  | 
|  쓰기 스케일 아웃  |  인스턴스 크기 증가, 애플리케이션에서 쓰기를 일괄 처리하거나 데이터베이스 앞에 대기열 추가. 여러 인스턴스에 걸쳐 애플리케이션 수준 샤딩을 통한 수평 확장  |  프로비저닝된 쓰기 용량 단위 증대 파티션 수준 쓰기 제한을 방지하기 위해 최적의 파티션 키 보장  |  기본 인스턴스 크기 증가  |  클러스터 모드에서 Redis를 사용하여 쓰기를 여러 샤드로 분산  |  인스턴스 크기 증가  |  크기를 조정하는 동안 쓰기 요청이 제한될 수 있음. 제한 예외가 발생하는 경우 동일하거나 더 높은 처리량(throughput)으로 데이터를 계속 전송하여 자동 크기 조정 동시 쓰기 요청을 줄이기 위한 일괄 쓰기  |  프로비저닝된 쓰기 용량 단위 증대 파티션 수준 쓰기 제한을 방지하기 위해 최적의 파티션 키 보장  |  문서화된 동시성 제한까지 자동 스케일 업  | 
|  엔진 구성  |  파라미터 그룹  |  해당 사항 없음  |  파라미터 그룹  |  파라미터 그룹  |  파라미터 그룹  |  해당 사항 없음  |  해당 사항 없음  |  해당 사항 없음  | 
|  캐싱  |  인 메모리 캐싱, 파라미터 그룹을 통해 구성 가능. ElastiCache for Redis와 같은 전용 캐시와 결합하여 일반적으로 액세스하는 항목에 대한 요청 오프로드  |  DAX(DAX) 완전관리형 캐시 지원  |  인 메모리 캐싱. 필요에 따라 ElastiCache for Redis와 같은 전용 캐시와 결합하여 일반적으로 액세스하는 항목에 대한 요청 오프로드  |  기본 함수가 캐싱됨  |  쿼리 결과 캐시를 사용하여 읽기 전용 쿼리의 결과 캐시  |  Timestream에는 고성능 인 메모리 계층을 포함한 2개의 스토리지 계층 존재  |  ElastiCache for Redis와 같은 별도의 전용 캐시를 배포하여 일반적으로 액세스하는 항목에 대한 요청 오프로드  |  해당 사항 없음  | 
|  고가용성/재해 복구  |  프로덕션 워크로드에 대한 권장 구성으로 두 번째 가용 영역에서 대기 인스턴스를 실행하여 리전 내에서 복원력 제공.  리전 간 복원력의 경우 Aurora 글로벌 데이터베이스 사용 가능  |  리전 내에서 고가용성 제공. DynanoDB 글로벌 테이블을 사용하여 리전에 걸쳐 테이블 복제 가능  |  가용성을 위해 여러 가용 영역에 걸쳐 다수의 인스턴스 생성.  스냅샷은 리전 간에 공유할 수 있으며 클러스터는 DMS를 통해 복제하여 크로스 리전 복제/재해 복구 제공  |  프로덕션 클러스터 구성의 경우 보조 가용 영역에 노드를 하나 이상 생성할 것을 권장.  ElastiCache 글로벌 데이터 스토어를 사용하여 여러 리전에서 클러스터 복제 가능  |  다른 가용 영역의 읽기 전용 복제본이 장애 조치 대상 역할을 함.  스냅샷은 리전 간에 공유할 수 있으며, Neptune 스트림으로 클러스터를 복제하여 2개의 서로 다른 리전에 있는 두 클러스터 간에 데이터 복제 가능  |  리전 내에서 고가용성 제공. 크로스 리전 복제를 수행하려면 Timestream SDK로 사용자 지정 애플리케이션을 개발해야 함  |  리전 내에서 고가용성 제공.  크로스 리전 복제에는 사용자 지정 애플리케이션 로직 또는 타사 도구 필요  |  리전 내에서 고가용성 제공.  리전 간에 복제하려면 Amazon QLDB 분개장의 콘텐츠를 S3 버킷으로 내보내고 크로스 리전 복제를 위한 버킷을 구성  | 

 

 **구현 단계** 

1.  선택한 데이터베이스에 사용할 수 있는 구성 옵션은 무엇입니까? 

   1.  Amazon RDS 및 Aurora용 파라미터 그룹을 사용하면 캐시에 할당된 메모리나 데이터베이스의 시간대를 조정하는 것처럼 일반적인 데이터베이스 엔진 수준 설정을 조정할 수 있습니다. 

   1.  Amazon RDS, Aurora, Neptune, Amazon DocumentDB 등의 프로비저닝된 데이터베이스 서비스와 Amazon EC2에 배포된 데이터베이스 서비스의 경우 인스턴스 유형과 프로비저닝된 스토리지를 변경하고 읽기 전용 복제본을 추가할 수 있습니다. 

   1.  DynamoDB를 사용하면 온디맨드 및 프로비저닝이라는 두 용량 모드를 지정할 수 있습니다. 다양한 워크로드를 고려하여 언제든지 모드를 전환하고 프로비저닝 모드에서 할당된 용량을 늘릴 수 있습니다. 

1.  워크로드에 읽기 또는 쓰기 작업이 많습니까?  

   1.  읽기 오프로드(읽기 전용 복제본, 캐싱 등)에 사용할 수 있는 솔루션은 무엇입니까?  

      1.  DynamoDB 테이블의 경우 캐싱을 위해 DAX를 사용하여 읽기를 오프로드할 수 있습니다. 

      1.  관계형 데이터베이스의 경우 ElastiCache for Redis 클러스터를 생성하고 캐시에서 먼저 읽으며 요청한 항목이 없으면 데이터베이스로 폴백하도록 애플리케이션을 구성할 수 있습니다. 

      1.  Amazon RDS, Aurora 등 관계형 데이터베이스와 Neptune, Amazon DocumentDB 등 프로비저닝된 NoSQL 데이터베이스는 모두 읽기 전용 복제본을 추가하여 워크로드의 읽기 부분을 오프로드할 수 있도록 지원합니다. 

      1.  DynamoDB와 같은 서버리스 데이터베이스는 자동으로 크기가 조정됩니다. 워크로드를 처리하기에 충분한 읽기 용량 단위(RCU)가 프로비저닝되었는지 확인합니다. 

   1.  쓰기 확장(파티션 키 샤딩, 대기열 추가 등)에 사용할 수 있는 솔루션은 무엇입니까? 

      1.  관계형 데이터베이스의 경우 인스턴스 크기를 늘려 확장된 워크로드를 수용하거나 프로비저닝된 IOPS를 늘려 기본 스토리지에 대한 처리량(throughput)을 증대할 수 있습니다. 
         +  데이터베이스에 직접 쓰는 대신 데이터베이스 앞에 대기열을 적용할 수도 있습니다. 이 패턴을 사용하면 데이터베이스에서 수집 정보를 분리하고 흐름 속도를 제어하여 데이터베이스가 과부하되지 않도록 할 수 있습니다.  
         +  단기간 트랜잭션을 많이 만들지 않고 쓰기 요청을 일괄 처리하면 쓰기 볼륨이 많은 관계형 데이터베이스의 처리량(throughput)을 향상시킬 수 있습니다. 

      1.  DynamoDB와 같은 서버리스 데이터베이스는 자동으로 쓰기 처리량(throughput)을 확장하거나 용량 모드에 따라 프로비저닝된 쓰기 용량 단위(WCU)를 조정하여 확장할 수 있습니다.  
         +  그러나 지정된 파티션 키에 대한 처리량 한계에 도달한 경우에도 *핫* 파티션과 관련된 문제가 발생할 수 있습니다. 이 문제는 보다 고르게 분산된 파티션 키를 선택하거나 파티션 키를 쓰기 샤딩하여 해결할 수 있습니다.  

1.  현재 또는 예상되는 초당 최대 트랜잭션(TPS)은 얼마입니까? 이 트래픽 볼륨과 이 볼륨 \$1X%를 통해 테스트하여 확장 특성을 이해합니다. 

   1.  PostgreSQL용 pg\$1bench와 같은 기본 도구를 사용하여 데이터베이스를 스트레스 테스트하고 병목 현상 및 확장 특성을 이해할 수 있습니다. 

   1.  프로덕션과 유사한 트래픽을 캡처하여 실제 상황뿐만 아니라 합성 워크로드를 시뮬레이션할 수 있도록 반복해야 합니다. 

1.  서버리스 또는 탄력적으로 확장 가능한 컴퓨팅을 사용하는 경우 이 확장이 데이터베이스에 미치는 영향을 테스트합니다. 필요한 경우 연결 관리 또는 풀링을 도입하여 데이터베이스에 미치는 영향을 줄이십시오.  

   1.  RDS 프록시는 Amazon RDS 및 Aurora와 함께 사용하여 데이터베이스에 대한 연결을 관리할 수 있습니다.  

   1.  DynamoDB와 같은 서버리스 데이터베이스에는 연계된 연결이 없으니, 프로비저닝된 용량 및 자동 확장 정책을 고려하여 로드 급증을 처리합니다. 

1.  로드를 예측할 수 있습니까? 로드가 급증하는 경우가 있거나 비활성 기간이 있습니까? 

   1.  비활성 기간이 있는 경우 해당 기간에 프로비저닝된 용량 또는 인스턴스 크기를 축소하는 것이 좋습니다. Aurora Serverless V2는 로드를 기반으로 자동 스케일 업 및 스케일 다운됩니다. 

   1.  비 프로덕션 인스턴스의 경우 업무 시간 외에 이러한 인스턴스를 일시 중지하거나 정지하는 것을 고려합니다. 

1.  액세스 패턴과 데이터 특성에 따라 데이터 모델을 세분화하고 분리해야 합니까? 

   1.  AWS DMS 또는 AWS SCT를 사용하여 데이터를 다른 서비스로 옮기는 것을 고려합니다. 

## 구현 계획의 작업 수준: 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

이 모범 사례를 적용하려면 현재 데이터 특성과 지표를 알고 있어야 합니다. 이러한 지표를 수집하고 기준선을 설정한 다음 해당 지표를 사용하여 이상적인 데이터베이스 구성 옵션을 식별하는 작업에는 *낮은* 수준부터 *중간 수준의* 노력이 필요합니다. 이는 로드 테스트 및 실험을 통해 가장 효과적으로 검증됩니다. 

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

 **관련 문서:** 
+  [AWS를 사용한 클라우드 데이터베이스 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 데이터베이스 캐싱 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 모범 사례 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 성능 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10가지 성능 향상 팁 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 모범 사례 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 모범 사례](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **관련 동영상:** 
+  [AWS purpose-built databases(DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [Amazon Aurora storage demystified: How it all works(DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns(DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **관련 예시:** 
+  [Amazon DynamoDB 예시](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [AWS 데이터베이스 마이그레이션 샘플](https://github.com/aws-samples/aws-database-migration-samples) 
+  [데이터베이스 현대화 워크숍](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amazon RDS for Postgress DB에서 파라미터를 사용한 작업](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 데이터베이스 성능 지표 수집 및 기록
<a name="perf_right_database_solution_collect_metrics"></a>

 데이터 관리 시스템의 성능을 이해하려면 관련 지표를 추적해야 합니다. 이러한 지표를 통해 데이터 관리 리소스를 최적화하고, 워크로드 요구 사항을 충족하며, 워크로드의 성능을 명확하게 한눈에 파악할 수 있습니다. 데이터베이스 성능과 관련된 성능 측정값을 기록하는 도구, 라이브러리 및 시스템을 사용합니다. 

 

 데이터베이스가 호스팅되는 시스템과 관련된 지표(예: CPU, 스토리지, 메모리, IOPS)와 데이터 자체에 액세스하기 위한 지표(예: 초당 트랜잭션, 쿼리 속도, 응답 시간, 오류)가 있습니다. 모든 지원 또는 운영 직원이 이러한 지표에 쉽게 액세스할 수 있어야 하며, 지표에 추세와 이상 징후, 병목 현상을 식별할 수 있는 충분한 기록이 남겨져 있어야 합니다. 

 

 **원하는 결과:** 데이터베이스 워크로드의 성능을 모니터링하려면 일정 기간에 걸쳐 여러 성능 지표를 기록해야 합니다. 이를 통해 이상 징후를 탐지할 수 있을뿐더러 비즈니스 지표를 기준으로 성능을 측정하여 워크로드 요구 사항을 충족하는지 확인할 수 있습니다. 

 **일반적인 안티 패턴:** 
+  지표에 대해 수동 로그 파일 검색만 사용합니다. 
+  팀에서 사용하는 내부 도구에만 지표를 게시하고 워크로드를 종합적으로 바라보고 있지 않습니다. 
+  선택한 모니터링 소프트웨어에서 기록한 기본 지표만 사용합니다. 
+  문제가 발생한 경우에만 지표를 검토합니다. 
+  시스템 수준 지표만 모니터링하며 데이터 액세스나 사용량 지표는 캡처하지 않습니다. 

 **이 모범 사례 수립의 이점:** 성능 기준선을 설정하면 워크로드의 정상적인 동작과 요구 사항을 이해하는 데 도움이 됩니다. 비정상적인 패턴을 더 빨리 식별하고 디버깅할 수 있어 데이터베이스의 성능과 신뢰성이 향상됩니다. 성능 저하 없이 최적의 비용을 보장하도록 데이터베이스 용량을 구성할 수 있습니다. 

 **이 모범 사례가 수립되지 않을 경우 노출되는 위험의 수준:** 높음 
+  정상 상태와 정상 성능 수준을 구분하지 못하면 문제를 식별하고 의사 결정을 내리는 데 어려움을 겪을 수 있습니다. 
+  잠재적인 비용 절감 효과가 나타나지 않을 수 있습니다. 
+  신뢰성 또는 성능 저하를 초래할 수 있는 성장 패턴이 식별되지 않습니다. 

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

 데이터베이스 관련 지표를 식별, 수집 및 집계하고 상관 관계를 지정하십시오. 지표에는 데이터베이스를 지원하는 기본 시스템과 데이터베이스 지표가 모두 포함되어야 합니다. 기본 시스템 지표에는 CPU 활용률, 메모리, 사용 가능한 디스크 스토리지, 디스크 I/O, 네트워크 인바운드 및 아웃바운드 지표가 포함될 수 있습니다. 데이터베이스 지표는 초당 트랜잭션, 상위 쿼리, 평균 쿼리 속도, 응답 시간, 인덱스 사용량, 테이블 잠금, 쿼리 시간 초과 및 열린 연결 수로 구성 가능합니다. 이 데이터는 워크로드의 성능과 데이터베이스 솔루션의 사용 방법을 이해하는 데 중요합니다. 이러한 지표를 데이터 중심 전략에 포함시켜 워크로드의 리소스를 조정하고 최적화할 수 있습니다.  

 **구현 단계:** 

1.  어떤 데이터베이스 지표를 추적해야 합니까? 

   1.  [Amazon RDS 모니터링 지표](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [성능 개선 도우미를 사용한 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [향상된 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [DynamoDB 지표](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [DynamoDB DAX 모니터링](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [MemoryDB 모니터링](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [Amazon Redshift 모니터링](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [시계열 지표 및 차원](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Aurora용 클러스터 수준 지표](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [Amazon Keyspaces 모니터링](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [Amazon Neptune 모니터링](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  데이터베이스 모니터링을 통해 운영 성능 이상 문제를 감지하는 기계 학습 솔루션의 이점을 얻을 수 있습니까? 

   1.  [Amazon DevOps Guru for Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) 에서는 성능 문제에 대한 가시성을 제공하고 권장 수정 조치를 제안합니다. 

1.  SQL 사용과 관련해서 애플리케이션 수준 세부 정보가 필요합니까? 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) 에서는 애플리케이션으로 계측하여 인사이트를 얻고, 단일 쿼리의 모든 데이터 포인트를 정리할 수 있습니다. 

1.  현재 승인되어 사용 중인 로깅 및 모니터링 솔루션이 있습니까? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 는 아키텍처의 리소스 전반에서 지표를 수집할 수 있습니다. 또한 사용자 지정 지표를 수집하고 게시하여 비즈니스 또는 파생 지표를 파악할 수도 있습니다. CloudWatch 또는 타사 솔루션을 사용하여 임계값 위반 시점을 나타내는 경보를 설정합니다. 

1.  보안 및 운영 목표에 맞게 데이터 보존 정책을 식별하고 구성했습니까? 

   1.  [CloudWatch 지표용 기본 데이터 보존](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs용 기본 데이터 보존](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **구현 계획의 작업 수준: **이 경우에는 *보통* 수준의 노력을 들여 모든 데이터베이스 리소스에서 지표를 식별, 추적, 수집 및 집계하고 상관 관계를 지정할 수 있습니다. 

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

 **관련 문서:** 
+ [AWS 데이터베이스 캐싱 ](https://aws.amazon.com/caching/database-caching/) 
+ [ Amazon Athena 10가지 성능 향상 팁 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Amazon Aurora 모범 사례 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Amazon DynamoDB 모범 사례 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 모범 사례 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 성능 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [AWS를 사용한 클라우드 데이터베이스 ](https://aws.amazon.com/products/databases/) 
+  [Amazon RDS 성능 개선 도우미](https://aws.amazon.com/rds/performance-insights/) 

 **관련 동영상:** 
+ [AWS purpose-built databases(DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works(DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [Amazon DynamoDB deep dive: Advanced design patterns(DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **관련 예시:** 
+  [레벨 100: CloudWatch 대시보드를 통한 모니터링](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [AWS 데이터 모으기 지표 수집 프레임워크](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Amazon RDS 모니터링 워크숍](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 액세스 패턴을 기준으로 데이터 스토리지 선택
<a name="perf_right_database_solution_access_patterns"></a>

워크로드의 액세스 패턴과 애플리케이션의 요구 사항을 바탕으로 사용할 최적의 데이터 서비스와 기술을 결정합니다. 

 **원하는 결과:** 식별되어 문서화된 데이터 액세스 패턴을 기반으로 데이터 스토리지를 선택했습니다. 여기에는 가장 일반적인 읽기, 쓰기 및 삭제 쿼리, 필요에 따른 계산 및 집계 필요성, 데이터 복잡성, 데이터 상호 종속성 및 필수 일관성 요구 사항이 포함될 수 있습니다. 

 **일반적인 안티 패턴:** 
+ 운영 관리를 간소화하기 위해 데이터베이스 엔진을 하나만 선택합니다.
+  시간이 지나면 데이터 액세스 패턴이 일관되게 유지될 것이라고 가정합니다. 
+  애플리케이션에 복잡한 트랜잭션, 롤백 및 일관성 로직을 구현합니다. 
+  데이터베이스가 높은 트래픽 버스트를 지원하도록 구성되어 있어 데이터베이스 리소스가 대부분의 시간 동안 유휴 상태로 유지됩니다. 
+  트랜잭션 및 분석 용도로 공유 데이터베이스를 사용합니다. 

 **이 모범 사례 수립의 이점:** 액세스 패턴을 기반으로 데이터 스토리지를 선택하고 최적화하면 개발 복잡성을 줄이고 성능 기회를 최적화하는 데 도움이 됩니다. 읽기 전용 복제본, 글로벌 테이블, 데이터 파티셔닝 및 캐싱을 사용해야 하는 시기를 파악하면 워크로드 요구 사항에 따라 운영 오버헤드를 줄이고 규모를 확장할 수 있습니다. 

 **이 모범 사례를 따르지 않을 경우 노출되는 위험의 수준:** 중간 

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

데이터 액세스 패턴을 식별하고 평가하여 올바른 스토리지 구성을 선택하세요. 각 데이터베이스 솔루션에는 스토리지 솔루션을 구성하고 최적화하는 데 사용하는 옵션이 있습니다. 수집된 지표와 로그로 옵션을 실험하여 최적의 구성을 찾을 수 있습니다. 다음 테이블에서 데이터베이스 서비스별 스토리지 옵션을 검토하세요.


|  AWS Services  |  Amazon RDS  |  Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Scaling Storage  | Storage can be scaled up manually or configured to scale automatically to a maximum of 64 TiB based on engine types. Provisioned storage cannot be decreased. |  Storage scales automatically up to maximum of 128 TiB and decreases when data is removed. Maximum storage size also depends upon specific Aurora MySQL or Aurora Postgres engine versions.  | Storage automatically scales. Tables are unconstrained in terms of size. | Storage scales automatically up to maximum of 64 TiB. Starting Amazon DocumentDB 4.0 storage can decrease by comparable amounts for data removal through dropping a collection or index. With Amazon DocumentDB 3.6 allocated space remains same and free space is reused when data volume increases. |  Storage is in-memory, tied to instance type or count.  |  Storage scales automatically can grow up to 128 TiB (or 64 TiB in few Regions). Upon data removal from, total allocated space remains same and is reused in the future.  | Organizes your time series data to optimize query processing and reduce storage costs. Retention period can be configured through in-memory and magnetic tiers. | Scales table storage up and down automatically as your application writes, updates, and deletes data. | Storage automatically scales. Tables are unconstrained in terms of size. | 

 

 **구현 단계:** 

1.  트랜잭션, 원자성, 일관성, 격리, 내구성(ACID) 규정 준수 및 일관된 읽기 요구 사항을 이해합니다. 모든 데이터베이스가 이를 지원하지는 않으며, 대부분의 NoSQL 데이터베이스는 최종 정합성 모델을 제공합니다. 

1.  최적의 스토리지 솔루션을 식별하려면 글로벌 분산 애플리케이션의 트래픽 패턴, 지연 시간 및 액세스 요구 사항을 고려해야 합니다. 

1.  쿼리 패턴, 무작위 액세스 패턴 및 일회성 쿼리를 분석합니다. 텍스트 및 자연어 처리, 시계열 및 그래프에 대한 고도로 전문화된 쿼리 기능을 중심으로 한 고려 사항도 염두에 두어야 합니다. 

1.  예상되는 데이터 및 트래픽 증가를 식별하고 문서화하세요. 

   1.  Amazon RDS 및 Aurora에서는 문서화된 한도까지 스토리지 자동 확장을 지원합니다. 이 한도를 넘어서는 경우 데이터를 아카이브하고, 분석을 위해 과거 데이터를 집계하거나, 샤딩을 통해 수평으로 확장할 수 있도록 오래된 데이터는 Amazon S3(으)로 이전하는 것을 고려하세요. 

   1.  DynamoDB 및 Amazon S3에서는 거의 무제한에 가까운 스토리지 볼륨으로 자동 확장됩니다. 

   1.  EC2에서 실행 중인 Amazon RDS 인스턴스와 데이터베이스의 크기는 수동으로 조정할 수 있으며, EC2 인스턴스에는 나중에 새 EBS 볼륨을 추가하여 추가 스토리지로 활용할 수 있습니다.  

   1.  인스턴스 유형은 활동 변화에 따라 변경될 수 있습니다. 예를 들어, 테스트 과정에서 더 작은 인스턴스로 시작했다가 서비스에 대한 프로덕션 트래픽을 수신하기 시작할 때 인스턴스를 확장하는 것도 가능합니다. Aurora Serverless V2는 로드 변화에 따라 자동으로 확장됩니다.  

1. 정상 성능과 최고 성능(초당 트랜잭션(TPS) 및 초당 쿼리(QPS)), 일관성(ACID 및 최종 일관성)에 대한 요구 사항 기준치를 정합니다.

1.  솔루션 배포 측면과 데이터베이스 액세스 요구 사항(글로벌 복제본, 다중 AZ, 읽기 전용 복제본, 다중 쓰기 노드 등)을 문서화합니다. 

 **구현 계획의 작업 수준:** 낮음. 데이터 관리 솔루션에 대한 로그나 지표가 없는 경우 데이터 액세스 패턴을 식별하고 문서화하기 전에 이를 생성해야 합니다. 데이터 액세스 패턴을 파악하면 큰 어려움 없이 데이터 스토리지를 선택하고 구성할 수 있습니다. 

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

 **관련 문서:** 
+ [AWS의 클라우드 데이터베이스 ](https://aws.amazon.com/products/databases/)
+ [ Amazon RDS DB 인스턴스의 스토리지를 사용한 작업 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html)
+ [ Amazon DocumentDB 스토리지 ](https://docs.aws.amazon.com/documentdb/latest/developerguide/how-it-works.html#how-it-works.storage)
+ [AWS 데이터베이스 캐싱 ](https://aws.amazon.com/caching/database-caching/)
+ [ Amazon Timestream 스토리지 ](https://docs.aws.amazon.com/timestream/latest/developerguide/storage.html)
+ [ Amazon Keyspaces의 스토리지 ](https://docs.aws.amazon.com/keyspaces/latest/devguide/Storage.html)
+ [ Amazon ElastiCache FAQ ](https://aws.amazon.com/elasticache/faqs/)
+ [ Amazon Neptune 스토리지, 신뢰성 및 가용성 ](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-storage.html)
+ [Amazon Aurora 모범 사례](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Amazon DynamoDB 모범 사례 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon RDS 스토리지 유형](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 
+ [ Amazon RDS 인스턴스 클래스의 하드웨어 사양 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Types)
+ [ Aurora 스토리지 한도 ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Limits.html#RDS_Limits.FileSize.Aurora)

 **관련 동영상:** 
+ [AWS 목적별 데이터베이스(DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora 스토리지 상세 설명: 작동 방식(DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB 심층 분석: 고급 설계 패턴(DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **관련 예시:** 
+  [AWS에서의 분산 부하 테스트로 실험 및 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 액세스 패턴 및 지표를 기준으로 데이터 스토리지 최적화
<a name="perf_right_database_solution_optimize_metrics"></a>

 성능을 최대한 높이려면 데이터 저장 또는 쿼리 방식을 최적화하는 성능 특성과 액세스 패턴을 사용합니다. 인덱싱, 키 분산, 데이터 웨어하우스 설계, 캐싱 전략 등의 최적화가 시스템 성능이나 전반적인 효율성에 미치는 영향을 측정합니다. 

 **일반적인 안티 패턴:** 
+  지표에 대해 수동 로그 파일 검색만 사용합니다. 
+  지표를 내부 도구에만 게시합니다. 

 **이 모범 사례 정립의 이점:** 워크로드에 필요한 지표가 충족되는지 확인하려면 읽기 및 쓰기와 관련된 데이터베이스 성능 지표를 모니터링해야 합니다. 이 데이터를 사용하여 데이터 스토리지 계층에 대한 읽기 및 쓰기 모두에 대한 새로운 최적화를 추가할 수 있습니다. 

 **이 모범 사례를 정립되지 않을 경우 노출되는 위험의 수준:** 낮음 

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

 지표 및 패턴을 기준으로 데이터 스토리지 최적화: 보고된 지표를 사용하여 워크로드에서 성능이 낮은 영역을 식별하고 데이터베이스 구성 요소를 최적화합니다. 각 데이터베이스 시스템에서 평가해야 하는 성능 관련 특성(예: 데이터를 캐싱/인덱싱하거나 여러 시스템으로 분산하는 방법)은 서로 다릅니다. 최적화의 영향을 측정합니다. 

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

 **관련 문서:** 
+  [AWS 데이터베이스 캐싱](https://aws.amazon.com/caching/database-caching/) 
+  [Amazon Athena 10가지 성능 향상 팁](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Amazon Aurora 모범 사례](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Amazon DynamoDB 모범 사례](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon Redshift Spectrum 모범 사례](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Amazon Redshift 성능](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS를 사용한 클라우드 데이터베이스](https://aws.amazon.com/products/databases/) 
+  [DevOps Guru for RDS로 성능 이상 분석](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [DynamoDB용 읽기/쓰기 용량 모드](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **관련 동영상:** 
+  [AWS purpose-built databases(DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works(DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns(DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **관련 예시:** 
+  [Amazon DynamoDB 실습](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 

# PERF 5  네트워킹 솔루션을 구성하려면 어떻게 해야 합니까?
<a name="perf-05"></a>

 워크로드에 대한 최적의 네트워크 솔루션은 지연 시간, 처리량 요구 사항, 지터 및 대역폭에 따라 다릅니다. 위치 옵션은 사용자 또는 온프레미스 리소스와 같은 물리적 제약에 따라 결정됩니다. 엣지 로케이션 또는 리소스 배치를 통해 이러한 제약을 상쇄할 수 있습니다. 

**Topics**
+ [PERF05-BP01 네트워킹이 성능에 미치는 영향 파악](perf_select_network_understand_impact.md)
+ [PERF05-BP02 사용 가능한 네트워킹 기능 평가](perf_select_network_evaluate_features.md)
+ [PERF05-BP03 하이브리드 워크로드에 적절한 규모의 전용 연결 또는 VPN 선택](perf_select_network_hybrid.md)
+ [PERF05-BP04 로드 밸런싱 및 암호화 오프로딩 활용](perf_select_network_encryption_offload.md)
+ [PERF05-BP05 성능을 개선할 수 있는 네트워크 프로토콜 선택](perf_select_network_protocols.md)
+ [PERF05-BP06 네트워크 요구 사항에 따라 워크로드의 위치 선택](perf_select_network_location.md)
+ [PERF05-BP07 지표를 기준으로 네트워크 구성 최적화](perf_select_network_optimize.md)

# PERF05-BP01 네트워킹이 성능에 미치는 영향 파악
<a name="perf_select_network_understand_impact"></a>

 네트워크 관련 결정 사항이 워크로드 성능에 영향을 주는 방식을 분석하고 파악합니다. 네트워크는 애플리케이션 구성 요소, 클라우드 서비스, 엣지 네트워크 및 온프레미스 데이터 간의 연결을 담당하므로, 워크로드 성능에 큰 영향을 미칠 수 있습니다. 사용자 경험은 워크로드 성능 외에 네트워크 지연 시간, 대역폭, 프로토콜, 위치, 네트워크 정체, 지터, 처리량(throughput) 및 라우팅 규칙에도 영향을 받습니다. 

 **원하는 결과:** 지연 시간, 패킷 크기, 라우팅 규칙, 프로토콜 및 지원 트래픽 패턴을 포함한 워크로드의 네트워킹 요구 사항 목록을 문서화합니다. 사용 가능한 네트워킹 솔루션을 검토하고 워크로드 네트워킹 특성을 충족하는 서비스를 파악합니다. 클라우드 기반 네트워크는 빠르게 재구축될 수 있으므로 성능 효율성을 개선하려면 네트워크 아키텍처를 지속적으로 변경해야 합니다. 

 **일반적인 안티 패턴:** 
+  모든 트래픽이 기존 데이터 센터를 통과합니다. 
+  실제 사용 요구 사항을 파악하지 않고 Direct Connect 세션을 초과 구축합니다. 
+  네트워킹 솔루션을 정의할 때 워크로드 특성과 암호화 오버헤드를 고려하지 않습니다. 
+  클라우드의 네트워킹 솔루션에 온프레미스 개념과 전략을 적용합니다. 

 **이 모범 사례 수립의 이점:** 네트워킹이 워크로드 성능에 미치는 영향을 이해하면 잠재적인 병목 현상을 식별하고, 사용자 경험을 개선하고, 신뢰성을 높이고, 워크로드 변화에 따라 운영 유지 관리 작업을 줄이는 데 도움이 됩니다. 

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

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

 워크로드의 중요한 네트워크 성능 지표를 식별하고 해당 네트워킹 특성을 파악합니다. 벤치마킹 또는 로드 테스트를 사용하여 데이터 기반 접근 방식의 일부로 요구 사항을 정의하고 문서화합니다. 이 데이터를 사용하여 네트워킹 솔루션이 제한되는 위치를 식별하고, 워크로드를 개선하는 구성 옵션을 검사합니다. 사용 가능한 클라우드 네이티브 네트워킹 기능과 옵션 및 이러한 기능과 옵션이 요구 사항을 기준으로 워크로드 성능에 미치는 영향을 파악합니다. 각 네트워킹 기능에는 장단점이 있으며, 워크로드 특성에 맞게 구성하고 필요에 따라 확장할 수 있습니다. 

 **구현 단계:** 

1.  네트워킹 성능 요구 사항을 정의하고 문서화합니다. 

   1.  네트워크 지연 시간, 대역폭, 프로토콜, 위치, 트래픽 패턴(급증 및 빈도), 처리량(throughput), 암호화, 검사 및 라우팅 규칙과 같은 지표가 포함됩니다. 

1.  기본 네트워킹 특성을 파악합니다. 

   1.  [VPC 흐름 로그 ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

   1.  [AWS Transit Gateway 지표](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-cloudwatch-metrics.html) 

   1.  [AWS PrivateLink 지표](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-cloudwatch-metrics.html) 

1.  애플리케이션 네트워킹 특성을 파악합니다. 

   1.  [탄력적 네트워크 어댑터](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html) 

   1.  [AWS App Mesh 지표](https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy-metrics.html) 

   1.  [Amazon API Gateway 지표](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html) 

1.  엣지 네트워킹 특성을 파악합니다. 

   1.  [Amazon CloudFront 지표](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/viewing-cloudfront-metrics.html) 

   1.  [Amazon Route 53 지표](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/monitoring-cloudwatch.html) 

   1.  [AWS Global Accelerator 지표](https://docs.aws.amazon.com/global-accelerator/latest/dg/cloudwatch-monitoring.html) 

1.  하이브리드 네트워킹 특성을 파악합니다. 

   1.  [Direct Connect 지표](https://docs.aws.amazon.com/directconnect/latest/UserGuide/monitoring-cloudwatch.html) 

   1.  [AWS Site-to-Site VPN 지표](https://docs.aws.amazon.com/vpn/latest/s2svpn/monitoring-cloudwatch-vpn.html) 

   1.  [AWS Client VPN 지표](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/monitoring-cloudwatch.html) 

   1.  [AWS 클라우드 WAN 지표](https://docs.aws.amazon.com/vpc/latest/cloudwan/cloudwan-cloudwatch-metrics.html) 

1.  보안 네트워킹 특성을 캡처합니다. 

   1.  [AWS Shield, WAF, Network Firewall 지표](https://docs.aws.amazon.com/waf/latest/developerguide/monitoring-cloudwatch.html) 

1.  추적 도구로 엔드 투 엔드 성능 지표를 파악합니다. 

   1.  [AWS X-Ray](https://aws.amazon.com/xray/) 

   1.  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 

1.  네트워크 성능을 벤치마크하고 테스트합니다. 

   1.  [벤치마크](https://aws.amazon.com/premiumsupport/knowledge-center/network-throughput-benchmark-linux-ec2/) 네트워크 처리량(throughput): 인스턴스가 동일한 VPC에 있을 때 EC2 네트워크 성능에 영향을 미칠 수 있는 몇 가지 요인입니다. 동일한 VPC에 있는 EC2 Linux 인스턴스 간의 네트워크 대역폭을 측정합니다. 

   1.  로드 테스트를 [수행하여](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 네트워킹 솔루션 및 옵션을 실험합니다. 

 **구현 계획의 작업 수준: **보통 수준의 *노력을 들여* 워크로드 네트워킹 요구 사항, 옵션 및 사용 가능한 솔루션을 문서화합니다. 

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

 **관련 문서:** 
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+ [Linux 기반 EC2 향상된 네트워킹 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+ [Windows의 EC2 향상된 네트워킹 ](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+ [EC2 배치 그룹 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+ [Linux 인스턴스에서 ENA(Elastic Network Adapter)를 사용하여 향상된 네트워킹 활성화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+ [Network Load Balancer ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+ [AWS의 네트워킹 제품](https://aws.amazon.com/products/networking/) 
+  [Transit Gateway ](https://docs.aws.amazon.com/vpc/latest/tgw)
+ [Amazon Route 53에서 지연 시간 기반 라우팅으로 전환 ](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+ [VPC 엔드포인트 ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+ [VPC 흐름 로그 ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

 **관련 동영상:** 
+ [AWS 및 하이브리드 AWS 네트워크 아키텍처에 대한 연결성(NET317-R1) ](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+ [Optimizing Network Performance for Amazon EC2 Instances(CMP308-R1) ](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+  [애플리케이션의 글로벌 네트워크 성능 향상](https://youtu.be/vNIALfLTW9M) 
+  [EC2 인스턴스 및 성능 최적화 모범 사례](https://youtu.be/W0PKclqP3U0) 
+  [Amazon EC2 인스턴스의 네트워크 성능 최적화](https://youtu.be/DWiwuYtIgu0) 
+  [Well-Architected Framework의 네트워킹 모범 사례 및 팁](https://youtu.be/wOMNpG49BeM) 
+  [대규모 마이그레이션의 AWS 네트워킹 모범 사례](https://youtu.be/qCQvwLBjcbs) 

 **관련 예시:** 
+  [AWS Transit Gateway 및 확장 가능한 보안 솔루션](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 네트워킹 워크숍](https://networking.workshop.aws/) 

# PERF05-BP02 사용 가능한 네트워킹 기능 평가
<a name="perf_select_network_evaluate_features"></a>

클라우드에서 성능을 높일 수 있는 네트워킹 기능을 평가합니다. 테스트, 지표 및 분석을 통해 이러한 기능의 영향을 측정할 수 있습니다. 예를 들어 지연 시간, 패킷 손실 또는 지터를 줄이는 데 사용할 수 있는 네트워크 수준 기능을 활용합니다. 

많은 서비스가 성능 개선을 위해 개발되며 다른 서비스는 일반적으로 네트워크 성능을 최적화하기 위한 기능을 제공합니다. AWS Global Accelerator 및 Amazon CloudFront 등과 같은 서비스는 성능을 개선하기 위해 개발된 반면에 대부분의 다른 서비스는 네트워크 트래픽을 최적화하기 위한 제품 기능을 갖추고 있습니다. 그러므로 워크로드 성능을 개선하는 서비스 기능(예: EC2 인스턴스 네트워크 기능, 강화된 네트워킹 인스턴스 유형, Amazon EBS 최적화 인스턴스, Amazon S3 Transfer Acceleration, CloudFront)을 고려해야 합니다. 

**원하는 결과:** 워크로드 내 구성 요소 인벤토리를 문서화했으며 구성 요소별로 어떤 네트워킹 구성이 성능 요구 사항을 충족하도록 돕는지 파악했습니다. 네트워킹 기능을 평가한 후 성능 지표를 실험 및 측정하여 사용 가능한 기능을 사용하는 방법을 파악했습니다. 

**일반적인 안티 패턴:** 
+ 모든 워크로드를 최종 사용자에게 가까운 AWS 리전이 아니라 본사에 가장 가까운 AWS 리전에 저장합니다. 
+ 워크로드 성능 벤치마크에 실패했는데, 실패한 벤치마크를 기준으로 계속해서 워크로드 성능을 평가하고 있습니다.
+ 성능 개선 옵션을 확인하기 위해 서비스 구성을 검토하지 않습니다. 

**이 모범 사례 확립의 이점:** 모든 서비스 기능 및 옵션을 평가하면 워크로드 성능을 개선하고 인프라 비용을 줄이고 워크로드를 유지 관리하는 데 필요한 작업을 줄이며 전반적인 보안 상태를 개선할 수 있습니다. 전 세계에 분산된 AWS 백본을 사용하여 고객에게 최상의 네트워킹 환경을 제공할 수 있습니다. 

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

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

사용 가능한 네트워크 관련 구성 옵션과 이러한 옵션이 워크로드에 미치는 영향을 검토합니다. 성능 최적화에서는 이러한 옵션이 아키텍처와 상호 작용하는 방식과 측정된 성능과 사용자의 체감 성능에 미치는 영향을 파악하는 것이 중요합니다. 

**구현 단계:** 

1. 워크로드 구성 요소 목록을 만듭니다. 

   1.  [AWS 클라우드 WAN](https://aws.amazon.com/cloud-wan/)을 사용하여 조직 네트워크를 구축, 관리 및 모니터링합니다. 

   1. Network Manager를 사용하여 네트워크의 상태를 [파악합니다](https://docs.aws.amazon.com/vpc/latest/tgwnm/what-is-network-manager.html). 기존 구성 관리 데이터베이스(CMDB) 도구를 사용하거나 [AWS Config](https://aws.amazon.com/config/) 등과 같은 도구를 사용하여 워크로드 인벤토리 또는 구성 방식을 생성합니다. 

1. 기존 워크로드인 경우에는 성능 지표의 벤치마크를 식별하고 문서화하여 병목 현상과 개선해야 할 부분에 집중적으로 살펴봅니다. 성능 관련 네트워킹 지표는 비즈니스 요구 사항 및 워크로드 특성을 기준으로 워크로드에 따라 다릅니다. 무엇보다 대역폭, 지연 시간, 패킷 손실, 지터 및 재전송 등과 같은 지표가 워크로드 검토에 중요할 수 있습니다. 

1. 새로운 워크로드인 경우 [로드 테스트](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 를 수행하여 성능 병목 현상을 파악합니다. 

1. 파악한 성능 병목 현상에 대해 솔루션의 구성 옵션을 검토하여 성능 개선 기회를 파악합니다. 

1. 네트워크 경로 또는 루트를 모르는 경우 [Network Access Analyzer](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-vaa.html) 를 사용하여 파악합니다. 

1. 지연 시간을 더욱 단축할 수 있는 네트워크 프로토콜을 검토합니다.
   + [PERF05-BP05 성능을 개선할 수 있는 네트워크 프로토콜 선택](perf_select_network_protocols.md) 

1. 여러 위치에서 AWS Site-to-Site VPN을 사용하여 AWS 리전에 연결하는 경우에는 [가속화된 Site-to-Site VPN 연결](https://docs.aws.amazon.com/vpn/latest/s2svpn/accelerated-vpn.html) 을 살펴보고 네트워킹 성능을 개선할 수 있는 기회가 있는지 검토합니다.

1. 워크로드 트래픽이 여러 계정에 분산된 경우 네트워크 토폴로지 및 서비스를 평가하여 지연 시간을 단축합니다. 
   + 여러 계정을 연결할 때 [VPC 피어링](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) 및 [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/) 사이 운영 및 성능 균형을 평가합니다. AWS Transit Gateway에서는 AWS Site-to-Site VPN 처리량이 단일 [IPsec 최대 한도](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/) 를 초과한 경우 다중 경로를 사용하여 지원합니다. Amazon VPC과(와) AWS Transit Gateway 간 트래픽은 프라이빗 AWS 네트워크에서 유지되어 인터넷에 노출되지 않습니다. AWS Transit Gateway은(는) 수천 개의 AWS 계정 간에 걸쳐 있고 온프레미스 네트워크에 연결되는 모든 VPC를 상호 연결하는 방식을 간소화합니다. AWS Transit Gateway은(는) Resource Access Manager를 사용하여 [여러 계정 간에 공유합니다](https://aws.amazon.com/ram/). 글로벌 네트워크 트래픽의 상태를 파악하기 위해 [Network Manager](https://aws.amazon.com/transit-gateway/network-manager/) 를 사용하여 네트워크 지표를 중앙에서 확인할 수 있습니다. 

1. 위치를 검토하고 사용자와 워크로드 간 거리를 최소화합니다.

   1. [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 은(는) Amazon Web Services 글로벌 네트워크 인프라를 사용하여 사용자 트래픽의 성능을 최대 60%까지 개선하는 네트워킹 서비스입니다. 인터넷 연결이 혼잡한 경우 AWS Global Accelerator은(는) 애플리케이션 경로를 최적화하여 패킷 손실, 지터 및 지연 시간을 지속적으로 줄입니다. DNS 구성을 업데이트하거나 클라이언트용 애플리케이션을 변경하지 않고도 가용 영역 또는 AWS 리전 간에 엔드포인트 이동을 간소화하는 고정 IP 주소를 제공합니다. 

   1. [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 은(는) 워크로드 콘텐츠 전송 성능 및 지연 시간을 전역적으로 개선할 수 있습니다. CloudFront은(는) 콘텐츠를 캐시하고 최종 사용자에 대한 지연 시간을 단축할 수 있는 접속 지점을 전 세계에 410개 이상 보유하고 있습니다. 

   1. Amazon Route 53은(는) [지연 시간 기반 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-latency.html), [지리적 위치 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geo.html), [지리 근접 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html)및 [IP 기반 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-ipbased.html) 옵션을 제공하여 전 세계 고객을 대상으로 워크로드 성능을 개선할 수 있습니다. 워크로드 트래픽 및 사용자 위치를 검토하여 어떤 라우팅 옵션이 워크로드 성능을 최적화하는지 파악합니다. 

1. 스토리지 IOP를 개선하기 위한 추가 Amazon S3 기능을 평가합니다. 

   1.  [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration/) 은 외부 사용자가 CloudFront의 네트워킹 최적화 이점을 활용하여 Amazon S3에 데이터를 업로드하도록 하는 기능입니다. 이렇게 하면 AWS 클라우드 전용 연결을 사용할 수 없는 원격 위치에서 대량의 데이터를 전송할 수 있습니다. 

   1.  [Amazon S3 다중 리전 액세스 포인트](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPoints.html) 는 콘텐츠를 여러 리전으로 복제하고 액세스 포인트 하나를 제공하여 워크로드를 간소화합니다. 다중 리전 액세스 포인트를 사용하는 경우 가장 낮은 지연 시간 버킷을 식별하는 서비스로 데이터를 요청하거나 Amazon S3에 데이터를 쓸 수 있습니다. 

1. 컴퓨팅 리소스 네트워크 대역폭을 검토합니다.

   1. EC2 인스턴스, 컨테이너 및 Lambda 함수에서 사용하는 탄력적 네트워크 인터페이스(ENI)는 흐름 기준으로 제한됩니다. 배치 그룹을 검토하여 [EC2 네트워킹 처리량을 최적화할 수 있습니다.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html). 흐름 기준에서 병목 현상을 방지하려면 여러 흐름을 사용하도록 애플리케이션을 설계합니다. 컴퓨팅 관련 네트워크 지표를 모니터링하고 이러한 지표에 대한 가시성을 얻으려면 [CloudWatch 지표](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-network-bandwidth.html) 및 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html)을 사용합니다. `ethtool` 은 ENA 드라이버에 포함되어 있으며 [사용자 지정 지표로](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) CloudWatch에 게시할 수 있는 추가 네트워크 관련 지표를 노출할 수 있습니다. 

   1. 최신 버전의 EC2 인스턴스는 강화된 네트워킹 기능을 활용할 수 있습니다. [N-시리즈 EC2 인스턴스](https://aws.amazon.com/ec2/nitro/)(예: `M5n` 및 `M5dn`)는 4세대 사용자 지정 Nitro card를 활용하여 단일 인스턴스에 최대 100Gbps의 네트워크 처리량을 전달합니다. 이러한 인스턴스는 기본 `M5` 인스턴스에 비해 4배 더 높은 네트워크 대역폭과 패킷 프로세스를 제공하며 네트워크 집약적 애플리케이션에 적합합니다. 

   1. [Amazon Elastic Network Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) (ENA)는 클러스터 배치 그룹 내에서 인스턴스에 대해 [더 나은 처리량을 제공하여 한층 더 최적화합니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html#placement-groups-cluster%23placement-groups-limitations-cluster). 

   1. [Elastic Fabric Adapter](https://aws.amazon.com/hpc/efa/) (EFA)는 AWS에서 높은 수준의 대규모 노드 간 통신이 필요한 워크로드를 실행할 때 사용할 수 있는 Amazon EC2 인스턴스용 네트워크 인터페이스입니다. EFA를 사용하면 MPI(메시지 전달 인터페이스)를 사용하는 HPC(고성능 컴퓨팅) 애플리케이션과 NCCL(NVIDIA Collective Communications Library)을 사용하는 ML(기계 학습) 애플리케이션을 수천 개 CPU 또는 GPU로 확장할 수 있습니다. 

   1. [Amazon EBS 최적화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 인스턴스는 최적화된 구성 스택을 사용하고 Amazon EBS I/O를 늘리기 위해 전용 용량을 추가로 제공합니다. 이 최적화를 수행하면 Amazon EBS I/O와 인스턴스의 기타 트래픽 간에 경합이 최소화되므로 EBS 볼륨의 성능을 최대한 높일 수 있습니다. 

**구현 계획의 작업 수준: **

이 모범 사례를 확립하려면 네트워크 성능에 영향을 미치는 현재 워크로드 구성 요소 옵션을 알아야 합니다. 구성 요소 수집, 네트워크 개선 옵션 평가, 개선 사항 실험, 구현 및 문서화는 작업 수준이 *낮음* 에서 *중간* 입니다. 

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

 **관련 문서:** 
+  [Amazon EBS - 최적화 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 
+  [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Amazon EC2 인스턴스 네트워크 대역폭](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) 
+  [Linux 기반 EC2 향상된 네트워킹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+  [Windows의 EC2 향상된 네트워킹](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+  [EC2 배치 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [Linux 인스턴스에서 ENA(Elastic Network Adapter)를 사용하여 향상된 네트워킹 활성화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+  [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [AWS의 네트워킹 제품](https://aws.amazon.com/products/networking/) 
+  [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+  [Amazon Route 53에서 지연 시간 기반 라우팅으로 전환](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+  [VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+  [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+  [클라우드 CMDB 구축](https://aws.amazon.com/blogs/mt/building-a-cloud-cmdb-on-aws-for-consistent-resource-configuration-in-hybrid-environments/) 
+  [AWS Transit Gateway을(를) 사용하여 VPN 처리량 스케일링](https://aws.amazon.com/blogs/networking-and-content-delivery/scaling-vpn-throughput-using-aws-transit-gateway/) 

 **관련 동영상:** 
+  [Connectivity to AWS and hybrid AWS network architectures(AWS 및 하이브리드 AWS 네트워크 아키텍처에 대한 연결성)(NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs) 
+  [Optimizing Network Performance for Amazon EC2 Instances(CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0) 
+  [AWS Global Accelerator](https://www.youtube.com/watch?v=lAOhr-5Urfk) 

 **관련 예시:** 
+  [AWS Transit Gateway 및 확장 가능한 보안 솔루션](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 네트워킹 워크숍](https://networking.workshop.aws/) 

# PERF05-BP03 하이브리드 워크로드에 적절한 규모의 전용 연결 또는 VPN 선택
<a name="perf_select_network_hybrid"></a>

 AWS에서 온프레미스 및 클라우드 리소스를 연결하는 데 공용 네트워크가 필요한 경우 성능 요구 사항을 충족할 수 있는 충분한 대역폭을 확보해야 합니다. 하이브리드 워크로드에 대한 대역폭 및 지연 시간 요구 사항을 예측하세요. 연결 옵션에 대한 크기 요구 사항은 이러한 수치를 바탕으로 결정됩니다. 

 **원하는 결과:** 하이브리드 네트워킹이 필요한 워크로드를 배포할 때 전용 연결 또는 가상 프라이빗 네트워크(VPN)와 같은 여러 연결 구성 옵션을 사용할 수 있습니다. 사용자의 위치와 클라우드 간에 적절한 대역폭 및 암호화 요구 사항이 있는지 확인하면서 각 워크로드에 적합한 연결 유형을 선택합니다. 

 **일반적인 안티 패턴:** 
+ 모든 워크로드 요구 사항(대역폭, 지연 시간, 지터, 암호화 및 트래픽 요구 사항)을 이해하거나 식별하지 못합니다.
+  백업 또는 병렬 연결 옵션은 평가하지 않습니다. 

 **이 모범 사례 확립의 이점:** 적절한 크기의 하이브리드 네트워크 솔루션을 선택하고 구성하면 워크로드의 신뢰성이 향상되고 성능을 높일 기회가 극대화됩니다. 워크로드 요구 사항을 파악하고, 미리 계획하고, 하이브리드 솔루션을 평가하여 비용이 많이 드는 물리적 네트워크 변경과 운영 오버헤드를 최소화하는 동시에 출시 시간을 단축할 수 있습니다. 

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

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

대역폭 요구 사항을 기반으로 하이브리드 네트워킹 아키텍처를 개발합니다. 하이브리드 애플리케이션의 대역폭 및 지연 시간 요구 사항을 추정합니다. 전용 네트워크 연결 또는 인터넷 기반 VPN 사용 간에 적절한 연결 옵션을 고려합니다.

전용 연결은 사설 회선을 통해 네트워크 연결을 설정합니다. 일관된 성능을 달성하면서 고대역폭, 짧은 지연 시간이 필요할 때 적합합니다. VPN 연결은 인터넷을 통해 보안 연결을 설정합니다. 기존 인터넷 연결을 사용하여 암호화된 연결이 필요할 때 적합합니다.

대역폭 요구 사항에 따라 단일 VPN 또는 전용 연결로는 충분하지 않을 수 있으며, 여러 연결에 걸쳐 트래픽 로드 밸런싱을 활성화하도록 하이브리드 설정을 설계해야 합니다. 

 **구현 단계** 

1.  하이브리드 애플리케이션의 대역폭 및 지연 시간 요구 사항을 추정합니다. 

   1.  AWS로 이동하는 기존 앱의 경우 내부 네트워크 모니터링 시스템의 데이터를 활용합니다. 

   1.  모니터링 데이터가 없는 새로운 앱 또는 기존 앱의 경우 제품 소유자에게 문의하여 적절한 성능 지표를 도출하고 우수한 사용자 경험을 제공합니다. 

1.  연결 옵션으로 전용 연결 또는 VPN을 선택합니다. 모든 워크로드 요구 사항(암호화, 대역폭 및 트래픽 요구)을 기반으로 AWS Direct Connect 또는 AWS Site-to-Site VPN(또는 둘 다)을 선택할 수 있습니다. 다음 다이어그램은 적절한 연결 유형을 선택하는 데 도움이 됩니다. 

   1.  전용 연결을 사용하려면 AWS Direct Connect가 필요할 수 있으며, 이는 프라이빗 네트워크 연결이기 때문에 보다 예측 가능하고 일관된 성능을 제공합니다. AWS Direct Connect는 전용 연결 또는 호스팅된 연결을 사용하여 50Mbps에서 100Gbps까지 AWS 환경에 대한 전용 연결을 제공합니다. 이렇게 하면 지연 시간을 관리/제어하고 대역폭을 프로비저닝할 수 있으므로 워크로드를 다른 환경에 효율적으로 연결할 수 있습니다. AWS Direct Connect 파트너를 사용하면 여러 환경에 엔드 투 엔드로 연결할 수 있으며 일관된 성능을 갖춘 확장 네트워크를 제공할 수 있습니다. AWS는 기본 100Gbps, LAG(Link Aggregation Group) 또는 BGP Electocost Multipath(ECMP)를 사용하여 스케일링 Direct Connect 연결 대역폭을 제공합니다. 

   1.  VPN 연결을 생각한다면 AWS 관리형 VPN을 선택하는 것이 좋습니다. AWS Site-to-Site VPN은 IPsec(인터넷 프로토콜 보안) 프로토콜을 지원하는 관리형 VPN 서비스를 제공합니다. VPN 연결이 생성되면 각 VPN 연결에는 고가용성을 위해 두 개의 터널이 포함됩니다. AWS Transit Gateway를 사용하면 여러 VPC 간의 연결성을 단순화하고 단일 VPN 연결을 사용하여 AWS Transit Gateway에 연결된 VPC에 연결할 수 있습니다. 또한 AWS Transit Gateway를 사용하면 여러 VPN 터널에서 ECMP(Equal Cost Multi-Path) 라우팅 지원을 활성화하여 1.25Gbps IPsec VPN 처리량 제한 이상으로 확장할 수 있습니다. 

![\[네트워킹에서 결정론적 성능이 필요한지 여부를 결정할 때 고려해야 하는 옵션을 설명하는 순서도.\]](http://docs.aws.amazon.com/ko_kr/wellarchitected/2023-04-10/framework/images/deterministic-performance-flowchart.png)


 

 **구현 계획의 작업 수준:** 높음. 하이브리드 네트워크에 대한 워크로드 요구 사항을 평가하고 하이브리드 네트워킹 솔루션을 구현하는 데 상당한 노력이 필요합니다. 

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

 **관련 문서:** 
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+ [AWS의 네트워킹 제품](https://aws.amazon.com/products/networking/) 
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+ [Amazon Route 53에서 지연 시간 기반 라우팅으로 전환](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+ [VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+ [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+  [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) 
+  [Building a Scalable and Secure Multi-VPC AWS Network Infrastructure](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/welcome.html)(확장 가능하고 안전한 멀티 VPC AWS 네트워크 인프라 구축) 
+  [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) 
+  [Client VPN](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/what-is.html) 

 **관련 동영상:** 
+ [Connectivity to AWS and hybrid AWS network architectures(NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs)(AWS 및 하이브리드 AWS 네트워크 아키텍처에 대한 연결(NET317-R1)) 
+ [Optimizing Network Performance for Amazon EC2 Instances (CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0)(Amazon EC2 인스턴스의 네트워크 성능 최적화(CMP308-R1)) 
+  [AWS Global Accelerator](https://www.youtube.com/watch?v=lAOhr-5Urfk) 
+  [AWS Direct Connect](https://www.youtube.com/watch?v=DXFooR95BYc&t=6s) 
+  [Transit Gateway Connect](https://www.youtube.com/watch?v=_MPY_LHSKtM&t=491s) 
+  [VPN Solutions](https://www.youtube.com/watch?v=qmKkbuS9gRs)(VPN 솔루션) 
+  [Security with VPN Solutions](https://www.youtube.com/watch?v=FrhVV9nG4UM)(VPN 솔루션을 사용한 보안) 

 **관련 예시:** 
+  [AWS Transit Gateway 및 확장 가능한 보안 솔루션](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 네트워킹 워크숍](https://networking.workshop.aws/) 

# PERF05-BP04 로드 밸런싱 및 암호화 오프로딩 활용
<a name="perf_select_network_encryption_offload"></a>

로드 밸런서를 사용하여 대상 리소스의 성능 효율성을 최적화하고 시스템의 응답성을 개선합니다.

 **원하는 결과:** 트래픽을 처리할 컴퓨팅 리소스의 수를 줄입니다. 대상에서 리소스 사용 불균형이 발생하지 않도록 합니다. 컴퓨팅 집약적인 태스크를 로드 밸런서로 오프로드합니다. 클라우드 탄력성과 유연성을 활용하여 성능을 개선하고 아키텍처를 최적화합니다. 

 **일반적인 안티 패턴:** 
+ 로드 밸런서 유형을 선택할 때 워크로드 요구 사항을 고려하지 않습니다.
+ 성능 최적화 시 로드 밸런서 기능을 활용하지 않습니다.
+  워크로드는 로드 밸런서 없이 인터넷에 직접 노출됩니다. 

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

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

 로드 밸런서는 워크로드의 진입점 역할을 하며 여기에서 컴퓨팅 인스턴스 또는 컨테이너와 같은 백엔드 대상으로 트래픽을 분산합니다. 아키텍처를 최적화하는 첫 번째 단계는 적절한 로드 밸런서 유형을 선택하는 것입니다. 

 먼저 프로토콜(예: TCP, HTTP, TLS 또는 WebSockets), 대상 유형(예: 인스턴스, 컨테이너 또는 서버리스), 애플리케이션 요구 사항(장기간 실행되는 연결, 사용자 인증 또는 고정성 등) 및 배치(예: 리전, 로컬 영역, Outpost 또는 영역 격리)와 같은 워크로드 특성을 나열해 봅니다. 

 적절한 로드 밸런서를 선택한 후 해당 기능을 활용하면 백엔드가 트래픽을 처리하는 데 필요한 노력을 줄일 수 있습니다. 

 예를 들어 Application Load Balancer(ALB)와 Network Load Balancer(NLB)를 모두 사용하면 SSL/TLS 암호화 오프로딩을 수행할 수 있습니다. 이를 통해 대상에서 완료되는 CPU 집약적 TLS 핸드셰이크를 방지하고 인증서 관리를 개선할 수 있습니다. 

 로드 밸런서에서 SSL/TLS 오프로딩을 구성하면 백엔드에 암호화되지 않은 트래픽을 전달하고 백엔드 리소스를 확보하고 클라이언트에 대한 응답 시간을 개선하는 동시에 클라이언트에서 들어오고 나가는 트래픽의 암호화를 담당하게 됩니다. 

 Application Load Balancer도 대상에서 지원할 필요 없이 HTTP2 트래픽을 처리할 수 있습니다. HTTP2가 TCP 연결을 보다 효율적으로 사용하므로 이렇게 간단한 결정이 애플리케이션 응답 시간을 개선할 수 있습니다. 

 로드 밸런서를 활용하면 컨테이너 및 서버리스와 같은 다양한 백엔드 유형에 트래픽을 분산하여 아키텍처를 보다 유연하게 만들 수도 있습니다. 예를 들어 Application Load Balancer는 헤더, 메서드 또는 패턴과 같은 요청 파라미터를 기반으로 트래픽을 다른 대상 그룹으로 전달하는 [리스너 규칙](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html)으로 구성할 수 있습니다. 

 아키텍처를 정의할 때 워크로드 지연 시간 요구 사항도 고려해야 합니다. 예를 들어 지연 시간에 민감한 애플리케이션이 있는 경우 지연 시간이 매우 짧은 Network Load Balancer를 사용하기로 결정할 수 있습니다. 또는 [AWS 로컬 영역](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 또는[AWS Outposts](https://aws.amazon.com/outposts/rack/)에서 Application Load Balancer를 활용하여 워크로드를 고객에게 더 가까이 가져오기로 결정할 수 있습니다. 

 지연 시간에 민감한 워크로드에 대한 또 다른 대응책은 교차 영역 로드 밸런싱입니다. 교차 영역 로드 밸런싱을 활용하면 각 로드 밸런서 노드를 사용하도록 설정된 모든 가용 영역의 등록된 대상에 트래픽을 분산합니다. 이렇게 하면 왕복 지연 시간에 한 자릿수 밀리초가 추가될 수 있지만 가용성이 향상됩니다. 

 마지막으로 ALB와 NLB는 모두 로그 및 지표와 같은 모니터링 리소스를 제공합니다. 올바르게 모니터링을 설정하면 애플리케이션의 성능 인사이트를 수집하는 데 도움이 될 수 있습니다. 예를 들어 ALB 액세스 로그를 사용하면 응답하는 데 더 오래 걸리는 요청이나 성능 문제를 일으키는 백엔드 대상을 찾을 수 있습니다. 

 **구현 단계** 

1.  워크로드에 적합한 로드 밸런서를 선택합니다. 

   1.  HTTP/HTTPS 워크로드에 Application Load Balancer를 사용합니다. 

   1.  TCP 또는 UDP에서 실행되는 비 HTTP 워크로드에 Network Load Balancer를 사용합니다. 

   1.  두 제품의 기능을 모두 활용하려면 두 제품의 조합([NLB의 대상인 ALB](https://aws.amazon.com/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/))을 사용합니다. 예를 들어 ALB의 HTTP 헤더 기반 라우팅과 함께 NLB의 고정 IP를 사용하려는 경우 또는 HTTP 워크로드를 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)에 노출하려는 경우 이를 수행할 수 있습니다. 

   1.  로드 밸런서를 비교한 전체 내용을 보려면 [ELB 제품 비교](https://aws.amazon.com/elasticloadbalancing/features/)를 참조하세요. 

1.  SSL/TLS 오프로딩을 사용합니다. 

   1.  [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)와 통합된 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) 및 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html)로 HTTPS/TLS 리스너를 구성합니다. 

   1.  일부 워크로드는 규정 준수상의 이유로 엔드 투 엔드 암호화가 필요할 수 있습니다. 이 경우 대상에서 암호화를 사용하도록 설정해야 합니다. 

   1.  보안 모범 사례는 [SEC09-BP02 전송 중 데이터 암호화 적용](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_data_transit_encrypt.html)을 참조하세요. 

1.  적절한 라우팅 알고리즘을 선택합니다. 

   1.  라우팅 알고리즘에 따라 백엔드 대상에서의 활용도 및 성능에 미치는 영향에 차이를 만들 수 있습니다. 예를 들어 ALB는 [라우팅 알고리즘에 대해 다음 두 가지 옵션](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm)을 제공합니다. 

   1.  **처리되지 않은 요청 최소화**: 애플리케이션에 대한 요청의 복잡성이 다양하거나 대상의 처리 능력이 다양한 경우 백엔드 대상에 로드를 더 효율적으로 분산하기 위해 사용합니다. 

   1.  **라운드 로빈**: 요청과 대상이 유사하거나 대상 간에 요청을 균등하게 분산해야 하는 경우에 사용합니다. 

1.  교차 영역 또는 영역 격리를 고려합니다. 

   1.  지연 시간 개선 및 영역 장애 도메인을 위해 교차 영역 끔(영역 격리)을 사용합니다. NLB에서는 기본적으로 비활성화되어 있으며 [ALB에서는 대상 그룹별로 비활성화할 수 있습니다](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/disable-cross-zone.html). 

   1.  가용성과 유연성 향상을 위해 교차 영역을 사용합니다. 기본적으로 교차 영역은 ALB에 대해 활성화되어 있으며 [NLB에서는 대상 그룹별로 비활성화할 수 있습니다](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-cross-zone.html). 

1.  HTTP 워크로드에 대해 HTTP 연결 유지를 활성화합니다. 

   1.  HTTP 워크로드의 경우 백엔드 대상에 대한 웹 서버 설정에서 HTTP 연결 유지를 활성화합니다. 이 기능을 사용하면 로드 밸런서는 연결 유지 제한 시간이 만료될 때까지 백엔드 연결을 재사용하여 HTTP 요청 및 응답 시간을 개선하고 백엔드 대상의 리소스 사용률을 줄일 수 있습니다. Apache 및 Nginx에 대해 이 작업을 수행하는 방법에 대한 자세한 내용은 [Apache 또는 NGINX를 ELB의 백엔드 서버로 사용하기 위한 최적의 설정은 무엇인가요?](https://aws.amazon.com/premiumsupport/knowledge-center/apache-backend-elb/)를 참조하세요. 

1.  컴퓨팅 리소스의 더 나은 오케스트레이션을 위해 Elastic Load Balancing 통합을 사용합니다. 

   1.  로드 밸런서와 통합된 Auto Scaling을 사용합니다. 성능 효율적인 시스템의 주요 측면 중 하나는 백엔드 리소스의 크기를 적절하게 조정하는 것과 관련이 있습니다. 이를 위해서는 백엔드 대상 리소스에 대한 로드 밸런서 통합을 활용할 수 있습니다. Auto Scaling 그룹과 로드 밸런서 통합을 사용하면 수신 트래픽에 대한 응답으로 필요에 따라 로드 밸런서에서 대상이 추가되거나 제거됩니다. 

   1.  로드 밸런서는 컨테이너화된 워크로드를 위해 Amazon ECS 및 Amazon EKS와 통합할 수도 있습니다. 
      + [ Elastic Load Balancing을 사용하여 Auto Scaling Scaling 그룹의 인스턴스 간에 트래픽 분산 ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html)
      + [ Amazon ECS - 서비스 로드 밸런싱 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)
      + [ Amazon EKS에서 애플리케이션 로드 밸런싱 ](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)
      + [ Amazon EKS에서 네트워크 로드 밸런싱 ](https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html)

1.  로드 밸런서를 모니터링하여 성능 병목 현상을 찾습니다. 

   1.  [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html) 및 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html)에 대한 액세스 로그를 활성화합니다. 

   1.  ALB에 대해 고려해야 할 주요 필드는 `request_processing_time`, `request_processing_time`및 `response_processing_time`입니다. 

   1.  NLB에 대해 고려해야 할 주요 필드는 `connection_time` 및 `tls_handshake_time`입니다. 

   1.  필요할 때 로그를 쿼리할 준비합니다. Amazon Athena를 사용하여 [ALB 로그](https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html)와 [NLB 로그](https://docs.aws.amazon.com/athena/latest/ug/networkloadbalancer-classic-logs.html)를 모두 쿼리할 수 있습니다. 

   1.  성능 관련 지표에 대한 경보(예: [ALB의`TargetResponseTime`](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html))를 생성합니다. 

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

 **관련 모범 사례:** 
+  [SEC09-BP02 전송 중 데이터 암호화 적용](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_protect_data_transit_encrypt.html) 

 **관련 문서:** 
+ [ ELB 제품 비교 ](https://aws.amazon.com/elasticloadbalancing/features/)
+ [AWS 글로벌 인프라 ](https://aws.amazon.com/about-aws/global-infrastructure/)
+ [ 가용 영역 선호도를 사용하여 성능 개선 및 비용 절감 ](https://aws.amazon.com/blogs/architecture/improving-performance-and-reducing-cost-using-availability-zone-affinity/)
+ [ Amazon Athena를 사용한 단계별 로그 분석 ](https://github.com/aws/elastic-load-balancing-tools/tree/master/amazon-athena-for-elb)
+ [ Application Load Balancer 로그 쿼리 ](https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html)
+ [ Application Load Balancer 모니터링 ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-monitoring.html)
+ [ Network Load Balancer 모니터링 ](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-monitoring.html)

 **관련 동영상:** 
+ [AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: Deep Dive and Best Practices (NET404-R1)](https://www.youtube.com/watch?v=VIgAT7vjol8)(AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: 심층 분석 및 모범 사례(NET404-R1))
+ [AWS re:Invent 2021 - How to choose the right load balancer for your AWS workloads](https://www.youtube.com/watch?v=p0YZBF03r5A)(AWS re:Invent 2021 - AWS 워크로드에 적합한 로드 밸런서를 선택하는 방법)
+ [AWS re:Inforce 2022 - How to use Elastic Load Balancing to enhance your security posture at scale (NIS203)](https://www.youtube.com/watch?v=YhNc5VSzOGQ)(AWS re:Inforce 2022 - Elastic Load Balancing을 사용하여 대규모로 보안 태세를 강화하는 방법(NIS203))
+ [AWS re:Invent 2019: Get the most from Elastic Load Balancing for different workloads (NET407-R2)](https://www.youtube.com/watch?v=HKh54BkaOK0)(AWS re:Invent 2019: 다양한 워크로드에 Elastic Load Balancing을 최대한 활용)

 **관련 예시:** 
+ [ Amazon Athena를 사용한 로그 분석의 CDK 및 CloudFormation 샘플 ](https://github.com/aws/elastic-load-balancing-tools/tree/master/log-analysis-elb-cdk-cf-template)

# PERF05-BP05 성능을 개선할 수 있는 네트워크 프로토콜 선택
<a name="perf_select_network_protocols"></a>

워크로드의 성능 요구 사항을 평가하고 워크로드의 전반적인 성능을 최적화하는 네트워크 프로토콜을 선택합니다.

원하는 처리량을 달성하려면 지연 시간과 대역폭 간의 관계를 고려해야 합니다. 예를 들어 파일 전송이 전송 제어 프로토콜(TCP)을 사용하는 경우 지연 시간이 길수록 전체 처리량이 줄어듭니다. 이 문제는 TCP 튜닝 및 최적화된 전송 프로토콜을 사용하여 해결되며 경우에 따라 사용자 데이터그램 프로토콜(UDP)을 사용하기도 합니다.

 [Scalable Reliable Datagram(SRD)](https://ieeexplore.ieee.org/document/9167399) 프로토콜은 신뢰할 수 있는 데이터그램 전달을 제공하는 AWS for Elastic Fabric Adapter에서 구축한 네트워크 전송 프로토콜입니다. TCP 프로토콜과 달리 SRD는 패킷을 재정렬하여 순서와 관계 없이 전달할 수 있습니다. SRD의 순서와 관계 없이 전달 메커니즘은 대체 경로를 통해 패킷을 병렬로 전송하므로 처리량이 증가합니다. 

 **일반적인 안티 패턴:** 
+  성능 요구 사항과 관계없이 모든 워크로드에 TCP를 사용합니다. 

 **이 모범 사례 확립의 이점:** 
+  워크로드 구성 요소 간 통신에 적합한 프로토콜을 선택하면 해당 워크로드에 대한 성능을 극대화할 수 있습니다. 
+  사용자와 워크로드 구성 요소 간의 통신에 적절한 프로토콜이 사용되는지 확인하면 애플리케이션의 전반적인 사용자 경험을 개선하는 데 도움이 됩니다. 예를 들어, TCP 및 UDP를 함께 사용하면 VDI 워크로드는 중요한 데이터에 대한 TCP의 신뢰성과 실시간 데이터에 대한 UDP의 속도를 활용할 수 있습니다. 

 **이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준:** 중간(부적절한 네트워크 프로토콜을 사용하면 느린 응답 시간, 긴 대기 시간 및 낮은 확장성과 같은 성능 저하가 발생) 

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

워크로드의 성능을 향상하기 위한 주요 고려 사항은 지연 시간 및 처리량 요구 사항을 이해한 다음 성능을 최적화하는 네트워크 프로토콜을 선택하는 것입니다. 

 **TCP 사용을 고려해야 할 시기** 

 TCP는 신뢰할 수 있는 데이터 전달을 제공하며 신뢰성과 보장된 데이터 전달이 중요한 워크로드 구성 요소 간의 통신에 사용될 수 있습니다. 많은 웹 기반 애플리케이션은 HTTP 및 HTTPS와 같은 TCP 기반 프로토콜을 사용하여 AWS 서버와 통신하기 위한 TCP 소켓을 열어줍니다. 이메일 및 파일 데이터 전송은 데이터 교환 속도 및 네트워크 정체를 제어할 수 있는 TCP의 기능으로 인해 TCP를 사용하는 일반적인 애플리케이션입니다. TCP와 함께 TLS를 사용하면 통신에 약간의 오버헤드가 추가되어 지연 시간이 증가하고 처리량이 줄어들 수 있습니다. 오버헤드는 주로 완료하는 데 여러 번의 왕복이 필요할 수 있는 핸드셰이크 프로세스의 추가 오버헤드에서 발생합니다. 핸드셰이크가 완료되면 데이터 암호화 및 복호화의 오버헤드는 비교적 작습니다. 

 **UDP 사용을 고려해야 할 시기** 

 UDP는 비연결 지향 프로토콜이므로 로그, 모니터링 및 VOIP 데이터와 같이 빠르고 효율적인 전송이 필요한 애플리케이션에 적합합니다. 또한 워크로드의 최적 성능을 보장하기 위해 많은 클라이언트의 작은 쿼리에 응답하는 워크로드 구성 요소가 있는 경우 UDP를 사용하는 것이 좋습니다. Datagram Transport Layer Security(DTLS)는 TLS의 UDP에 해당합니다. UDP와 함께 DTLS를 사용하면 핸드셰이크 프로세스가 간소화되므로 오버헤드가가 데이터를 암호화하고 복호화할 때 발생합니다. DTLS는 또한 보안 파라미터를 나타내고 변조를 감지하기 위한 추가 필드를 포함하기 때문에 UDP 패킷에 소량의 오버헤드를 추가합니다. 

 **SRD 사용을 고려해야 할 시기** 

 Scalable Reliable Datagram(SRD)은 여러 경로에 걸쳐 트래픽을 로드 밸런싱할 수 있어 고처리량 워크로드에 최적화된 네트워크 전송 프로토콜이며 패킷 감소 또는 연결 장애에서 빠르게 복구합니다. 따라서 SRD는 컴퓨팅 노드 간에 처리량이 많고 지연 시간이 짧은 통신이 필요한 고성능 컴퓨팅(HPC) 워크로드에 가장 효과적입니다. 여기에는 노드 간에 대량의 데이터 전송을 수반하는 시뮬레이션, 모델링 및 데이터 분석과 같은 병렬 처리 작업이 포함될 수 있습니다. 

 **구현 단계** 

1.  [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 및 [AWS Transfer Family](https://aws.amazon.com/aws-transfer-family/) 서비스를 사용하여 온라인 파일 전송 애플리케이션의 처리량을 향상합니다. AWS Global Accelerator 서비스를 사용하면 클라이언트 디바이스와 AWS 워크로드 간에 지연 시간을 단축하는 데 도움이 됩니다. AWS Transfer Family를 사용하면 Secure Shell File Transfer Protocol(SFTP) 및 File Transfer Protocol over SSL(FTPS)과 같은 TCP 기반 프로토콜을 사용하여 파일 전송을 AWS 스토리지 서비스로 안전하게 확장하고 관리할 수 있습니다. 

1.  네트워크 지연 시간을 사용하여 TCP가 워크로드 구성 요소 간의 통신에 적합한지 확인합니다. 클라이언트 애플리케이션과 서버 간의 네트워크 지연 시간이 길면 TCP 3방향 핸드셰이크에 시간이 걸릴 수 있습니다. 그렇게 되면 애플리케이션의 응답성에 영향을 줄 수 있습니다. 첫 번째 바이트까지의 시간(TTFB) 및 왕복 시간(RTT)과 같은 지표를 사용하여 네트워크 지연 시간을 측정할 수 있습니다. 워크로드가 사용자에게 동적 콘텐츠를 제공하는 경우, 동적 콘텐츠의 각 오리진에 영구 연결을 설정하는 [Amazon CloudFront](https://aws.amazon.com/cloudfront/)를 사용하면 각 클라이언트 요청을 지연시킬 수 있는 연결 설정 시간을 제거할 수 있습니다. 

1.  TCP 또는 UDP와 함께 TLS를 사용하면 암호화 및 복호화의 영향으로 인해 지연 시간이 증가하고 워크로드에 대한 처리량이 감소합니다. 이러한 워크로드의 경우 [Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/)에서 SSL/TLS 오프로딩을 고려하여 백엔드 인스턴스 대신 로드 밸런서가 SSL/TLS 암호화 및 복호화 프로세스를 처리하도록 하여 워크로드 성능을 개선합니다. 이를 통해 백엔드 인스턴스의 CPU 사용률을 줄여 성능을 향상시키고 용량을 늘릴 수 있습니다. 

1.  [Network Load Balancer(NLB)](https://aws.amazon.com/elasticloadbalancing/network-load-balancer/)를 사용하여 인증 및 승인, 로깅, DNS, IoT 및 스트리밍 미디어와 같은 UDP 프로토콜을 이용하는 서비스를 배포하여 워크로드의 성능 및 신뢰성을 향상시킵니다. NLB는 여러 대상에 걸쳐 수신되는 UDP 트래픽을 배포하여 워크로드를 수평 확장하고 용량을 늘리고 단일 대상의 오버헤드를 줄일 수 있습니다. 

1.  고성능 컴퓨팅(HPC) 워크로드의 경우 SRD 프로토콜을 사용하는 [Elastic Network Adapter(ENA) Express](https://aws.amazon.com/about-aws/whats-new/2022/11/elastic-network-adapter-ena-express-amazon-ec2-instances/) 기능을 사용하여 EC2 인스턴스 간의 네트워크 트래픽에 대해 더 높은 단일 흐름 대역폭(25Gbps)과 더 짧은 꼬리 지연 시간(99.9 백분위수)을 제공하여 네트워크 성능을 개선하는 것이 좋습니다. 

1.  [Application Load Balancer(ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)를 사용하여 워크로드 구성 요소 간에 또는 gRPC 지원 클라이언트와 서비스 간에 gRPC(원격 프로시저 호출) 트래픽을 라우팅하고 부하를 분산합니다. gRPC는 전송에 TCP 기반 HTTP/2 프로토콜을 사용하며 더 가벼운 네트워크 공간, 압축, 효율적인 이진 직렬화, 다양한 언어 지원, 양방향 스트리밍과 같은 성능상의 이점을 제공합니다. 

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

 **관련 문서:** 
+  [Amazon EBS - 최적화 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html) 
+  [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Linux 기반 EC2 향상된 네트워킹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) 
+  [Windows의 EC2 향상된 네트워킹](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html) 
+  [EC2 배치 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [Linux 인스턴스에서 ENA(Elastic Network Adapter)를 사용하여 향상된 네트워킹 활성화](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html) 
+  [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [AWS의 네트워킹 제품](https://aws.amazon.com/products/networking/) 
+  [Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw) 
+  [Amazon Route 53에서 지연 시간 기반 라우팅으로 전환](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/TutorialTransitionToLBR.html) 
+  [VPC 엔드포인트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) 
+  [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

 **관련 동영상:** 
+  [Connectivity to AWS and hybrid AWS network architectures (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs)(AWS 및 하이브리드 AWS 네트워크 아키텍처에 대한 연결(NET317-R1)) 
+  [Optimizing Network Performance for Amazon EC2 Instances(CMP308-R1)](https://www.youtube.com/watch?v=DWiwuYtIgu0)(Amazon EC2 인스턴스의 네트워크 성능 최적화(CMP308-R1)) 
+ [Tuning Your Cloud: Improve Global Network Performance for Application](https://www.youtube.com/watch?v=00ukhVcgWrs)(클라우드 튜닝: 애플리케이션의 글로벌 네트워크 성능 향상)
+ [Application Scaling with EFA and SRD](https://pages.awscloud.com/HPC-Application-Scaling-with-Elastic-Fabric-Adapter-EFA-and-Scalable-Reliable-Datagram-SRD_2020_0004-CMP_OD.html)(EFA 및 SRD를 통한 애플리케이션 확장)

 **관련 예시:** 
+  [AWS Transit Gateway 및 확장 가능한 보안 솔루션](https://github.com/aws-samples/aws-transit-gateway-and-scalable-security-solutions) 
+  [AWS 네트워킹 워크숍](https://networking.workshop.aws/) 

# PERF05-BP06 네트워크 요구 사항에 따라 워크로드의 위치 선택
<a name="perf_select_network_location"></a>

리소스 배치 옵션을 평가하여 네트워크 지연 시간을 줄이고 처리량을 향상시켜 페이지 로드 및 데이터 전송 시간을 줄임으로써 최적의 사용자 경험을 제공합니다.

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

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

Amazon EC2 인스턴스와 같은 리소스는 [AWS 리전](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [AWS 로컬 영역](https://aws.amazon.com/about-aws/global-infrastructure/localzones/), [AWS Outposts](https://aws.amazon.com/outposts/) 또는 [AWS Wavelength](https://aws.amazon.com/wavelength/) 영역에 배치됩니다. 이 위치를 선택하면 주어진 사용자 위치의 네트워크 지연 시간 및 처리량에 영향을 미칩니다. [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 및 [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/)와 같은 엣지 서비스는 엣지 로케이션의 콘텐츠를 캐싱하거나 AWS 글로벌 네트워크를 통해 워크로드에 대한 최적의 경로를 사용자에게 제공하여 네트워크 성능을 향상시키는 데 사용될 수 있습니다.

 **구현 단계** 

1.  다음과 같은 주요 요소를 토대로 하여 배포용으로 적절한 AWS 리전을 하나 이상 선택합니다. 

   1.  **사용자의 위치:** 워크로드 사용자 근처의 리전을 선택하면 사용자가 워크로드를 사용할 때 지연 시간이 단축됩니다. 

   1.  **데이터의 위치:** 데이터를 많이 사용하는 애플리케이션에서는 데이터 전송 시 지연 시간 병목 현상이 가장 많이 발생합니다. 따라서 애플리케이션 코드는 최대한 데이터와 가까운 위치에서 실행되어야 합니다. 

   1.  **기타 제약 조건:** 보안 및 규정 준수 등의 제약(예: 데이터 상주 요구 사항)을 고려해야 합니다. 

1.  주어진 워크로드의 경우, 구성 요소가 짧은 지연 시간이 필요한 상호 의존적인 Amazon EC2 인스턴스 그룹으로 구성되었다면 [클러스터 배치 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)을 사용하여 워크로드의 요구 사항을 충족할 수 있도록 해당 인스턴스의 배치에 영향을 주는 것이 좋습니다. 동일한 클러스터 배치 그룹의 인스턴스는 TCP/IP 트래픽에 더 높은 흐름당 처리량 제한을 제공하며 네트워크의 동일한 높은 이분 대역폭 세그먼트에 배치됩니다. 네트워크 지연 시간이 짧거나 처리량이 높은 경우 또는 두 조건을 모두 충족하는 경우 성능이 개선되는 애플리케이션에는 클러스터 배치 그룹을 사용하는 것이 좋습니다. 

1.  예를 들어 짧은 지연 시간이나 데이터 상주 요구 사항으로 인해 위치에 민감한 워크로드의 경우 [AWS 로컬 영역](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 또는 [AWS Outposts](https://aws.amazon.com/outposts/)를 검토합니다. 

   1.  AWS 로컬 영역은 컴퓨팅, 스토리지, 데이터베이스 및 기타 선별된 AWS 서비스를 인구가 많은 산업 센터와 가까운 곳에 배치하는 인프라 배포 유형입니다. 

   1.  AWS Outposts는 AWS 인프라와 서비스를 거의 모든 온프레미스 또는 엣지 로케이션에 제공하여 진정으로 일관된 하이브리드 경험을 구현하는 완전관리형 솔루션 제품군입니다. 

1.  고해상도 라이브 비디오 스트리밍, 고음질 오디오 및 증강 현실/가상 현실(AR/VR)과 같은 5G 디바이스용 애플리케이션은 지연 시간이 매우 짧아야 합니다. 이러한 애플리케이션의 경우 [AWS Wavelength](https://aws.amazon.com/wavelength/)을 고려합니다. AWS Wavelength는 5G 네트워크 내에 AWS 컴퓨팅 및 스토리지 서비스를 포함하여 지연 시간이 매우 짧은 애플리케이션을 개발, 배포 및 확장하기 위한 모바일 엣지 컴퓨팅 인프라를 제공합니다. 

1.  지리적으로 분산된 사용자가 있는 경우 콘텐츠 배포 네트워크(CDN)를 사용하여 전 세계적으로 분산된 접속 지점(POP)을 통해 데이터를 전달함으로써 정적 및 동적 웹 콘텐츠를 빠르게 배포할 수 있습니다. CDN은 일반적으로 엣지 컴퓨팅 기능을 제공하며 HTTP 헤더 조작 및 URL 재작성 및 엣지에서 대규모로 리디렉션과 같은 지연 시간에 민감한 작업을 수행합니다. [Amazon CloudFront](https://aws.amazon.com/cloudfront/)는 정적 및 동적 웹 콘텐츠의 배포 속도를 높이는 웹 서비스입니다. CloudFront의 사용 사례에는 정적 웹 사이트 콘텐츠 전송 가속화 및 온디맨드 비디오 제공 또는 라이브 스트리밍 비디오가 포함됩니다. CloudFront를 통해 지연 시간을 줄이면서 시청자의 콘텐츠와 경험을 사용자 지정할 수도 있습니다. 

1.  일부 애플리케이션은 첫 번째 바이트까지의 지연 시간과 지터를 줄이고 처리량을 늘려 고정 진입 지점 또는 그 이상의 성능이 필요합니다. 이러한 애플리케이션은 정적 애니캐스트 IP 주소와 엣지 로케이션에서 TCP 종료를 제공하는 네트워킹 서비스의 혜택을 누릴 수 있습니다. [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/)은 애플리케이션의 성능을 최대 60%까지 향상시키고 다중 리전 아키텍처에 빠른 장애 조치를 제공합니다. AWS Global Accelerator는 하나 이상의 AWS 리전에서 호스팅되는 애플리케이션의 고정 진입 지점으로 사용되는 정적 애니캐스트 IP 주소를 제공합니다. 이 IP 주소를 사용하면 가능한 한 사용자와 가까운 AWS 글로벌 네트워크으로 트래픽이 유입될 수 있습니다. AWS Global Accelerator는 클라이언트와 클라이언트와 가장 가까운 AWS 엣지 로케이션 간에 TCP 연결을 설정하여 초기 연결 설정 시간을 줄입니다. AWS Global Accelerator를 검토하여 TCP/UDP 워크로드의 성능을 향상시키고 다중 리전 아키텍처에 빠른 장애 조치를 제공합니다. 

1.  애플리케이션 또는 사용자가 온프레미스 상태인 경우 네트워크와 클라우드 간에 전용 네트워크 연결을 사용하면 혜택을 볼 수 있습니다. 전용 네트워크 연결은 혼잡이 발생하거나 예기치 않은 지연 시간이 증가할 가능성을 줄일 수 있습니다. [AWS Direct Connect](https://aws.amazon.com/directconnect/)는 네트워크를 AWS에 직접 연결하고 퍼블릭 인터넷을 우회하여 애플리케이션 성능을 향상시킬 수 있습니다. 새 연결을 만들 때 AWS Direct Connect 제공 파트너가 제공하는 호스팅된 연결을 선택하거나 AWS에서 전용 연결을 선택하고 전 세계 100개 이상의 AWS Direct Connect 위치에 배포할 수 있습니다. 또한 AWS에서 낮은 데이터 전송 속도로 네트워킹 비용을 줄이고 선택적으로 장애 조치를 위해 Site-to-Site VPN을 구성할 수 있습니다. 

1.  AWS 내의 리소스에 연결하기 위해 [Site-to-Site VPN](https://aws.amazon.com/vpn/site-to-site-vpn/)을 구성하면 필요에 따라 가속화할 수 있습니다. 가속화된 Site-to-Site VPN 연결은 AWS Global Accelerator를 사용하여 온프레미스 네트워크에서 고객 게이트웨이 디바이스에 가장 가까운 AWS 엣지 로케이션으로 트래픽을 라우팅합니다. 

1.  워크로드 트래픽 및 사용자 위치를 검토하여 워크로드 성능을 최적화할 DNS 라우팅 옵션을 식별합니다. [Amazon Route 53](https://aws.amazon.com/route53)은 [지연 시간 기반 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-latency.html), [지리적 위치 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geo.html), [지리 근접 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html) 및 [IP 기반 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-ipbased.html) 옵션을 제공하여 전 세계 연결 대상을 위한 워크로드 성능을 향상시키는 데 도움이 됩니다. 

   1.  Route 53은 또한 최종 사용자에게 짧은 쿼리 지연 시간을 제공합니다. Route 53은 전 세계의 DNS 서버의 글로벌 애니캐스트 네트워크를 사용하여 네트워크 조건에 따라 최적의 위치에서 쿼리에 자동으로 응답하도록 설계되었습니다. 

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

 **관련 모범 사례:** 
+ [COST07-BP02 비용을 기준으로 리전 구현](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_pricing_model_region_cost.html)
+ [COST08-BP03 데이터 전송 비용을 줄이기 위한 서비스 구현](https://docs.aws.amazon.com/wellarchitected/latest/framework/cost_data_transfer_implement_services.html)
+ [REL10-BP01 워크로드를 여러 위치에 배포](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_fault_isolation_multiaz_region_system.html)
+ [REL10-BP02 다중 위치 배포에 적합한 위치 선택](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_fault_isolation_select_location.html)
+ [SUS01-BP01 Amazon 재생 에너지 프로젝트 근처의 리전 및 그리드의 탄소 집약도가 다른 위치(또는 리전)보다 낮은 리전 선택](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_region_a2.html)
+ [SUS02-BP04 사용자 위치에 맞게 워크로드의 지리적 배치 최적화](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_user_a5.html)
+ [SUS04-BP07 네트워크 간 데이터 이동 최소화](https://docs.aws.amazon.com/wellarchitected/latest/framework/sus_sus_data_a8.html)

 **관련 문서:** 
+ [AWS 글로벌 인프라 ](https://aws.amazon.com/about-aws/global-infrastructure/)
+ [AWS Local Zones and AWS Outposts, choosing the right technology for your edge workload](https://aws.amazon.com/blogs/compute/aws-local-zones-and-aws-outposts-choosing-the-right-technology-for-your-edge-workload/)(AWS 로컬 영역 및 AWS Outposts, 엣지 워크로드에 적합한 기술 선택)
+  [배치 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 
+  [AWS 로컬 영역](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) 
+  [AWS Outposts](https://aws.amazon.com/outposts/) 
+  [AWS Wavelength](https://aws.amazon.com/wavelength/) 
+  [Amazon CloudFront](https://aws.amazon.com/cloudfront/) 
+  [AWS Global Accelerator](https://aws.amazon.com/global-accelerator/) 
+  [AWS Direct Connect](https://aws.amazon.com/directconnect/) 
+  [Site-to-Site VPN](https://aws.amazon.com/vpn/site-to-site-vpn/) 
+  [Amazon Route 53](https://aws.amazon.com/route53) 

 **관련 동영상:** 
+ [AWS Local Zones Explainer Video](https://www.youtube.com/watch?v=JHt-D4_zh7w)(AWS 로컬 영역 설명 비디오)
+ [AWS Outposts: Overview and How It Works](https://www.youtube.com/watch?v=ppG2FFB0mMQ)(AWS Outposts: 개요 및 작동 방식)
+ [AWS re:Invent 2021 - AWS Outposts: Bringing the AWS experience on premises](https://www.youtube.com/watch?v=FxVF6A22498)(AWS re:Invent 2021 - AWS Outposts: 온프레미스로 AWS 경험 가져오기)
+ [AWS re:Invent 2020: AWS Wavelength: Run apps with ultra-low latency at 5G edge](https://www.youtube.com/watch?v=AQ-GbAFDvpM)(AWS re:Invent 2020: AWS Wavelength: 5G 엣지에서 매우 짧은 지연 시간으로 앱 실행)
+ [AWS re:Invent 2022 - AWS Local Zones: Building applications for a distributed edge](https://www.youtube.com/watch?v=bDnh_d-slhw)(AWS re:Invent 2022 - AWS 로컬 영역: 분산된 엣지를 위한 애플리케이션 구축)
+ [AWS re:Invent 2021 - Building low-latency websites with Amazon CloudFront](https://www.youtube.com/watch?v=9npcOZ1PP_c)(AWS re:Invent 2021 - Amazon Cloudfront를 사용하여 지연 시간이 짧은 웹 사이트 구축)
+ [AWS re:Invent 2022 - Improve performance and availability with AWS Global Accelerator](https://www.youtube.com/watch?v=s5sjsdDC0Lg)(AWS re:Invent 2022 - AWS Global Accelerator로 성능 및 가용성 향상)
+ [AWS re:Invent 2022 - Build your global wide area network using AWS](https://www.youtube.com/watch?v=flBieylTwvI)(AWS re:Invent 2022 - AWS를 사용하여 글로벌 광역 네트워크 구축)
+ [AWS re:Invent 2020: Global traffic management with Amazon Route 53](https://www.youtube.com/watch?v=E33dA6n9O7I)(AWS re:Invent 2020: Amazon Route 53을 사용한 글로벌 트래픽 관리)

 **관련 예시:** 
+ [AWS Global Accelerator 워크숍](https://catalog.us-east-1.prod.workshops.aws/workshops/effb1517-b193-4c59-8da5-ce2abdb0b656/en-US)
+ [에지 함수를 사용하여 다시 작성 및 리디렉션 처리](https://catalog.us-east-1.prod.workshops.aws/workshops/814dcdac-c2ad-4386-98d5-27d37bb77766/en-US)

# PERF05-BP07 지표를 기준으로 네트워크 구성 최적화
<a name="perf_select_network_optimize"></a>

부적절하게 네트워크를 구성하면 네트워크 성능, 효율성 및 비용에 영향을 미치는 경우가 많습니다. 일반적인 네트워크 환경에서는 초기 단계에서 배포를 신속하게 완료하기 위해 네트워크 성능 측면의 적절한 네트워크 구성을 제대로 고려하지 않습니다. 네트워크 구성을 최적화하려면 먼저 네트워크 환경에 대한 가시성과 데이터가 있어야 합니다.

네트워크 리소스의 수행 방식을 이해하려면 데이터를 수집 및 분석하여 정보를 바탕으로 네트워크 구성 최적화 관련 결정을 내립니다. 이러한 변경의 영향을 측정한 다음 영향 측정값을 활용해 향후 결정을 내립니다. 

 **원하는 결과:** 지표 및 네트워크 모니터링 도구를 사용하여 워크로드의 변화에 따라 네트워크 구성을 최적화합니다. 클라우드 기반 네트워크는 빠르게 최적화할 수 있으므로 성능 효율성을 유지하려면 네트워크 아키텍처를 지속적으로 변경해야 합니다. 

 **일반적인 안티 패턴:** 
+  모든 성능 관련 문제가 애플리케이션 관련 문제라고 가정합니다. 
+  워크로드를 배포한 위치와 가까운 위치에서만 네트워크 성능을 테스트합니다. 
+  모든 네트워크 서비스에 기본 구성을 사용합니다. 
+  충분한 용량을 제공하려고 네트워크 리소스를 과도하게 프로비저닝합니다. 

 **이 모범 사례 확립의 이점:** AWS 네트워크와 관련된 필수 지표를 수집하고 네트워크 모니터링 도구 구현을 통해 네트워크 성능을 이해하고 네트워크 구성을 최적화할 수 있습니다. 

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

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

 VPC, 서브넷 또는 네트워크 인터페이스를 오가는 트래픽을 모니터링하는 것은 AWS 네트워크 리소스를 활용하는 방법과 네트워크 구성을 최적화하는 방법을 이해하는 데 중요합니다. 다음 도구를 사용하면 트래픽 사용, 네트워크 액세스 및 로그에 대한 정보를 추가로 검사할 수 있습니다. 

 **구현 단계** 

1.  [Amazon VPC IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)를 사용합니다. IPAM을 사용하여 AWS 및 온프레미스 워크로드의 IP 주소를 계획, 추적 및 모니터링할 수 있습니다. 이는 IP 주소 사용 및 할당을 최적화하는 가장 좋은 방법입니다. 

1.  [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)를 켭니다. VPC 흐름 로그를 사용하여 VPC의 네트워크 인터페이스에서 전송되고 수신되는 IP 트래픽에 대한 정보를 캡처합니다. VPC 흐름 로그를 사용하면 지나치게 제한적이거나 허용되는 보안 그룹 규칙을 진단하고 네트워크 인터페이스와의 트래픽 방향을 결정할 수 있습니다. 흐름 로그를 게시할 때 Vended 로그에 대한 데이터 수집 및 아카이빙 요금이 적용됩니다. 

1.  [DNS 쿼리 로깅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html)을 켭니다. Route 53이 수신하는 퍼블릭 또는 프라이빗 DNS 쿼리에 대한 정보를 기록하도록 Amazon Route 53을 구성할 수 있습니다. DNS 로그를 사용하면 요청된 도메인 또는 하위 도메인 또는 DNS 쿼리에 응답한 Route 53 엣지 로케이션을 이해하여 DNS 구성을 최적화할 수 있습니다. 

1.  [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html)를 사용하여 네트워크 도달 가능성을 분석하고 디버깅합니다. Reachability Analyzer는 VPC의 소스 리소스와 대상 리소스 간의 연결을 테스트할 수 있는 구성 분석 도구입니다. 이 도구를 사용하면 네트워크 구성이 의도한 연결과 일치하는지 확인하는 데 도움이 됩니다. 

1.  [Network Access Analyzer](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html)를 사용하여 리소스에 대한 네트워크 액세스를 파악합니다. Network Access Analyzer를 사용하면 네트워크 액세스 요구 사항을 지정하고 지정된 요구 사항을 충족하지 않는 네트워크 경로를 식별할 수 있습니다. 해당 네트워크 구성을 최적화하면 네트워크 상태를 이해하고 확인하며 AWS의 네트워크가 규정 준수 요구 사항을 충족하는지 입증할 수 있습니다. 

1.  [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)를 사용하고 네트워크 옵션에 적절한 지표를 활성화합니다. 워크로드에 적합한 네트워크 지표를 선택해야 합니다. 예를 들어 VPC 네트워크 주소 사용량, VPC NAT 게이트웨이, AWS Transit Gateway, VPN 터널, AWS Network Firewall, Elastic Load Balancing 및 AWS Direct Connect에 대한 지표를 활성화할 수 있습니다. 지표를 지속적으로 모니터링하는 것은 네트워크 상태와 사용량을 관찰하고 파악하는 좋은 방법이며 관찰을 기반으로 네트워크 구성을 최적화하는 데 도움이 됩니다. 

 **구현 계획의 작업 수준:** 중간 

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

 **관련 문서:** 
+  [VPC 흐름 로그](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+ [ 퍼블릭 DNS 쿼리 로깅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html)
+ [IPAM이란 무엇입니까?](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)
+  [Reachability Analyzer란 무엇입니까?](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 
+ [What is Network Access Analyzer?](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html)(Network Access Analyzer란 무엇입니까?)
+ [CloudWatch metrics for your VPCs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cloudwatch.html)(VPC의 CloudWatch 지표)
+ [Optimize performance and reduce costs for network analytics with VPC Flow Logs in Apache Parquet format](https://aws.amazon.com/blogs/big-data/optimize-performance-and-reduce-costs-for-network-analytics-with-vpc-flow-logs-in-apache-parquet-format/)(Apache Parquet 형식의 VPC 흐름 로그를 사용하여 네트워크 분석을 위한 성능 최적화 및 비용 절감)
+  [Monitoring your global and core networks with Amazon Cloudwatch metrics](https://docs.aws.amazon.com/vpc/latest/tgwnm/monitoring-cloudwatch-metrics.html)(Amazon Cloudwatch 지표를 사용하여 글로벌 및 핵심 네트워크 모니터링) 
+  [Continuously monitor network traffic and resources](https://docs.aws.amazon.com/whitepapers/latest/security-best-practices-for-manufacturing-ot/continuously-monitor-network-traffic-and-resources.html)(지속적인 네트워크 트래픽 및 리소스 모니터링) 

 **관련 동영상:** 
+ [Networking best practices and tips with the Well-Architected Framework](https://www.youtube.com/watch?v=wOMNpG49BeM)(Well-Architected Framework의 네트워킹 모범 사례 및 팁)
+ [Monitoring and troubleshooting network traffic](https://www.youtube.com/watch?v=Ed09ReWRQXc)(네트워크 트래픽 모니터링 및 문제 해결)

 **관련 예시:** 
+  [AWS 네트워킹 워크숍](https://networking.workshop.aws/) 
+  [AWS 네트워크 모니터링](https://github.com/aws-samples/monitor-vpc-network-patterns) 