DynamoDB Accelerator(DAX)를 통한 인 메모리 가속화 - Amazon DynamoDB

DynamoDB Accelerator(DAX)를 통한 인 메모리 가속화

Amazon DynamoDB는 규모와 성능을 위해 설계되었습니다. 대부분의 경우 DynamoDB 응답 시간은 한 자릿수 밀리초 단위로 측정할 수 있습니다. 하지만 마이크로초 단위의 응답시간이 필요한 특정 사용 사례가 있습니다. 이러한 사용 사례의 경우 DynamoDB Accelerator(DAX)는 최종적 일관된 데이터를 액세스할 때 빠른 응답 시간을 제공합니다.

DAX는 DynamoDB와 호환되는 캐싱 서비스로 까다로운 애플리케이션에서 빠른 인 메모리 성능을 활용할 수 있다는 것이 장점입니다. DAX는 세 가지 주요 시나리오에 대응합니다.

  1. DAX는 인 메모리 캐시로서 최종적 일관된 읽기 워크로드의 응답 시간을 한 자릿수 밀리초에서 마이크로초까지 대폭 줄여줍니다.

  2. DAX는 DynamoDB와 API 호환되는 관리형 서비스를 제공하여 운영 및 애플리케이션 복잡성을 줄여줍니다. 따라서 기존 애플리케이션에서 사용하기 위한 최소한의 기능 변경만 필요합니다.

  3. 읽기 중심적이거나 일정 시간에 사용량이 급증하는 워크로드의 경우 DAX는 읽기 용량 단위를 오버프로비저닝해야 하는 필요성을 줄여 높은 처리량을 제공하고 잠재적 운영 비용을 절감합니다. 이러한 이점은 특히 개별 키를 반복적으로 읽어야 하는 애플리케이션에 유용합니다.

DAX는 서버 측 암호화를 지원합니다. 유휴 시 암호화를 통해 DAX에 의해 디스크에 유지되는 데이터가 암호화됩니다. DAX는 기본 노드에서 읽기 전용 복제본으로 변경 사항을 전파하는 작업의 일환으로 디스크에 데이터를 작성합니다. 자세한 내용은 DAX 저장 데이터 암호화 단원을 참조하십시오.

DAX는 전송 중 암호화도 지원하여 애플리케이션과 클러스터 간의 모든 요청 및 응답이 TLS(전송 수준 보안)로 암호되고 클러스터에 대한 연결은 클러스터 x509 인증서 확인을 통해 인증될 수 있도록 합니다. 자세한 내용은 DAX 전송 중 데이터 암호화 단원을 참조하십시오.

DAX 사용 사례

DAX는 DynamoDB 테이블의 최종적 일관된 데이터에 대한 액세스 권한을 대기 시간이 거의 없이 제공합니다. 다중 AZ DAX 클러스터는 초당 수백만 개의 요청을 처리할 수 있습니다.

DAX는 다음과 같은 유형의 애플리케이션에 적합합니다.

  • 읽기에 가장 빠른 응답 시간을 요구하는 애플리케이션. 이에 대한 몇 가지 예로 실시간 입찰, 소셜 게임, 거래 애플리케이션 등을 들 수 있습니다. DAX는 이러한 사용 사례를 위한 빠른 인 메모리 읽기 성능을 제공합니다.

  • 소수의 항목을 다른 항목보다 더 자주 읽는 애플리케이션. 예를 들면, 인기 많은 상품에 대해 하루 동안 할인 행사를 진행하는 전자 상거래 시스템을 들 수 있습니다. 할인 행사 동안 다른 모든 상품에 비해 해당 상품에 대한 수요(및 DynamoDB의 해당 데이터)가 급격하게 늘어납니다. ‘핫’ 키 및 균일하지 않은 트래픽 분포의 영향을 완화하기 위해 하루 행사가 종료될 때까지 DAX 캐시에 대한 읽기 작업을 오프로드할 수 있습니다.

  • 읽기 집약적이지만 비용에 민감한 애플리케이션. DynamoDB를 사용하여 애플리케이션에 필요한 초당 읽기 수를 프로비저닝합니다. 읽기 작업이 증가하면 테이블의 할당 읽기 처리량을 추가 비용으로 늘릴 수 있습니다. 또는 애플리케이션의 작업을 DAX 클러스터로 오프로드하고 그 밖에 구매해야 할 읽기 용량 단위 수를 줄일 수도 있습니다.

  • 대량 데이터 집합에 대해 반복적인 읽기가 필요한 애플리케이션. 이러한 애플리케이션은 다른 애플리케이션에서 데이터베이스 리소스를 잠재적으로 전환시킬 수 있습니다. 예를 들어 지역 날씨 데이터를 장기적으로 분석하는데 DynamoDB 테이블에서 모든 읽기 용량이 일시적으로 소비될 수 있습니다. 이러한 상황은 동일한 데이터에 액세스해야 하는 다른 애플리케이션에 부정적인 영향을 미치게 됩니다. DAX를 사용하면 캐시된 데이터에 대한 날씨 분석을 대신 수행할 수 있습니다.

DAX는 다음과 같은 유형의 애플리케이션에 적합하지 않습니다.

  • 강력한 일관된 읽기가 필요한(또는 최종적 일관된 읽기를 허용할 수 없는) 애플리케이션.

  • 읽기 작업에 마이크로초 단위의 응답 시간이 요구되지 않거나, 반복되는 읽기 활동을 기본 테이블에서 제거하지 않아도 되는 애플리케이션.

  • 쓰기 집약적인 애플리케이션으로, 쓰기 볼륨이 크면 클러스터의 DAX 노드 간 복제가 증가합니다. 이로 인해 리소스 소비가 증가하고 가용성 문제가 발생할 위험이 있습니다.

  • 반복 읽기 횟수가 많지 않은 애플리케이션으로, DAX는 캐시 적중률이 90%를 초과할 때 가장 잘 작동합니다. 캐시 적중률이 낮을수록 캐시 누락이 증가하여 DAX 클러스터 전체에서 더 많은 리소스를 소비합니다.

DAX 사용 참고 사항

  • DAX를 사용할 수 있는 AWS 리전 목록은 Amazon DynamoDB 요금을 참조하세요.

  • DAX는 이러한 프로그래밍 언어의 AWS 제공 클라이언트를 사용하여 Go, Java, Node.js, Python 및 .NET로 작성된 애플리케이션을 지원합니다.

  • DAX는 EC2-VPC 플랫폼에서만 사용할 수 있습니다.

  • DAX 클러스터 서비스 역할 정책은 DynamoDB 테이블에 대한 메타데이터를 유지하기 위해 dynamodb:DescribeTable 작업을 허용해야 합니다.

  • DAX 클러스터는 저장한 항목의 속성 이름에 대한 메타데이터를 유지합니다. 이러한 메타데이터는 무기한 유지됩니다(해당 항목이 만료되거나 캐시에서 제거된 이후에도). 무한한 수의 속성 이름을 사용하는 애플리케이션은 시간이 지남에 따라 DAX 클러스터에서 메모리 부족을 야기할 수 있습니다. 이러한 제한은 최상위 속성 이름에만 적용되며 중첩 속성 이름에는 적용되지 않습니다. 문제가 있는 최상위 속성 이름의 예에는 타임스탬프, UUID 및 세션 ID가 포함됩니다.

    이러한 제한은 속성 이름에만 적용되며 해당 값에는 적용되지 않습니다. 다음과 같은 항목은 문제가 되지 않습니다.

    { "Id": 123, "Title": "Bicycle 123", "CreationDate": "2017-10-24T01:02:03+00:00" }

    그러나 다음과 같은 항목은 충분한 수가 있으며 타임스탬프가 서로 다른 경우에 문제가 됩니다.

    { "Id": 123, "Title": "Bicycle 123", "2017-10-24T01:02:03+00:00": "created" }