

# DynamoDB 프로비저닝된 용량 모드
<a name="provisioned-capacity-mode"></a>

DynamoDB에서 프로비저닝된 테이블을 새로 생성할 때는 *프로비저닝된 처리량 용량*을 지정해야 합니다. 이는 테이블에서 지원할 수 있는 읽기 및 쓰기 처리량의 양입니다. 실제로 사용한 프로비저닝 용량이 아닌 프로비저닝한 시간당 읽기 및 쓰기 용량을 기준으로 요금이 청구됩니다.

애플리케이션의 데이터 및 액세스 요구 사항이 변화함에 따라 테이블의 처리량 설정을 조정해야 합니다. Auto Scaling을 사용하여 트래픽 변경에 따라 테이블의 프로비저닝된 용량을 자동으로 조정할 수 있습니다. DynamoDB 오토 스케일링은 [애플리케이션 오토 스케일링](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html)의 [규모 조정 정책](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)을 사용합니다. DynamoDB에서 오토 스케일링을 구성하려면 대상 사용률 외에도 읽기 및 쓰기 용량의 최소 및 최대 수준을 설정합니다. Application Auto Scaling은 지표가 대상에서 벗어날 경우 조정 이벤트를 트리거하는 CloudWatch 경보를 생성하고 관리합니다. 오토 스케일링은 테이블의 활동을 모니터링하고 사전 구성된 임곗값에 따라 용량 설정을 위 또는 아래로 조정합니다. Auto Scaling은 소비된 용량이 구성된 목표 사용률을 2분 연속으로 초과할 때 트리거됩니다. CloudWatch 경보가 Auto Scaling을 트리거하기 전에 최대 몇 분의 짧은 지연이 있을 수 있습니다. 자세한 내용은 [DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리](AutoScaling.md) 섹션을 참조하세요.

DynamoDB Auto Scaling을 사용하는 경우 실제 워크로드에 맞게 처리량 설정이 자동으로 조정됩니다. 또한 [UpdateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html) 작업을 사용하여 테이블의 처리량 용량을 수동으로 조정할 수도 있습니다. 예를 들어 기존 데이터 스토어에서 새 DynamoDB 테이블로 데이터를 대량 로드해야 할 경우 이러한 방식을 선택할 수 있습니다. 쓰기 처리량 설정을 크게 하여 테이블을 생성한 다음, 데이터 대량 로드가 완료되면 이 설정을 줄여도 됩니다.

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

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

읽기 및 쓰기 용량 모드 간 전환에 대한 자세한 내용은 [DynamoDB에서 용량 모드 전환 시 고려 사항](bp-switching-capacity-modes.md) 섹션을 참조하세요.

**Topics**
+ [읽기 용량 단위 및 쓰기 용량 단위](#read-write-capacity-units)
+ [초기 처리량 설정 선택](#choosing-initial-throughput)
+ [DynamoDB Auto Scaling](#ddb-autoscaling)
+ [DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리](AutoScaling.md)
+ [DynamoDB 예약 용량](reserved-capacity.md)

## 읽기 용량 단위 및 쓰기 용량 단위
<a name="read-write-capacity-units"></a>

프로비저닝된 모드 테이블의 경우 *용량 단위*로 처리량 요구 사항을 지정합니다. 이 단위는 애플리케이션이 초당 읽거나 써야 하는 데이터 양을 나타냅니다. 필요하면 나중에 이러한 설정을 수정하거나 DynamoDB Auto Scaling을 활성화하여 자동으로 수정할 수 있습니다.

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

*쓰기 용량 단위*(WCU) 1은 최대 1KB 크기의 항목에 대해 초당 1회 쓴다는 의미입니다. 다양한 읽기 및 쓰기 작업에 대한 자세한 내용은 [DynamoDB 읽기 및 쓰기 작업](read-write-operations.md) 섹션을 참조하세요.

## 초기 처리량 설정 선택
<a name="choosing-initial-throughput"></a>

데이터베이스에서 읽기 및 쓰기를 위한 요구 사항은 애플리케이션마다 다릅니다. DynamoDB 테이블의 초기 처리량 설정을 결정할 때는 다음 사항을 고려해야 합니다.
+ **예상 읽기 및 쓰기 요청 속도** - 초당 수행해야 하는 읽기 및 쓰기 수를 추정해야 합니다.
+ **항목 크기** - 크기가 작아서 용량 단위 하나를 사용하여 읽거나 쓸 수 있는 항목도 있습니다. 그보다 큰 항목에는 용량 단위가 여러 개 필요합니다. 테이블에 들어갈 항목의 평균 크기를 예측하여 해당 테이블의 할당된 처리량을 정확히 설정할 수 있습니다.
+ **읽기 일관성 요구 사항** - 읽기 용량 단위의 기준이 되는 강력히 일관된 읽기 작업은 최종적으로 일관된 읽기보다 데이터베이스 리소스를 두 배나 더 많이 소비합니다. 애플리케이션에 필요한 것이 강력한 일관된 읽기인지, 아니면 이러한 요구 사항을 완화하여 그 대신 최종적 일관된 읽기를 수행할 수 있는지 여부를 결정해야 합니다. 기본적으로 DynamoDB의 읽기 작업은 최종적으로 일관된 읽기입니다. 필요한 경우 이러한 작업에 대해 강력히 일관된 읽기를 요청할 수 있습니다.

예를 들어, 테이블에서 초당 80개의 항목을 읽으려고 하며, 항목 크기는 3KB이고, 강력히 일관된 읽기를 수행하려 합니다. 이 시나리오에서, 각 읽기는 프로비저닝된 읽기 용량 단위 1을 요구합니다. 이 수를 구하려면 작업의 항목 크기를 4KB로 나눕니다. 그리고 다음 예와 같이 가장 가까운 정수로 반올림합니다.
+ 3KB/4KB = 0.75 또는 읽기 용량 단위 **1**

따라서 테이블에서 초당 80개 항목을 읽으려면 다음 예와 같이 테이블의 프로비저닝된 읽기 처리량을 읽기 용량 단위 80으로 설정합니다.
+ 항목당 읽기 용량 단위 1 × 초당 읽기 80회 = 읽기 용량 단위 **80**

이번에는 초당 100개의 항목을 테이블에 쓰려 하고 각 항목의 크기는 512바이트인 경우를 예로 들어 보겠습니다. 이 경우, 각 쓰기에는 프로비저닝된 쓰기 용량 단위 1이 필요합니다. 이 수를 구하려면 작업의 항목 크기를 1KB로 나눕니다. 그리고 다음 예와 같이 가장 가까운 정수로 반올림합니다.
+ 512바이트/1KB = 0.5 또는 쓰기 용량 단위 **1**

테이블에 초당 100개 항목을 쓰려면 테이블의 프로비저닝된 쓰기 처리량을 쓰기 용량 단위 100으로 설정합니다.
+ 항목당 쓰기 용량 단위 1 × 초당 쓰기 100회 = 쓰기 용량 단위 **100**

## DynamoDB Auto Scaling
<a name="ddb-autoscaling"></a>

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

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

**참고**  
AWS Management Console을 사용하여 테이블이나 글로벌 보조 인덱스를 생성한 경우 DynamoDB Auto Scaling이 기본적으로 활성화됩니다.  
Auto Scaling 설정은 콘솔, AWS CLI 또는 AWS SDK 중 하나를 사용하여 언제든지 관리할 수 있습니다. 자세한 내용은 [DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리](AutoScaling.md) 섹션을 참조하세요.

### 사용률
<a name="ddb-autoscaling-utilization-rate"></a>

사용률은 프로비저닝 용량이 초과되었는지 파악하는 데 도움이 됩니다. 초과된 경우 비용을 절감하도록 테이블 용량을 줄여야 합니다. 반대로 프로비저닝 용량이 부족한지 파악하는 데도 도움이 될 수 있습니다. 이 경우 예기치 않게 높은 트래픽 인스턴스 중에 요청이 제한될 수 있는 가능성을 방지하기 위해 테이블 용량을 늘려야 합니다. 자세한 내용은 [Amazon DynamoDB auto scaling: Performance and cost optimization at any scale](https://aws.amazon.com/blogs/database/amazon-dynamodb-auto-scaling-performance-and-cost-optimization-at-any-scale/)을 참조하세요.

DynamoDB Auto Scaling을 사용하는 경우 목표 사용률도 설정해야 합니다. Auto Scaling에서는 이 비율을 목표로 삼아 용량을 늘리거나 줄입니다. 목표 사용률을 70%로 설정하는 것이 좋습니다. 자세한 내용은 [DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리](AutoScaling.md) 섹션을 참조하세요.