Amazon DynamoDB
개발자 안내서 (API 버전 2012-08-10)

읽기/쓰기 용량 모드

Amazon DynamoDB에는 테이블에 대한 읽기 및 쓰기 처리를 위한 두 가지 읽기/쓰기 용량 모드가 있습니다.

  • 온디맨드

  • 프로비저닝됨(기본값, 프리 티어 이용 가능)

읽기/쓰기 용량 모드는 읽기 및 쓰기 처리량에 대한 청구 방법과 용량 관리 방법을 제어합니다. 테이블을 생성할 때 읽기/쓰기 용량 모드를 설정하거나 나중에 변경할 수 있습니다.

글로벌 보조 인덱스는 기본 테이블에서 읽기/쓰기 용량 모드를 상속합니다. 자세한 내용은 읽기/쓰기 용량 모드 변경 시 고려 사항 단원을 참조하십시오.

온디맨드 모드

Amazon DynamoDB 온디맨드는 용량 계획 없이 초당 수천 개의 요청을 처리할 수 있는 유연한 청구 옵션입니다. DynamoDB 온디맨드는 읽기 및 쓰기 요청에 대해 요청당 지불 가격을 제공하므로 사용하는 만큼에 대해서만 비용을 지불하면 됩니다.

온디맨드 모드를 선택하면 DynamoDB는 이전에 도달한 트래픽 수준까지 확장 또는 축소할 때 즉시 워크로드를 수용합니다. 워크로드 트래픽 수준이 새로운 피크를 기록할 경우에는 DynamoDB가 워크로드를 수용하기 위해 신속하게 조정을 수행합니다. 온디맨드 모드를 사용하는 테이블은 DynamoDB가 이미 제공하는 것과 동일한 한 자릿수 밀리초 지연 시간, 서비스 수준 계약(SLA) 약정 및 보안을 제공합니다. 새로운 테이블과 기존 테이블에 모두 온디맨드를 선택할 수 있으며, 코드를 변경하지 않고 기존 DynamoDB API를 계속 사용할 수 있습니다.

온디맨드 모드는 다음 중 하나에 해당되는 경우에 유용한 옵션입니다.

  • 알 수 없는 워크로드를 포함하는 테이블을 새로 만들 경우

  • 애플리케이션 트래픽이 예측 불가능한 경우

  • 사용한 만큼에 대해서만 지불하는 요금제를 사용하려는 경우

요청 빈도는 DynamoDB 처리량 기본 테이블 한도에 의해서만 제한되지만, 요청에 따라 늘릴 수 있습니다. 자세한 내용은 처리량 기본 제한 단원을 참조하십시오.

온디맨드 방식으로 시작하려면 온디맨드 모드를 사용하도록 테이블을 생성하거나 업데이트할 수 있습니다. 자세한 내용은 테이블 기본 작업 단원을 참조하십시오.

24시간마다 한 번 읽기/쓰기 용량 모드를 전환할 수 있습니다. 읽기/쓰기 용량 모드를 전환할 때 고려해야 하는 문제는 읽기/쓰기 용량 모드 변경 시 고려 사항 단원을 참조하십시오.

참고

온디맨드는 현재 AWS Data Pipeline, DynamoDB 가져오기/내보내기 도구 및 AWS Glue에서 지원되지 않습니다.

읽기 요청 단위 및 쓰기 요청 단위

