Amazon Web Services 한국 블로그

Amazon DynamoDB On-Demand 기능 출시 (서울 리전 포함)

Amazon DynamoDB는 Amazon이 2007년에 발행한 Dynamo 백서에 실린 원칙을 바탕으로 만들어졌으며, 지난 몇 년 동안 AWS 고객의 데이터베이스 사용 방식을 더욱 단순화하는 새로운 기능이 많이 도입되었습니다. 유휴 상태의 암호화, 시점 복구, 인 메모리 캐싱, 오토 스케일링, 99.99%의 가동 시간 SLA(서비스 수준 계약) 등의 기능을 갖추었고, 멀티 리전 글로벌 테이블을 만들 수 있습니다.

하지만, 여전히 많은 고객들이 읽기와 쓰기를 위해 필요한 용량을 산정하고 이를 관리하는데 부담을 느끼고 있습니다.

Amazon DynamoDB 온디맨드 기능 출시

별도 용량 계획 없이 초당 수천 건의 요청을 처리할 수 있는 유연한 새로운 DynamoDB용 결제 옵션인 DynamoDB 온디맨드를 선보입니다.

DynamoDB 온디맨드는 읽기 및 쓰기 요청에 대한 간단한 요청별 결제 요금 옵션을 제공하므로 사용자는 사용량에 대해서만 비용을 지불하면서 비용과 성능의 균형을 쉽게 맞출 수 있습니다.

온디맨드 모드를 사용하는 테이블의 경우 DynamoDB는 이전에 관찰된 트래픽 수준까지 상승하거나 하락할 때 고객의 워크로드를 즉시 수용할 수 있습니다. 트래픽 수준이 새로운 고점에 도달하면 DynamoDB는 신속하게 대응하여 워크로드를 수용합니다.

DynamoDB 콘솔에서는 새 테이블을 만들 때 온디맨드 읽기/쓰기 용량 모드를 선택하거나, 나중에 [Capacity] 탭에서 용량을 변경할 수 있습니다.

온디맨드 모드를 사용하는 테이블은 이 모드에 적용되지 않는 Auto Scaling을 제외한 모든 DynamoDB 기능(예: 유휴 상태의 암호화, 시점 복구, 전역 테이블 등)을 지원합니다.

온디맨드 모드를 사용하는 테이블에 작성된 인덱스는 동일한 확장성과 청구 모델을 상속합니다. 인덱스의 처리 용량 설정을 지정할 필요가 없으며, 사용량에 따라 비용을 지불하게 됩니다. 온디맨드 모드와 그 인덱스를 사용하는 테이블에 대한 읽기/쓰기 트래픽이 없는 경우 데이터 스토리지 비용만 지불합니다.

DynamoDB 온디맨드는 애플리케이션 트래픽을 예측 및 제어하기가 어렵고, 워크로드가 짧은 기간 동안 급증하거나 평균 테이블 사용률이 고점보다 훨씬 낮은 경우에 유용합니다. 예를 들면 다음과 같습니다.

  • 새로운 애플리케이션 또는 데이터베이스 워크로드를 예측하기 까다로운 애플리케이션
  • 사용량에 따라 요금을 지불하는 서버리스 스택을 작업 중인 개발자
  • 구독자별로 테이블을 배포하는 데 있어서 단순성과 리소스 분리를 원하는 SaaS 제공업체 및 ISV(Independent Software Vendor)

하루에 1회, 프로비저닝된 용량에서 온디맨드로 테이블을 변경할 수 있습니다. 온디맨드 용량에서 프로비저닝된 용량으로는 횟수에 제한 없이 변경할 수 있습니다.

간단한 성능 테스트

새로 생성된 온디맨드 모드를 사용하는 DynamoDB 테이블에 대한 부하 테스트를 실시해 보겠습니다.

서버리스 애플리케이션을 두 가지 만들었습니다.

  • 첫 번째 애플리케이션은 AWS Lambda 함수와 Amazon API Gateway를 사용하여 DynamoDB 테이블을 기반으로 REST API를 생성합니다. 이 API를 사용하면 get, post, put, delete와 같은 HTTP 메서드를 사용하여 테이블의 항목을 읽고, 추가하고, 업데이트하고, 삭제할 수 있습니다.
  • 두 번째 애플리케이션은 1,000개의 Lambda 함수를 병렬로 시작하여, 항목에 대한 임의의 HTTP 메서드와 임의의 데이터를 사용하여 API 엔드포인트에 대한 부하를 생성합니다.

각 부하 생성 함수는 100개의 동시 요청을 실행하고, 요청이 모두 종료되면 다시 100개의 요청을 시작하는 식으로 1분 동안 부하를 생성합니다. 부하가 서서히 상승하는 기간 없이 즉시 최대치로 부하 생성이 시작됩니다.

DynamoDB 콘솔에서 이 테이블에 대한 [Metrics] 탭을 보면, 초당 5,000개에 가까운 요청의 고점에 매우 빠르게 도달한 것을 알 수 있습니다.

API 게이트웨이에서 Lambda 함수와 DynamoDB 테이블로의 서버리스 스택 확장은 완벽하게 관리되었습니다. 적절한 처리량을 계획할 필요가 없었고, 구축하려는 애플리케이션 로직에 집중할 수 있었습니다.

DynamoDB 온디맨드는 사용량에 대해서만 요금을 지불합니다. 예를 들어 미국 동부(버지니아 북부) 리전에서는 쓰기 요청 단위 백만 개당 1.25 USD 및 읽기 요청 단위 백만 개당 0.25 USD의 요금과 일반적인 데이터 스토리지 비용이 부과됩니다.

AWS CLI(명령줄 인터페이스), AWS SDKAWS CloudFormation을 사용하여 온디맨드 모드를 사용하는 테이블을 생성하거나 기존 테이블의 읽기/쓰기 용량 모드를 변경할 수 있습니다.

지금 이용 가능

DynamoDB 온디맨드는 모든 상용 리전에서 글로벌하게 사용 가능합니다.

개발자와 소프트웨어 업체(ISV), 클라우드 서비스(SaaS) 제공업체에 새로운 가능성을 보여 줄 수 있게 된 것을 매우 기쁘게 생각하며, 요청별 요금 지불 방식의 이 솔루션으로 여러분이 어떤 결과물을 만들어낼지 기대됩니다.

– Danilo Poccia;