

# DynamoDB 온디맨드 용량 모드
<a name="on-demand-capacity-mode"></a>

Amazon DynamoDB 온디맨드는 용량 계획 없이 가장 까다로운 워크로드를 수용하도록 자동으로 규모 조정되는 진정한 서버리스 데이터베이스 환경을 제공합니다. 온디맨드는 설정 프로세스를 간소화하고 용량 관리 및 모니터링이 필요 없게 만들며 빠른 자동 규모 조정을 제공합니다. 요청당 지불 요금을 사용하면 실제로 사용하는 처리량에 대해서만 비용을 지불하기 때문에 유휴 용량에 대해 걱정할 필요가 없습니다. 읽기 또는 쓰기 요청당 요금이 청구되므로 실제 사용량이 비용에 직접 반영됩니다.

온디맨드 모드를 선택하면 DynamoDB는 이전에 도달한 트래픽 수준까지 확장 또는 축소할 때 즉시 워크로드를 수용합니다. 워크로드의 트래픽 수준이 새 피크에 도달하면 DynamoDB는 증가된 처리량 요구 사항에 맞게 자동으로 규모 조정됩니다. 온디맨드 모드는 소규모로 시작하여 초당 수백만 개의 요청으로 규모 조정할 수 있는 현대적 서버리스 애플리케이션 구축을 간소화하기 때문에 권장되는 기본 처리량 옵션입니다. 온디맨드 테이블이 스케일 아웃되면 스로틀링 없이 향후 동일한 처리량을 즉시 달성할 수 있습니다. 테이블에서 트래픽이 발생하지 않는 경우 온디맨드를 사용하면 처리량에 대한 요금이 부과되지 않습니다. 온디맨드 모드의 규모 조정 속성에 대한 자세한 내용은 [초기 처리량 및 규모 조정 속성](#on-demand-capacity-mode-initial) 섹션을 참조하세요.

온디맨드 모드를 사용하는 테이블은 DynamoDB 프로비저닝 모드가 제공하는 것과 동일한 한 자릿수 밀리초 지연 시간, 서비스 수준 계약(SLA) 및 보안을 제공합니다.

**참고**  
기본적으로 DynamoDB는 의도하지 않은 런어웨이 사용으로부터 사용자를 보호합니다. 계정의 모든 테이블에 대해 40,000개의 테이블 수준 읽기 및 쓰기 처리량 제한을 초과하여 규모를 조정하려면 이 할당량 증가를 요청할 수 있습니다. 기본 테이블 처리량 할당량을 초과하는 처리량 요청은 스로틀됩니다. 자세한 내용은 [처리량 기본 할당량](ServiceQuotas.md#default-limits-throughput) 섹션을 참조하세요.

선택적으로, 개별 온디맨드 테이블 및 글로벌 보조 인덱스의 초당 최대 읽기 또는 쓰기(또는 둘 다) 처리량을 구성할 수도 있습니다. 처리량을 구성하면 예측 가능한 비용 관리를 위해 테이블 수준의 사용량과 비용을 제한하고, 리소스 소비가 의도치 않게 급증하는 것을 방지하며, 과도한 사용을 예방할 수 있습니다. 최대 테이블 처리량을 초과하는 처리량 요청은 제한됩니다. 애플리케이션 요구 사항에 따라 언제든지 테이블별 최대 처리량을 수정할 수 있습니다. 자세한 내용은 [온디맨드 테이블의 최대 처리량](on-demand-capacity-mode-max-throughput.md) 섹션을 참조하세요.

시작하려면 온디맨드 모드를 사용하도록 테이블을 생성하거나 업데이트합니다. 자세한 내용은 [DynamoDB 테이블에 대한 기본 작업](WorkingWithTables.Basics.md) 섹션을 참조하세요.

테이블을 프로비저닝된 용량 모드에서 온디맨드 모드로 전환할 수 있으며, 24시간 이동 시간 창 내에서 최대 4회까지 전환이 가능합니다. 테이블은 언제든지 온디맨드 모드에서 프로비저닝된 용량 모드로 전환할 수 있습니다.

읽기 및 쓰기 용량 모드 간 전환에 대한 자세한 내용은 [DynamoDB에서 용량 모드 전환 시 고려 사항](bp-switching-capacity-modes.md) 섹션을 참조하세요. 온디맨드 테이블 할당량에 대해서는 [읽기/쓰기 처리량](ServiceQuotas.md#default-limits-throughput-capacity-modes) 섹션을 참조하세요.

**Topics**
+ [읽기 요청 단위 및 쓰기 요청 단위](#read-write-request-units)
+ [초기 처리량 및 규모 조정 속성](#on-demand-capacity-mode-initial)
+ [온디맨드 테이블의 최대 처리량](on-demand-capacity-mode-max-throughput.md)

## 읽기 요청 단위 및 쓰기 요청 단위
<a name="read-write-request-units"></a>

DynamoDB에서는 *읽기 요청 단위* 및 *쓰기 요청 단위*의 측면에서 애플리케이션이 테이블에서 수행하는 읽기 및 쓰기에 대해 요금이 부과됩니다.

*읽기 요청 단위* 1은 초당 강력히 일관된 읽기 1 또는 초당 최종적으로 일관된 읽기 2(최대 4KB 크기 항목의 경우)를 나타냅니다. DynamoDB 읽기 일관성 모델에 대한 자세한 내용은 [DynamoDB 읽기 일관성](HowItWorks.ReadConsistency.md) 섹션을 참조하세요.

*쓰기 요청 단위* 1은 최대 1KB 크기의 항목에 대해 초당 1회 쓰기 작업을 나타냅니다.

읽기 및 쓰기 단위가 소비되는 방식에 대한 자세한 내용은 [DynamoDB 읽기 및 쓰기 작업](read-write-operations.md) 섹션을 참조하세요.

## 초기 처리량 및 규모 조정 속성
<a name="on-demand-capacity-mode-initial"></a>

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

워크로드가 테이블에서 이전 피크의 2배 이상을 생성하는 경우 DynamoDB가 트래픽 볼륨 증가에 따라 자동으로 추가 용량을 할당합니다. 이러한 용량 할당은 워크로드에 제한이 발생하지 않도록 하는 데 도움이 됩니다. 하지만 30분 이내에 이전 피크의 2배 용량을 초과할 경우 조절이 발생할 수 있습니다. 예를 들어 애플리케이션의 트래픽 패턴이 초당 25,000\$150,000회의 강력히 일관된 읽기 사이에서 다양하다고 가정합니다. 이때 초당 50,000회 읽기는 이전에 도달한 트래픽 피크입니다. 초당 100,000회 이상의 읽기가 발생하기 전에 테이블을 사전 워밍하거나 최소 30분 이상의 트래픽 증가 간격을 두는 것이 좋습니다. 사전 워밍에 대한 자세한 내용은 [DynamoDB 웜 처리량 이해](warm-throughput.md) 섹션을 참조하세요.

DynamoDB는 워크로드의 최대 트래픽이 이전 최고치의 2배 이내로 유지되는 경우 30분 조절 제한을 두지 않습니다. 최대 트래픽이 최고치의 2배를 초과하는 경우, 마지막 최고치에 도달한 지 30분 후에 이러한 증가가 발생하는지 확인하세요.

# 온디맨드 테이블의 최대 처리량
<a name="on-demand-capacity-mode-max-throughput"></a>

온디맨드 테이블의 경우, 선택적으로 개별 테이블 및 연결된 글로벌 보조 인덱스(GSI)의 초당 최대 읽기 또는 쓰기(또는 둘 다) 처리량을 지정할 수도 있습니다. 최대 온디맨드 처리량을 지정하면 테이블 수준의 사용량과 비용을 제한하는 데 도움이 됩니다. 기본적으로 최대 처리량 설정은 적용되지 않으며 온디맨드 처리량은 계정 내 모든 테이블의 40,000 테이블 수준 읽기 및 쓰기 처리량 [AWS 서비스 할당량](ServiceQuotas.md#default-limits-throughput)에 따라 제한됩니다. 필요한 경우 서비스 할당량 증가를 요청할 수 있습니다.

온디맨드 테이블의 최대 처리량을 구성하면 지정된 최대 처리량을 초과하는 처리량 요청은 제한됩니다. 애플리케이션 요구 사항에 따라 언제든지 테이블 수준의 처리량 설정을 수정할 수 있습니다.

다음은 온디맨드 테이블의 최대 처리량을 사용할 때 도움이 될 수 있는 몇 가지 일반적인 사용 사례입니다.
+ **처리량 비용 최적화** - 온디맨드 테이블에 최대 처리량을 사용하면 비용 예측성과 관리 용이성이 향상됩니다. 또한 온디맨드 모드로 트래픽 패턴과 예산이 서로 다른 워크로드를 지원할 수 있는 뛰어난 유연성을 누리게 됩니다.
+ **과도한 사용 방지** - 최대 처리량을 설정하면 온디맨드 테이블에서 최적화되지 않은 코드나 악성 프로세스로 인해 발생할 수 있는 우발적인 읽기 또는 쓰기 사용량 급증을 방지할 수 있습니다. 이 테이블 수준의 설정은 조직이 특정 기간 내에 리소스를 과도하게 소비하지 않도록 보호할 수 있습니다.
+ **다운스트림 서비스 보호** - 고객 애플리케이션에는 서버리스 및 비서버리스 기술이 포함될 수 있습니다. 서버리스 아키텍처 부분은 수요에 맞춰 빠르게 규모를 조정할 수 있습니다. 하지만 용량이 고정된 다운스트림 구성 요소에는 과부하가 걸릴 수 있습니다. 온디맨드 테이블에 최대 처리량 설정을 구현하면 대규모 이벤트가 여러 다운스트림 구성 요소로 전파되어 예상치 못한 부작용을 초래하는 것을 방지할 수 있습니다.

신규 및 기존 단일 리전 테이블, 글로벌 테이블 및 GSI에 대해 온디맨드 모드의 최대 처리량을 구성할 수 있습니다. Amazon S3 워크플로에서 테이블 복원 및 데이터 가져오기 중에 최대 처리량을 구성할 수도 있습니다.

[DynamoDB 콘솔](https://console.aws.amazon.com/dynamodb/), [AWS CLI](AccessingDynamoDB.md#Tools.CLI), [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html) 또는 [DynamoDB API](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html)를 사용하여 온디맨드 테이블의 최대 처리량 설정을 지정할 수 있습니다.

**참고**  
온디맨드 테이블의 최대 처리량은 최선의 방식으로 적용되며 보장된 요청 최대치가 아닌 목표로 생각해야 합니다. [*버스트 용량*](burst-adaptive-capacity.md#burst-capacity) 때문에 워크로드가 일시적으로 지정된 최대 처리량을 초과할 수 있습니다. DynamoDB는 테이블의 최대 처리량 설정을 초과하는 읽기 또는 쓰기를 수용하기 위해 경우에 따라 *버스트 용량*을 사용하기도 합니다. 원래는 조절되어야 하는 예상치 못한 읽기 또는 쓰기 요청도 버스트 용량으로 해결할 수 있습니다.

**Topics**
+ [온디맨드 모드에서 최대 처리량을 사용할 때 고려할 사항](#consideration-use-max-throughput-ondemand)
+ [요청 제한 및 CloudWatch 지표](#max-throughput-ondemand-request-throttle)

## 온디맨드 모드에서 최대 처리량을 사용할 때 고려할 사항
<a name="consideration-use-max-throughput-ondemand"></a>

온디맨드 모드에서 테이블의 최대 처리량을 사용하는 경우 다음 고려 사항이 적용됩니다.
+ 온디맨드 테이블 또는 해당 테이블 내의 개별 글로벌 보조 인덱스에 대한 최대 읽기 및 쓰기 처리량을 독립적으로 설정하여 특정 요구 사항에 따라 접근 방식을 세밀하게 조정할 수 있습니다.
+ Amazon CloudWatch를 사용하여 DynamoDB 테이블 수준 사용 지표를 모니터링 및 파악하고 온디맨드 모드에 적합한 최대 처리량 설정을 결정할 수 있습니다. 자세한 내용은 [DynamoDB 지표 및 차원](metrics-dimensions.md) 섹션을 참조하세요.
+ 하나의 글로벌 테이블 복제본에서 최대 읽기 또는 쓰기(또는 둘 다) 처리량 설정을 지정하면 모든 복제본 테이블에 동일한 최대 처리량 설정이 자동으로 적용됩니다. 글로벌 테이블의 복제본 테이블과 보조 인덱스의 쓰기 처리량을 동일하게 설정해 데이터를 적절히 복제하는 것이 중요합니다. 자세한 내용은 [글로벌 테이블에 대한 모범 사례](globaltables-bestpractices.md) 섹션을 참조하세요.
+ 지정할 수 있는 가장 작은 최대 읽기 또는 쓰기 처리량은 초당 요청 단위 1개입니다.
+ 지정하는 최대 처리량은 온디맨드 테이블 또는 해당 테이블 내 개별 글로벌 보조 인덱스에 사용할 수 있는 기본 처리량 할당량보다 낮아야 합니다.

## 요청 제한 및 CloudWatch 지표
<a name="max-throughput-ondemand-request-throttle"></a>

애플리케이션이 온디맨드 테이블에 설정한 최대 읽기 또는 쓰기 처리량을 초과하는 경우 DynamoDB는 해당 요청을 제한하기 시작합니다. DynamoDB는 읽기 또는 쓰기를 제한할 때 호출자에게 `ThrottlingException`을 반환합니다. 그런 다음 필요한 경우 적절한 조치를 취할 수 있습니다. 예를 들어, 최대 테이블 처리량 설정을 늘리거나 비활성화하거나 잠시 기다린 후 요청을 다시 시도할 수 있습니다.

테이블 또는 글로벌 보조 인덱스에 구성된 최대 처리량 모니터링을 단순화하기 위해 CloudWatch는 다음과 같은 지표를 제공합니다. [OnDemandMaxReadRequestUnits](metrics-dimensions.md#OnDemandMaxReadRequestUnits) 및 [OnDemandMaxWriteRequestUnits](metrics-dimensions.md#OnDemandMaxWriteRequestUnits)