PERF03-BP02 데이터 스토어에 사용 가능한 구성 옵션 평가 - AWS Well-Architected 프레임워크

PERF03-BP02 데이터 스토어에 사용 가능한 구성 옵션 평가

데이터 스토어에 사용할 수 있는 다양한 기능과 구성 옵션을 이해하고 평가하여 워크로드에 맞는 스토리지 공간과 성능을 최적화하세요.

일반적인 안티 패턴:

  • 모든 워크로드에 Amazon EBS와 같은 하나의 스토리지 유형만 사용합니다.

  • 모든 스토리지 계층을 기준으로 한 실제 테스트 없이 워크로드 전체에 프로비저닝된 IOPS를 사용합니다.

  • 선택한 데이터 관리 솔루션의 구성 옵션을 알지 못합니다.

  • 다른 사용 가능한 구성 옵션을 고려하지 않고 인스턴스 크기만 늘립니다.

  • 데이터 스토어의 규모 조정 특성을 테스트하고 있지 않습니다.

이 모범 사례 확립의 이점: 데이터 스토어 구성을 탐색하고 실험하여 인프라 비용을 절감하고, 성능을 개선하며, 워크로드를 유지하는 데 들여야 하는 수고를 줄일 수 있습니다.

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

구현 가이드

워크로드에는 데이터 스토리지 및 액세스 요구 사항에 따라 하나 이상의 데이터 스토어가 사용될 수 있습니다. 성능 효율성과 비용을 최적화하려면 데이터 액세스 패턴을 평가하여 적절한 데이터 스토어 구성을 결정해야 합니다. 데이터 스토어 옵션을 탐색하는 동안 스토리지 옵션, 메모리, 컴퓨팅, 읽기 복제본, 일관성 요구 사항, 연결 풀링 및 캐싱 옵션과 같은 다양한 측면을 고려하세요. 이러한 다양한 구성 옵션을 실험하여 성능 효율성 지표를 개선해 보세요.

구현 단계

  • 데이터 스토어의 현재 구성(인스턴스 유형, 스토리지 크기, 데이터베이스 엔진 버전 등)을 파악합니다.

  • AWS 설명서 및 모범 사례를 검토하여 데이터 스토어의 성능을 개선하는 데 도움이 되는 권장 구성 옵션에 대해 알아보세요. 다음과 같은 주요 데이터 스토어 옵션을 고려해야 합니다.

    구성 옵션 예시
    읽기 오프로드(예: 읽기 전용 복제본 및 캐싱)
    • DynamoDB 테이블의 경우 캐싱을 위해 DAX를 사용하여 읽기를 오프로드할 수 있습니다.

    • Amazon ElastiCache(Redis OSS) 클러스터를 생성하고 요청된 항목이 없는 경우 데이터베이스로 되돌아가서 캐시에서 먼저 읽도록 애플리케이션을 구성할 수 있습니다.

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

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

    쓰기 규모 조정(예: 파티션 키 샤딩 또는 대기열 도입)
    • 관계형 데이터베이스의 경우 인스턴스 크기를 늘려 확장된 워크로드를 수용하거나 프로비저닝된 IOPS를 늘려 기본 스토리지에 대한 처리량을 증대할 수 있습니다.

    • 데이터베이스에 직접 쓰는 대신 데이터베이스 앞에 대기열을 적용할 수도 있습니다. 이 패턴을 사용하면 데이터베이스에서 수집 정보를 분리하고 흐름 속도를 제어하여 데이터베이스가 과부하되지 않도록 할 수 있습니다. 

    • 단기간 트랜잭션을 많이 만들지 않고 쓰기 요청을 일괄 처리하면 쓰기 볼륨이 많은 관계형 데이터베이스의 처리량을 향상시킬 수 있습니다.

    • DynamoDB와 같은 서버리스 데이터베이스는 자동으로 쓰기 처리량을 확장하거나 용량 모드에 따라 프로비저닝된 쓰기 용량 단위(WCU)를 조정하여 확장할 수 있습니다. 

    • 특정 파티션 키에 대한 처리량 제한에 도달하면 핫 파티션과 관련된 문제가 발생할 수 있습니다. 이 문제는 보다 고르게 분산된 파티션 키를 선택하거나 파티션 키를 쓰기 샤딩하여 해결할 수 있습니다. 

    데이터 세트의 수명 주기 관리 정책
    • Amazon S3 수명 주기를 사용하여 전체 수명 주기 동안 객체를 관리할 수 있습니다. 액세스 패턴을 알 수 없거나 패턴이 변화하거나 예측할 수 없는 경우 Amazon S3 Intelligent-Tiering을 사용할 수 있으며, 이를 통해 액세스 패턴을 모니터링하고, 액세스하지 않은 객체를 더 저렴한 액세스 계층으로 자동으로 이동할 수 있습니다. Amazon S3 Storage Lens 지표를 활용하여 수명 주기 관리에서 최적화 기회와 격차를 식별할 수 있습니다.

    • Amazon EFS 수명 주기 관리는 파일 시스템에 대한 파일 스토리지를 자동으로 관리합니다.

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

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

  • 비프로덕션 환경에서 실험 및 벤치마킹을 수행하여 워크로드 요구 사항을 해결할 수 있는 구성 옵션을 파악합니다.

  • 실험을 마친 후에는 마이그레이션을 계획하고 성과 지표를 검증합니다.

  • AWS 모니터링(예: Amazon CloudWatch) 및 최적화(예: Amazon S3 Storage Lens) 도구를 활용하고 실제 사용 패턴에 기반하여 데이터 스토어를 지속적으로 최적화합니다.

리소스

관련 문서:

관련 비디오:

관련 예제: