

# 성능 효율성
<a name="performance-efficiency"></a>

 성능 효율성 원칙은 컴퓨팅 리소스를 시스템 요구 사항에 맞게 효율적으로 사용하고, 수요 변화 및 기술 진화에 발맞춰 그러한 효율성을 유지할 수 있는 역량을 포함합니다. 

 성능 효율성 원칙에서 설계 원칙 개요, 모범 사례, 질문 사항을 확인합니다. 구현 방법에 대한 권장 가이드는 [성능 효율성 원칙 백서](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp)에서 확인할 수 있습니다. 

**Topics**
+ [설계 원칙](perf-dp.md)
+ [정의](perf-def.md)
+ [모범 사례](perf-bp.md)
+ [리소스](perf-resources.md)

# 설계 원칙
<a name="perf-dp"></a>

 클라우드에는 5가지 성능 효율성 설계 원칙이 있습니다. 
+  **고급 기술의 대중화**: 팀에서 고급 기술을 손쉽게 구현할 수 있도록 복잡한 작업을 클라우드 공급업체에 위임합니다. IT 팀에 새로운 기술의 호스팅과 실행에 대해 알아볼 것을 요청하는 대신 기술을 서비스 형태로 사용하는 것을 고려해 보세요. 예를 들어 NoSQL 데이터베이스, 미디어 트랜스코딩, 기계 학습은 모두 전문 지식이 요구되는 기술입니다. 클라우드에서는 이러한 기술이 팀에서 사용할 수 있는 서비스 형식으로 제공되므로 팀은 리소스 프로비저닝과 관리가 아닌 제품 개발에 집중할 수 있습니다. 
+  **몇 분 안에 전 세계에 배포**: 전 세계의 여러 AWS 리전에 워크로드를 배포하면 최소한의 비용으로 지연 시간을 줄이고 고객 경험을 개선할 수 있습니다. 
+  **서버리스 아키텍처 사용**: 서버리스 아키텍처에서는 물리적 서버를 실행하고 유지 관리하지 않고도 기존의 컴퓨팅 활동을 수행할 수 있습니다. 예를 들어 서버리스 스토리지 서비스를 정적 웹 사이트로 사용하고(웹 서버 불필요) 이벤트 서비스를 통해 코드를 호스팅할 수 있습니다. 이렇게 하면 물리적 서버 관리로 인한 운영 부담이 없어집니다. 또한 이러한 관리형 서비스는 클라우드 규모에서 운영되므로 트랜잭션 비용을 절감할 수 있습니다. 
+  **테스트 횟수 증가**: 자동화할 수 있는 가상 리소스를 활용하며 여러 가지 인스턴스, 스토리지 또는 구성에 대한 비교 테스트를 신속하게 수행할 수 있습니다. 
+  **기계에 대한 공감**: 클라우드 서비스가 어떻게 사용되는지 파악하고 항상 워크로드 목표에 부합하는 기술 접근 방식을 사용합니다. 예를 들어 데이터베이스 또는 스토리지 접근 방식을 선택할 때는 데이터 접근 패턴을 고려합니다. 

# 정의
<a name="perf-def"></a>

 클라우드의 성능 효율성에는 5가지 모범 사례 영역이 있습니다. 
+  **아키텍처 선택** 
+  **컴퓨팅 및 하드웨어** 
+  **데이터 관리** 
+  **네트워킹 및 콘텐츠 전송** 
+  **프로세스 및 문화** 

 고성능 아키텍처를 구축할 때는 데이터 기반 접근 방식을 취합니다. 개괄적 설계부터 리소스 유형 선택과 구성에 이르는 아키텍처의 모든 측면에 대한 데이터를 수집합니다. 

 정기적으로 선택 사항을 검토하면서 진화를 거듭하는 AWS 클라우드를 최대한 활용할 수 있습니다. 모니터링을 수행하면 예상 성능과의 차이를 확인할 수 있습니다. 압축 또는 캐싱을 사용하거나 일관성 요구 사항을 완화하는 등의 절충을 통해 아키텍처를 설계하면 성능을 개선할 수 있습니다. 

# 모범 사례
<a name="perf-bp"></a>

**Topics**
+ [아키텍처 선택](perf-arch.md)
+ [컴퓨팅 및 하드웨어](perf-compute.md)
+ [데이터 관리](perf-data.md)
+ [네트워킹 및 콘텐츠 전송](perf-networking.md)
+ [프로세스 및 문화](perf-process.md)

