

# PERF 4  데이터베이스 솔루션을 어떻게 선택합니까?
<a name="w2aac19c11b5c11"></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>

 워크로드의 액세스 패턴을 기준으로 하여 사용할 서비스와 기술을 결정합니다. 액세스 패턴은 성능과 확장 등 기능과 관련 없는 요구 사항은 물론 데이터베이스 및 스토리지 솔루션의 선택에 큰 영향을 미칩니다. 첫 번째로 생각해 볼 점은 트랜잭션, ACID 규정 준수 및 일관된 읽기의 필요성입니다. 모든 데이터베이스가 이를 지원하지는 않으며, 대부분의 NoSQL 데이터베이스는 최종 정합성 모델을 제공합니다. 두 번째로 중요한 점은 시간과 공간에 따른 쓰기 및 읽기 분포입니다. 전 세계에 분산된 애플리케이션의 경우 최적의 스토리지 솔루션을 식별할 수 있도록 트래픽 패턴, 지연 시간 및 액세스 요구 사항을 고려해야 합니다. 세 번째로 쿼리 패턴 유연성, 임의의 액세스 패턴 및 일회성 쿼리를 선택하는 것도 중요합니다. 텍스트 및 자연어 처리, 시계열 및 그래프에 대한 고도로 전문화된 쿼리 기능을 중심으로 한 고려 사항도 염두에 두어야 합니다. 

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

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

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

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

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

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


|  AWS 서비스  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  스토리지 확장  |  프로비저닝된 스토리지를 자동 확장하는 데 사용 가능한 스토리지 자동 확장 옵션을 이용하면 프로비저닝된 IOPS 스토리지 유형을 활용할 때 프로비저닝된 스토리지를 독립적으로 확장할 수 있습니다.  |  자동으로 확장됩니다. 테이블은 크기에 제한이 없습니다.  |  스토리지 자동 확장 옵션을 사용할 수 있는 프로비저닝된 확장 스토리지입니다.  |  스토리지는 인스턴스 유형 또는 개수에 연결된 메모리 내에 있습니다.  |  스토리지 자동 확장 옵션을 사용하여 프로비저닝된 스토리지를 자동으로 확장할 수 있습니다.  |  인 메모리 및 마그네틱 계층에 대한 보존 기간을 일 단위로 구성합니다.  |  테이블 스토리지를 자동으로 확장 및 축소합니다.  |  자동으로 확장됩니다. 테이블은 크기에 제한이 없습니다.  | 

 

 **구현 단계:** 

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.  솔루션 배포 측면과 데이터베이스 액세스 요구 사항(글로벌, 다중 가용 영역, 읽기 전용 복제본, 다중 쓰기 노드)을 문서화합니다. 

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

## 리소스
<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://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.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)

 **관련 예시:** 
+  [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) 