온디맨드 모드 테이블의 경우 애플리케이션에서 수행할 것으로 예상되는 읽기 및 쓰기 처리량을 지정할 필요가 없습니다. DynamoDB에서는 읽기 요청 단위 및 쓰기 요청 단위의 측면에서 애플리케이션이 테이블에 대해 수행하는 읽기 및 쓰기에 대해 요금이 부과됩니다.

  • 읽기 요청 단위 1은 강력히 일관된 읽기 요청 1 또는 최종적 일관된 읽기 요청 2(최대 4 KB 크기 항목의 경우)를 나타냅니다. 트랜잭션 읽기 요청은 최대 4 KB 크기 항목의 1회 읽기를 수행하는 데 2개의 읽기 요청 단위가 필요합니다. 4 KB보다 큰 항목을 읽어야 하는 경우, DynamoDB에 추가 읽기 요청 단위가 필요합니다. 필요한 총 읽기 요청 단위 수는 항목 크기 및 최종적 일관된 읽기(Eventually Consistent Read)와 강력한 일관된 읽기(Strongly Consistent Read) 중 어느 것을 원하는지에 따라 달라집니다. 예를 들어 항목 크기가 8KB인 경우 강력히 일관된 읽기 1회를 지속하는 데 읽기 요청 단위 2개가 필요하고, 최종적 일관된 읽기를 선택한 경우 읽기 요청 단위 1개가 필요하고, 트랜잭션 읽기 요청의 경우 읽기 요청 단위 4개가 필요합니다.

    참고

    DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 읽기 일관성 단원을 참조하십시오.

  • 쓰기 요청 단위 1은 최대 1 KB 크기의 항목에 대해 1회 쓰기를 나타냅니다. 1 KB보다 큰 항목을 써야 하는 경우, DynamoDB가 추가 쓰기 요청 단위를 사용해야 합니다. 트랜잭션 쓰기 요청은 최대 1 KB 크기 항목의 1회 쓰기를 수행하는 데 2개의 쓰기 요청 단위가 필요합니다. 필요한 총 쓰기 요청 단위 수는 항목 크기에 따라 결정됩니다. 예를 들어 항목 크기가 2KB인 경우 쓰기 요청 1회를 지속하는 데 쓰기 요청 단위 2개가 필요하고, 트랜잭션 쓰기 요청의 경우 쓰기 요청 단위 4개가 필요합니다.

DynamoDB 온디맨드를 사용할 수 있는 AWS 리전 목록은 Amazon DynamoDB 요금을 참조하십시오.

피크 트래픽 및 조정 속성

온디맨드 용량 모드를 사용하는 DynamoDB 테이블은 애플리케이션의 트래픽 볼륨에 따라 자동으로 조정됩니다. 온디맨드 용량 모드의 테이블은 이전 패크 트래픽의 최대 2배 용량을 즉시 수용합니다. 예를 들어, 애플리케이션의 트래픽 패턴이 25,000~50,000회 사이의 강력히 일관된 초당 읽기 범위 내에서 달라지고 이전 트래픽 피크의 초당 읽기 횟수가 50,000회인 경우 온디맨드 용량 모드에서는 초당 최대 100,000회 읽기 지속적 트래픽을 즉시 수용합니다. 애플리케이션이 초당 100,000회 읽기 트래픽을 지속하는 경우 해당 피크가 새로운 이전 피크가 되어 후속 트래픽은 초당 최대 200,000회 읽기에 도달할 수 있습니다.

테이블에 이전 피크의 2배 이상 용량이 필요한 경우 DynamoDB는 트래픽 볼륨이 증가할 때 워크로드 조절이 발생하지 않도록 더 많은 용량을 자동으로 할당합니다. 하지만 30분 이내에 이전 피크의 2배 용량을 초과할 경우 조절이 발생할 수 있습니다. 예를 들어, 애플리케이션의 트래픽 패턴이 25,000~50,000회 사이의 강력히 일관된 초당 읽기 범위 내에서 달라지고 이전에 도달한 트래픽 피크의 초당 읽기 횟수가 50,000회인 경우 DynamoDB에서 최대 100,000회 이상 읽기를 구동하기 이전에 최소 30분 이상의 간격을 두고 트래픽을 늘리는 것이 좋습니다.

온디맨드 용량 모드의 초기 처리량

최근에 처음으로 기존 테이블을 온디맨드 용량 모드로 전환했거나 온디맨드 용량 모드를 활성화한 상태에서 새 테이블을 생성한 경우, 이전에 온디맨드 용량 모드를 사용하여 테이블에서 트래픽을 처리한 적이 없더라도 테이블의 이전 피크 설정은 다음과 같습니다.

  • 온디맨드 용량 모드에서 새로 생성한 테이블: 이전 피크는 2,000회 쓰기 요청 단위 또는 6,000회 읽기 요청 단위입니다. 이전 피크의 최대 2배를 즉시 구동할 수 있으므로 새로 생성된 온디맨드 테이블에서 최대 4,000회 쓰기 요청 단위, 12,000회 읽기 요청 단위 또는 이 둘을 선형적을 조합한 용량을 처리할 수 있습니다.

  • 온디맨드 용량 모드로 전환된 기존 테이블: 이전 피크는 테이블에 대해 프로비저닝된 최대 이전 WCU(쓰기 용량 유닛) 및 RCU(읽기 용량 유닛)나 온디맨드 용량 모드를 통해 새로 생성된 테이블의 설정 중 더 큰 값입니다.

