읽기/쓰기 용량 모드 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

읽기/쓰기 용량 모드

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

  • 온디맨드

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

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

보조 인덱스는 기본 테이블에서 읽기/쓰기 용량 모드를 상속합니다. 자세한 정보는 읽기/쓰기 용량 모드 변경 시 고려 사항을 참조하세요.

다음 비디오에서는 테이블 용량 모드에 대해 소개합니다.

DynamoDB 테이블의 비용 최적화를 위한 모범 사례에 대한 자세한 내용은 DynamoDB 테이블의 비용 최적화 섹션을 참조하세요.

온디맨드 모드

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

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

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

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

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

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

요청 빈도는 DynamoDB 처리량 기본 테이블 할당량에 의해서만 제한되지만, 요청에 따라 늘릴 수 있습니다. 자세한 정보는 처리량 기본 할당량을 참조하세요.

온디맨드 방식으로 시작하려면 온디맨드 모드를 사용하도록 테이블을 생성하거나 업데이트할 수 있습니다. 자세한 정보는 DynamoDB 테이블에 대한 기본 작업을 참조하세요.

테이블은 24시간마다 한 번씩 온디맨드 모드로 전환할 수 있습니다. 테이블을 온디맨드로 생성하면 이 24시간 기간도 시작됩니다. 테이블은 언제든지 프로비저닝된 용량 모드로 되돌릴 수 있습니다. 읽기/쓰기 용량 모드를 전환할 때 고려해야 하는 문제는 읽기/쓰기 용량 모드 변경 시 고려 사항 섹션을 참조하세요.

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

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

DynamoDB 읽기 요청은 강력히 일관된 읽기, 최종 읽기 일관성 또는 트랜잭션 읽기 요청일 수 있습니다.

  • 최대 4KB 항목의 강력히 일관된 읽기 요청에는 하나의 읽기 요청 단위가 필요합니다.

  • 최대 4KB 항목의 최종 읽기 일관성 요청에는 절반의 읽기 요청 단위가 필요합니다.

  • 최대 4KB 항목의 트랜잭션 읽기 요청에는 2개의 읽기 요청 단위가 필요합니다.

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

DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 읽기 정합성 단원을 참조하세요.

중요

존재하지 않는 항목에 대해 읽기 작업을 수행하는 경우 DynamoDB는 위에 설명된 대로 읽기 처리량을 계속 사용합니다.

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

자세한 요금 예시와 요금 계산기를 사용한 예상 비용은 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분 이상의 간격을 두고 트래픽을 늘리는 것이 좋습니다.

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

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

다음은 가능한 시나리오의 예입니다.

  • 테이블이 100WCU 및 100RCU로 구성되었습니다. 이 테이블이 처음 온디맨드로 전환되면 DynamoDB는 적어도 초당 4,000개의 쓰기 단위와 초당 12,000개의 읽기 단위를 유지할 수 있도록 테이블을 즉시 스케일아웃합니다.

  • 테이블이 8,000WCU 및 24,000RCU로 구성되었습니다. 이 테이블이 온디맨드로 전환되면 언제든지 적어도 초당 8,000개의 쓰기 단위와 초당 24,000개의 읽기 단위를 계속해서 유지할 수 있습니다.

  • 8,000WCU와 24,000RCU로 구성된 프로비저닝된 테이블이 일정 기간 동안 초당 6,000개의 쓰기 단위와 초당 18,000개의 읽기 단위를 소비했습니다. 이 테이블이 온디맨드로 전환되면 적어도 초당 8,000개의 쓰기 단위와 초당 24,000개의 읽기 단위를 계속해서 유지할 수 있습니다. 또한 이전 트래픽을 통해 테이블은 제한 없이 훨씬 더 높은 수준의 트래픽을 유지할 수 있습니다.

  • 테이블이 이전에는 10,000WCU와 10,000RCU로 프로비저닝되었지만 현재는 10RCU와 10WCU로 프로비저닝되었습니다. 이 테이블이 온디맨드로 전환되면 적어도 초당 10,000개의 쓰기 단위와 초당 10,000개의 읽기 단위를 유지할 수 있습니다.

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

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

온디맨드 용량 모드를 위한 테이블 사전 워밍

온디맨드 용량 모드를 사용하면 테이블에서 이전 피크의 두 배까지 요청이 버스트할 수 있습니다. 30분 내에 요청이 기본 용량 또는 이전에 달성된 피크 요청 비율의 두 배 이상으로 급증하면 제한이 발생할 수 있습니다. 한 가지 해결책은 테이블을 급증의 예상 피크 용량까지 사전 워밍하는 것입니다.

테이블을 사전 워밍하려면 다음 단계를 수행하세요.

  1. 계정 한도를 확인하고 프로비저닝된 모드에서 원하는 용량에 도달할 수 있는지 확인하세요.

  2. 이미 있는 테이블 또는 온디맨드 모드에서 새 테이블을 사전 워밍하는 경우, 적어도 예상되는 피크 24시간 전에 이 프로세스를 시작하세요. 온디맨드 모드와 프로비저닝된 모드의 전환은 24시간에 한 번만 가능합니다.

  3. 현재 온디맨드 모드인 테이블을 사전 워밍하려면 테이블을 프로비저닝 모드로 전환하고 테이블이 활성화될 때까지 기다리십시오. 그 후 다음 단계로 갑니다.

    프로비저닝된 모드에 있거나 이미 24시간 동안 프로비저닝된 모드에 있었던 새 테이블을 사전 워밍하려는 경우, 기다리지 않고 다음 단계로 진행할 수 있습니다.

  4. 테이블의 쓰기 처리량을 원하는 피크 값으로 설정하고 몇 분 동안 그대로 유지합니다. 다시 온디맨드로 전환하기 전까지는 이 높은 처리량으로 인한 비용이 발생합니다.

  5. 온디맨드 용량 모드로 전환하세요. 이렇게 하면 프로비저닝된 처리량 용량 값을 유지할 수 있습니다.

프로비저닝된 모드

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

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

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

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

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

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

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

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

    참고

    DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 읽기 정합성 단원을 참조하세요.

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

중요

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

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

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

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

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

  • 초당 최대 12KB의 트랜잭션 읽기 요청을 수행합니다.

  • 초당 최대 6KB 쓰기(1KB × 쓰기 용량 단위 6)

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

자세한 정보는 DynamoDB 프로비저닝된 용량 테이블의 설정 관리을 참조하세요.

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

조절 기능은 애플리케이션에서 용량 단위를 너무 많이 사용하지 않도록 방지합니다. 요청이 조정될 경우 HTTP 400 코드(Bad Request) 및 ProvisionedThroughputExceededException과 함께 실패합니다. AWS SDK는 병목 현상이 발생한 요청의 재시도를 기본적으로 지원하므로 (참조오류 재시도 횟수 및 지수 백오프) 이 로직을 직접 작성할 필요가 없습니다. 제한 문제를 해결하는 방법에 대한 자세한 내용은 Amazon DynamoDB 테이블이 제한되는 이유는 무엇인가요?를 참조하세요.

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

자세한 요금 예시와 요금 계산기를 사용한 예상 비용은 Amazon DynamoDB 요금을 참조하세요.

DynamoDB Auto Scaling

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

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

참고

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

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

자세한 정보는 DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리을 참조하세요.

예약 용량

DynamoDB 고객은 Amazon DynamoDB 요금에 설명된 대로 DynamoDB Standard 테이블 클래스를 사용하는 테이블에 대해 예약 용량을 미리 구매할 수 있습니다. 예약 용량을 구입할 경우 선결제 요금을 1회 지불하고 일정 기간에 대해 최소 프로비저닝된 사용량 수준을 약정합니다. 예약 용량에는 시간당 예약 용량 요금이 청구됩니다. 사전에 읽기 및 쓰기 용량 단위를 예약하면 프로비저닝된 용량 비용을 크게 절감할 수 있습니다. 예약 용량을 초과하여 프로비저닝하는 용량에는 프로비저닝된 용량 표준 요금이 청구됩니다.

예약 용량 할인은 먼저 예약 용량을 구매한 계정에 적용됩니다. 미사용 예약 용량 할인은 구매 계정과 동일한 AWS 조직의 다른 계정에 적용됩니다. Billing and Cost Management 콘솔의 환경설정(Preferences) 페이지에서 예약 인스턴스 할인 공유를 설정 해제할 수 있습니다. 자세한 내용은 예약 인스턴스 및 절감형 플랜 할인 공유 설정 해제를 참조하세요.

참고

복제된 쓰기 용량 단위에는 예약된 용량을 사용할 수 없습니다. 예약 용량은 구매한 리전에만 적용됩니다. DynamoDB Standard-IA 테이블 클래스 또는 온디맨드 용량 모드를 사용하는 테이블에는 예약 용량을 사용할 수 없습니다.

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

참고

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

구체적인 요금에 대한 자세한 내용은 Amazon DynamoDB 요금을 참조하세요.