# 아키텍처 선택
<a name="perf-arch"></a>

 특정 워크로드에 대한 최적의 솔루션은 다양하며, 종종 여러 접근 방식이 결합된 솔루션을 사용합니다. Well-Architected 워크로드의 경우 다수의 솔루션이 사용되며 다양한 특성을 사용하여 성능을 높일 수 있습니다. 

 AWS 리소스는 다양한 유형과 구성으로 제공되므로, 요구 사항에 가장 근접한 접근 방식을 쉽게 찾을 수 있습니다. 또한 온프레미스 인프라에서는 쉽게 사용할 수 없는 옵션도 제공됩니다. 예를 들어 Amazon DynamoDB와 같은 관리형 서비스는 완전관리형 NoSQL 데이터베이스로, 어떤 규모에서도 지연 시간이 한 자릿수 밀리초 단위로 매우 짧습니다. 

 다음은 성능 효율성 고려 사항에 중점을 둔 질문입니다. (성능 효율성 관련 질문 및 모범 사례 목록은 [Appendix](a-performance-efficiency.md)을 참조하십시오.) 


| PERF 1:  How do you select appropriate cloud resources and architecture patterns for your workload? | 
| --- | 
|  Often, multiple approaches are required for more effective performance across a workload. Well-Architected systems use multiple solutions and features to improve performance.  | 

# 컴퓨팅 및 하드웨어
<a name="perf-compute"></a>

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

 AWS에서는 3가지 형식의 컴퓨팅 기능(인스턴스, 컨테이너, 함수)이 제공됩니다. 
+  **인스턴스**는 가상화된 서버이기 때문에 버튼을 누르거나 API를 호출하는 방법으로 기능을 변경할 수 있습니다. 클라우드에서는 리소스를 한번 결정하면 그대로 고정되는 것이 아니므로 다양한 서버 유형을 시험해 볼 수 있습니다. AWS에서는 이러한 가상 서버 인스턴스를 다양한 제품군과 규모로 제공하며, 솔리드 스테이트 드라이브(SSD)와 그래픽 처리 장치(GPU)를 비롯한 폭넓은 기능을 제공합니다. 
+  **컨테이너**는 애플리케이션 및 종속성을 리소스가 격리된 프로세스에서 실행할 수 있는 운영 체제 가상화 방식입니다. AWS Fargate는 컨테이너용 서버리스 컴퓨팅입니다. 컴퓨팅 환경의 설치, 구성 및 관리를 제어해야 한다면 Amazon EC2를 사용할 수 있습니다. Amazon Elastic Container Service(ECS) 또는 Amazon Elastic Kubernetes Service(EKS)와 같은 다수의 컨테이너 오케스트레이션 플랫폼 중에서 선택할 수도 있습니다. 
+  **함수**는 적용하려는 코드에서 실행 환경을 추상화합니다. 예를 들어, AWS Lambda 인스턴스를 실행하지 않고 코드를 실행할 수 있습니다. 

 다음은 성능 효율성 고려 사항에 중점을 둔 질문입니다. 


| PERF 2:  How do you select and use compute resources in your workload? | 
| --- | 
| The more efficient compute solution for a workload varies based on application design, usage patterns, and configuration settings. Architectures can use different compute solutions for various components and turn on different features to improve performance. Selecting the wrong compute solution for an architecture can lead to lower performance efficiency. | 

# 데이터 관리
<a name="perf-data"></a>

 특정 시스템에 대한 최적의 스토리지 솔루션은 데이터 유형의 종류(블록, 파일, 객체), 액세스 패턴(랜덤 또는 순차), 필요한 처리량, 액세스 빈도(온라인, 오프라인, 아카이브), 업데이트 빈도(WORM, 동적) 및 가용성과 내구성 제약 사항에 따라 다릅니다. Well-Architected 워크로드는 용도에 맞게 구축된 데이터 저장소를 사용하므로 다양한 기능을 통해 성능을 개선할 수 있습니다. 

 AWS에서 스토리지는 객체, 블록, 파일이라는 3가지 형태로 제공됩니다. 
