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

읽기 및 쓰기에 대한 처리량

Amazon DynamoDB에서 테이블이나 인덱스를 생성할 경우 읽기 및 쓰기 작업에 대한 용량 요구 사항을 지정해야 합니다. 처리량을 미리 정의함으로써 는 애플리케이션에서 필요로 하는 읽기 및 쓰기 작업을 지원하는 데 필요한 리소스를 예약할 수 있고, 지연 시간이 짧은 성능을 일관되게 유지할 수 있습니다.

처리량은 읽기 용량 단위 및 쓰기 용량 단위로 지정합니다.

  • 읽기 용량 유닛 1은 초당 강력히 일관된 읽기 1 또는 초당 최종적 일관된 읽기 2(최대 4 KB 크기 항목의 경우)를 나타냅니다. 4 KB보다 큰 항목을 읽어야 하는 경우, DynamoDB가 추가 읽기 용량 유닛을 사용해야 합니다. 필요한 총 읽기 용량 단위 수는 항목 크기 및 최종적 일관된 읽기(Eventually Consistent Read)와 강력한 일관된 읽기(Strongly Consistent Read) 중 어느 것을 원하는지에 따라 달라집니다.

  • 쓰기 용량 유닛 1은 최대 1 KB 크기의 항목에 대해 초당 1회 쓴다는 의미입니다. 1 KB보다 큰 항목을 써야 하는 경우, DynamoDB가 추가 쓰기 용량 유닛을 사용해야 합니다. 필요한 총 쓰기 용량 단위 수는 항목 크기에 따라 결정됩니다.

예를 들어 읽기 용량 단위 5와 쓰기 용량 단위 5를 수용하는 테이블을 생성했다고 가정하겠습니다. 이렇게 설정하면 응용 프로그램에서 다음을 수행할 수 있습니다.

  • 초당 최대 20KB의 강력히 일관된 읽기를 수행합니다(4 KB × 읽기 용량 유닛 5).

  • 초당 최대 40KB의 최종적 일관된 읽기(Eventually Consistent Read)를 수행합니다(읽기 처리량의 2배).

  • 초당 최대 5KB를 씁니다(1 KB × 쓰기 용량 유닛 5).

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

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

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

DynamoDB는 처리량 관리를 위해 다음과 같은 방법을 제공합니다.

  • DynamoDB Auto Scaling

  • 프로비저닝된 처리량

  • 예약 용량

DynamoDB Auto Scaling

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

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

참고

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

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

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

프로비저닝된 처리량

DynamoDB Auto Scaling을 사용하지 않을 경우 처리량 요구 사항을 수동으로 정의해야 합니다. 할당된 처리량는 애플리케이션이 테이블이나 인덱스에서 사용할 수 있는 최대 용량입니다. 할당된 처리량 설정을 애플리케이션에서 초과할 경우 요청 조정이 적용됩니다.

예를 들어, 테이블에서 초당 80개의 항목을 읽으려고 하며, 항목 크기는 3KB이고, 강력한 일관된 읽기(Strongly Consistent Read)를 수행하려 합니다. 이 시나리오에서, 각 읽기는 할당된 읽기 용량 단위 1을 요구합니다. 이 값을 구하려면, 다음 예와 같이 작업의 항목 크기를 4 KB로 나눈 다음 가장 가까운 정수로 올림합니다.

  • 3KB/4 KB = 0.75 또는 읽기 용량 유닛 1

이 시나리오의 경우 테이블의 할당된 읽기 처리량을 읽기 용량 단위 80으로 설정해야 합니다.

  • 항목당 읽기 용량 유닛 1 × 초당 읽기 80회 = 읽기 용량 유닛 80

이번에는 초당 100개의 항목을 테이블에 쓰려 하고 항목 크기는 512KB인 경우를 예로 들어 보겠습니다. 이 시나리오에서, 각 쓰기에는 할당된 쓰기 용량 단위 1이 필요합니다. 이 값을 구하려면, 작업의 항목 크기를 1 KB로 나눈 다음, 가장 가까운 정수로 올림합니다.

  • 512바이트/1 KB = 0.5 또는 1

이 시나리오의 경우 테이블의 프로비저닝된 쓰기 처리량을 쓰기 용량 유닛 100으로 설정합니다.

  • 항목당 쓰기 용량 유닛 1 × 초당 쓰기 100회 = 쓰기 용량 유닛 100

자세한 내용은 항목 크기 및 용량 단위 소비 단원을 참조하십시오.

예약 용량

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

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

참고

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