

# 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/) 