읽기/쓰기 용량 모드 전환 중 테이블 동작

테이블을 프로비저닝된 용량 모드에서 온디맨드 용량 모드로 전환할 경우 DynamoDB에서 테이블 및 파티션의 구조가 다양하게 변경됩니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. 전환 기간 동안 테이블은 이전에 프로비저닝된 쓰기 용량 단위 및 읽기 용량 단위량과 일치하는 처리량을 제공합니다. 온디맨드 용량 모드에서 프로비저닝된 용량 모드로 다시 전환할 경우 테이블이 온디맨드 용량 모드로 설정되었을 때 도달한 이전 피크와 일치하는 처리량을 제공합니다.

프로비저닝된 모드

프로비저닝된 모드를 선택한 경우 애플리케이션에 필요한 초당 읽기 및 쓰기 횟수를 지정합니다. Auto Scaling을 사용하여 트래픽 변경에 따라 테이블의 프로비저닝된 용량을 자동으로 조정할 수 있습니다. 그러면 DynamoDB 사용을 정의된 요청 속도 이하로 유지하도록 관리하여 비용을 예측하는 데 도움이 됩니다.

프로비저닝된 모드는 다음 중 하나에 해당되는 경우에 유용한 옵션입니다.

  • 애플리케이션 트래픽이 예측 가능한 경우

  • 트래픽이 일관되거나 점진적으로 변화하는 애플리케이션을 실행할 경우

  • 비용 관리를 위해 용량 요구 사항을 예측할 수 있는 경우

읽기 용량 단위 및 쓰기 용량 단위

프로비저닝된 모드 테이블의 경우 읽기 용량 단위(RCU) 및 쓰기 용량 단위(WCU)의 측면에서 처리량을 지정합니다.

  • 읽기 용량 유닛 1은 초당 강력히 일관된 읽기 1 또는 초당 최종적 일관된 읽기 2(최대 4 KB 크기 항목의 경우)를 나타냅니다. 트랜잭션 읽기 요청은 최대 4 KB 크기 항목의 초당 1회 읽기를 수행하는 데 2개의 읽기 용량 단위가 필요합니다. 4 KB보다 큰 항목을 읽어야 하는 경우, DynamoDB가 추가 읽기 용량 단위를 사용해야 합니다. 필요한 총 읽기 용량 단위 수는 항목 크기 및 최종적 일관된 읽기(Eventually Consistent Read)와 강력한 일관된 읽기(Strongly Consistent Read) 중 어느 것을 원하는지에 따라 달라집니다. 예를 들어 항목 크기가 8KB인 경우 강력히 일관된 초당 읽기 1회를 지속하는 데 읽기 용량 단위 2개가 필요하고, 최종적 일관된 읽기를 선택한 경우 읽기 용량 단위 1개가 필요하고, 트랜잭션 읽기 요청의 경우 읽기 용량 단위 4개가 필요합니다. 자세한 내용은 읽기 작업의 용량 단위 소비량 단원을 참조하십시오.

    참고

    DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 읽기 일관성 단원을 참조하십시오.

  • 쓰기 용량 유닛 1은 최대 1 KB 크기의 항목에 대해 초당 1회 쓴다는 의미입니다. 1 KB보다 큰 항목을 써야 하는 경우, DynamoDB가 추가 쓰기 용량 단위를 사용해야 합니다. 트랜잭션 쓰기 요청은 최대 1 KB 크기 항목의 초당 1회 쓰기를 수행하는 데 2개의 쓰기 용량 단위가 필요합니다. 필요한 총 쓰기 용량 단위 수는 항목 크기에 따라 결정됩니다. 예를 들어 항목 크기가 2KB인 경우 초당 쓰기 요청 1회를 지속하는 데 쓰기 용량 단위 2개가 필요하고, 트랜잭션 쓰기 요청의 경우 쓰기 용량 단위 4개가 필요합니다. 자세한 내용은 쓰기 작업의 용량 단위 소비량 단원을 참조하십시오.

중요

온디맨드 테이블에서 DescribeTable을 호출할 경우 읽기 용량 단위와 쓰기 용량 단위는 0으로 설정됩니다.

애플리케이션이 더 큰 항목(400 KB의 DynamoDB 최대 항목 크기까지)을 읽거나 쓸 경우 더 많은 용량 유닛을 사용합니다.