+  **객체 스토리지**는 모든 인터넷 위치에서 사용자가 생성한 콘텐츠, 활성 아카이브, 서버리스 컴퓨팅, 빅 데이터 스토리지 또는 백업 및 복구를 위한 데이터에 액세스할 수 있게 하는 확장 가능하고 내구성이 뛰어난 플랫폼을 제공합니다. Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. Amazon S3는 99.999999999%의 내구성을 제공하도록 설계되었으며 전 세계 회사를 위한 수백만 개의 애플리케이션에 대한 데이터를 저장합니다. 
+  **블록 스토리지**는 DAS(Direct-Attached Storage) 또는 SAN(Storage Area Network)과 유사한 고가용성의 일관적이며 지연 시간이 짧은 블록 스토리지를 각 가상 호스트에 제공합니다. Amazon Elastic Block Store(Amazon EBS)는 EC2 인스턴스에서 영구 스토리지에 액세스할 수 있어야 하는 워크로드를 위해 설계되었으며, 적절한 스토리지 용량, 성능 및 비용으로 애플리케이션을 튜닝하는 데 도움이 됩니다. 
+  **파일 스토리지**를 사용하면 여러 시스템에서 공유 파일 시스템에 액세스할 수 있습니다. Amazon Elastic File System(Amazon EFS)과 같은 파일 스토리지 솔루션은 대용량 콘텐츠 리포지토리, 개발 환경, 미디어 스토어 또는 사용자 홈 디렉터리와 같은 사용 사례에 적합합니다. Amazon FSx를 사용하면 주요 파일 시스템을 비용 효율적으로 손쉽게 시작하고 실행할 수 있으므로, 널리 사용되는 오픈 소스 및 상용 라이선스 파일 시스템의 풍부한 기능 세트와 빠른 성능을 활용할 수 있습니다. 

 다음은 성능 효율성 고려 사항에 중점을 둔 질문입니다. 


| PERF 3:  How do you store, manage, and access data in your workload? | 
| --- | 
|  The more efficient storage solution for a system varies based on the kind of access operation (block, file, or object), patterns of access (random or sequential), required throughput, frequency of access (online, offline, archival), frequency of update (WORM, dynamic), and availability and durability constraints. Well-architected systems use multiple storage solutions and turn on different features to improve performance and use resources efficiently.  | 

# 네트워킹 및 콘텐츠 전송
<a name="perf-networking"></a>

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

 AWS에서 네트워킹은 가상화되고 다양한 유형 및 구성으로 제공됩니다. 따라서 요구에 부응하는 네트워킹을 보다 쉽게 찾을 수 있습니다. AWS에서는 제품 기능(예: 강화된 네트워킹, Amazon EC2 네트워킹 최적화 인스턴스, Amazon S3 Transfer Acceleration, 동적 Amazon CloudFront)을 지원하여 네트워크 트래픽을 최적화합니다. 나아가 AWS는 네트워킹 기능(예: Amazon Route 53 지연 속도 기반 라우팅, Amazon VPC 엔드포인트, AWS Direct Connect, AWS Global Accelerator)까지 제공하여 네트워크 거리 또는 지터를 줄여 줍니다. 

 다음은 성능 효율성 고려 사항에 중점을 둔 질문입니다. 


| PERF 4:  How do you select and configure networking resources in your workload? | 
| --- | 
|  This question includes guidance and best practices to design, configure, and operate efficient networking and content delivery solutions in the cloud.  | 

# 프로세스 및 문화
<a name="perf-process"></a>

 워크로드를 설계할 때는 효율적인 고성능 클라우드 워크로드를 더 잘 실행하기 위해 도입할 수 있는 원칙과 관행이 있습니다. 클라우드 워크로드의 성능 효율성을 촉진하는 문화를 도입하려면 다음과 같은 주요 원칙과 관행을 고려하세요. 

 이러한 문화를 구축하기 위해 다음과 같은 핵심 원칙을 고려하세요. 