예를 들어 6 읽기 용량 단위와 6 쓰기 용량 단위를 수용하는 프로비저닝된 테이블을 생성한다고 가정하겠습니다. 이렇게 설정하면 애플리케이션에서 다음을 수행할 수 있습니다.

  • 초당 최대 24KB의 강력히 일관된 읽기 수행(4 KB × 읽기 용량 단위 6)

  • 초당 최대 48KB의 최종적 일관된 읽기 수행(읽기 처리량의 2배)

  • 초당 최대 3KB의 트랜잭션 읽기 요청 수행

  • 초당 최대 6KB를 쓰기(1 KB × 쓰기 용량 유닛 6)

  • 초당 최대 3KB의 트랜잭션 쓰기 요청 수행

자세한 내용은 프로비저닝된 테이블에서 처리량 설정 관리 단원을 참조하십시오.

할당된 처리량는 애플리케이션이 테이블이나 인덱스에서 사용할 수 있는 최대 용량입니다. 테이블 또는 인덱스에 대해 프로비저닝된 처리량을 애플리케이션에서 초과할 경우 요청 조정이 적용됩니다.

조절 기능은 애플리케이션에서 용량 단위를 너무 많이 사용하지 않도록 방지합니다. 요청이 조정될 경우 HTTP 400 코드(Bad Request) 및 ProvisionedThroughputExceededException과 함께 실패합니다. AWS SDK는 조정된 요청 재시도를 기본적으로 지원하므로(오류 재시도 횟수 및 지수 백오프 참조) 이 로직을 직접 쓸 필요는 없습니다.

AWS Management 콘솔을 사용하여 프로비저닝된 처리량과 실제 처리량을 모니터링하고, 필요한 경우 처리량 설정을 수정할 수 있습니다.

DynamoDB Auto Scaling

DynamoDB Auto Scaling은 테이블 및 글로벌 보조 인덱스의 처리량을 적극적으로 관리합니다. Auto Scaling을 사용하면 읽기 및 쓰기 용량 단위에 범위(상한 및 하한)를 지정할 수 있습니다. 또한 해당 범위에서의 목표 사용률을 정의할 수 있습니다. DynamoDB Auto Scaling은 애플리케이션 워크로드가 증가하거나 감소하는 경우에도 목표 사용률을 유지하려고 시도합니다.

DynamoDB Auto Scaling을 사용하면 테이블 또는 글로벌 보조 인덱스가 프로비저닝된 읽기 및 쓰기 용량을 늘려 조절 요청 없이 갑작스러운 트래픽 증가를 처리할 수 있습니다. 워크로드가 감소할 경우 DynamoDB Auto Scaling은 사용하지 않는 프로비저닝된 용량에 대한 요금을 지불하지 않도록 처리량을 줄일 수 있습니다.

참고

AWS Management 콘솔을 사용하여 테이블이나 글로벌 보조 인덱스를 생성한 경우 DynamoDB Auto Scaling이 기본적으로 활성화됩니다.

Auto Scaling 설정은 콘솔, AWS CLI 또는 AWS SDK 중 하나를 사용하여 언제든지 관리할 수 있습니다.

자세한 내용은 DynamoDB Auto Scaling을 사용하여 자동으로 처리 용량 관리 단원을 참조하십시오.

예약 용량

DynamoDB 고객은 Amazon DynamoDB 요금에서 설명한 대로 예약 용량을 미리 구매할 수 있습니다. 예약 용량을 구입할 경우 선납금을 1회 지불하고 일정 기간에 대해 최소 사용량 수준을 약정합니다. 사전에 읽기 및 쓰기 용량 단위를 예약하면 온 디맨드 프로비저닝된 처리량 설정에 비해 비용을 크게 절감할 수 있습니다.

참고

온디맨드 모드에서는 예약된 용량을 사용할 수 없습니다.

예약 용량을 관리하려면 DynamoDB 콘솔로 이동하여 [Reserved Capacity]를 선택합니다.

참고

사용자에게 콘솔의 나머지 기능은 액세스를 허용하지만 예약 용량 확인 또는 구매는 금지할 수 있습니다. 자세한 내용은 Amazon DynamoDB에 대한 인증 및 액세스 제어의 "예약 용량 상품 구매를 방지하는 권한을 부여"를 참조하십시오.