+  **코드형 인프라:** AWS CloudFormation 템플릿 등의 방식을 사용하여 인프라를 코드로 정의합니다. 템플릿을 사용하면 애플리케이션 코드와 구성과 함께 인프라를 원본 제어에 포함할 수 있습니다. 이렇게 하면 소프트웨어를 개발하는 데 사용하는 것과 동일한 사례를 인프라에 적용할 수 있으므로 검토를 빠르게 반복할 수 있습니다. 
+  **배포 파이프라인:** 소스 코드 리포지토리, 빌드 시스템, 배포, 테스트 자동화 등의 CI/CD(지속적 통합/지속적 전달) 파이프라인을 사용하여 인프라를 배포합니다. 이렇게 하면 반복 가능하며 일관성 있는 저렴한 방식으로 배포를 반복해서 진행할 수 있습니다. 
+  **잘 정의된 지표:** 핵심 성과 지표(KPI) 측정을 위한 지표와 모니터링을 설정합니다. 기술과 비즈니스 지표를 모두 사용하는 것이 좋습니다. 웹 사이트 또는 모바일 앱의 경우 주요 지표는 첫 번째 바이트가 수신되거나 첫 번째 렌더링이 완료될 때까지의 시간을 측정합니다. 그 외에 일반적으로 적용되는 지표에는 스레드 수, 가비지 수집 속도, 대기 상태 등이 있습니다. 요청당 누적 비용 집계액 등의 비즈니스 지표에서는 비용 절감 방법을 파악할 수 있습니다. 지표를 해석할 방법을 신중하게 고려합니다. 예를 들어 평균이 아닌 최대값이나 99번째 백분위수를 선택할 수 있습니다. 
+  **자동 성능 테스트:** 배포 프로세스의 일환으로 더 빠르게 실행되는 테스트가 정상적으로 완료되고 나면 성능 테스트를 자동으로 트리거합니다. 이 자동 테스트에서는 새 환경을 설정하고, 테스트 데이터 등의 초기 조건을 설정한 다음 일련의 벤치마크와 로드 테스트를 실행해야 합니다. 시간별 성능 변화를 추적할 수 있도록 이러한 테스트의 결과를 빌드에 다시 연결해야 합니다. 오래 실행되는 테스트의 경우에는 테스트를 빌드의 다른 부분과 비동기식으로 파이프라인에 포함할 수 있습니다. Amazon EC2 스팟 인스턴스를 사용하여 야간에 성능을 테스트할 수도 있습니다. 
+  **로드 생성:** 통합/사전 녹화 방식의 사용자 여정을 복제하는 일련의 테스트 스크립트를 생성해야 합니다. 이러한 스크립트는 항상 동일한 결과를 반환하고 결합되지 않아야 합니다. 유효한 결과를 얻기 위해 *사전 준비* 스크립트를 포함해야 할 수도 있습니다. 따라서 스크립트를 최대한 많이 테스트하여 프로덕션 환경의 사용 동작을 복제하는 것이 좋습니다. 소프트웨어 또는 SaaS(Software-as-a-Service) 솔루션을 사용하여 로드를 생성할 수 있습니다. 경제적으로 로드를 생성할 수 있는 [AWS Marketplace](https://aws.amazon.com/marketplace/) 솔루션과 [스팟 인스턴스](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) 사용을 고려하세요. 
+  **성능 확인:** 팀이 주요 지표(특히 각 빌드 버전 관련 지표)를 확인할 수 있도록 제공해야 합니다. 이렇게 하면 시간 경과에 따른 긍정적이거나 부정적인 주요 트렌드를 확인할 수 있습니다. 또한 오류나 예외 수 관련 지표도 표시하여 작동 중인 시스템을 테스트하고 있는지를 확인해야 합니다. 
+ **시각화:** 성능 문제, 핫스팟, 대기 상태, 낮은 사용률 등이 확인되는 위치를 명확하게 표시하는 시각화 기술을 사용합니다. 아키텍처 다이어그램 위에 성능 지표를 겹쳐서 표시합니다. 콜 그래프나 코드는 문제를 빠르게 확인하는 데 도움을 줍니다. 
+  **정기적인 검토 프로세스:** 아키텍처의 성능 저하는 성능 검토 프로세스가 없거나 효과적이지 않은 경우 주로 발생합니다. 아키텍처의 성능이 좋지 않은 경우 성능 검토 프로세스를 구현하면 반복적으로 개선을 주도할 수 있습니다. 
+  **지속적인 최적화:** 문화를 도입하여 클라우드 워크로드의 성능 효율성을 지속적으로 최적화합니다. 

 다음은 성능 효율성 고려 사항에 중점을 둔 질문입니다. 


| PERF 5:  What process do you use to support more performance efficiency for your workload?  | 
| --- | 
|  When architecting workloads, there are principles and practices that you can adopt to help you better run efficient high-performing cloud workloads. To adopt a culture that fosters performance efficiency of cloud workloads, consider these key principles and practices.  | 

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

 성능 효율성 관련 AWS 모범 사례에 대해 자세히 알아보려면 다음 리소스를 참조하세요. 

## 설명서
<a name="perf-doc"></a>
+  [Amazon S3 성능 최적화](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Amazon EBS 볼륨 성능](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html?ref=wellarchitected-wp) 

## 백서
<a name="perf-wp"></a>
+  [성능 효율성 원칙](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp) 

## 동영상
<a name="perf-video"></a>
+  [AWS re:Invent 2019: Amazon EC2 기본 사항(CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: 리더십 세션: 유니온의 저장소 상태(STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: 리더십 세션: AWS 전용 데이터베이스(DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: AWS 및 하이브리드 AWS 네트워크 아키텍처에 대한 연결성(NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: 차세대 Amazon EC2 지원: Nitro 시스템 심층 분석(CMP303-R2)](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: 첫 1,000만 사용자로 확장(ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 