DynamoDB 프로비저닝된 용량 모드 - Amazon DynamoDB

DynamoDB 프로비저닝된 용량 모드

DynamoDB에서 프로비저닝된 테이블을 새로 생성할 때는 프로비저닝된 처리량 용량을 지정해야 합니다. 이는 테이블에서 지원할 수 있는 읽기 및 쓰기 처리량의 양입니다. DynamoDB는 이 정보를 사용하여 처리량 요구 사항에 맞는 충분한 시스템 리소스가 있는지 확인합니다.

아니면 DynamoDB Auto Scaling에서 테이블의 처리 용량을 관리하도록 허용할 수도 있습니다. Auto Scaling을 사용하려면 테이블을 생성할 때 읽기 및 쓰기 용량의 초기 설정을 지정해야 합니다. DynamoDB Auto Scaling은 이러한 초기 설정을 출발점으로 하여 애플리케이션의 요구 사항에 따라 동적으로 이를 조정합니다. 자세한 내용은 DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리 단원을 참조하십시오.

애플리케이션의 데이터 및 액세스 요구 사항이 변화함에 따라 테이블의 처리량 설정을 조정해야 합니다. DynamoDB Auto Scaling을 사용하는 경우 실제 워크로드에 맞게 처리량 설정이 자동으로 조정됩니다. 또한 UpdateTable 작업을 사용하여 테이블의 처리량 용량을 수동으로 조정할 수도 있습니다. 기존 데이터 스토어에서 새 DynamoDB 테이블로 데이터를 대량 로드해야 할 경우 이러한 방식을 선택할 수 있습니다. 쓰기 처리량 설정을 크게 하여 테이블을 생성한 다음, 데이터 대량 로드가 완료되면 이 설정을 줄여도 됩니다.

테이블은 언제든지 온디맨드 모드에서 프로비저닝된 용량 모드로 전환할 수 있습니다. 용량 모드 간에 여러 번 전환하는 경우 다음 조건이 적용됩니다.

  • 온디맨드 모드에서 새로 생성된 테이블은 언제든지 프로비저닝된 용량 모드로 전환할 수 있습니다. 하지만 테이블 생성 타임스탬프 이후 24시간이 지난 뒤에야 온디맨드 모드로 다시 전환할 수 있습니다.

  • 온디맨드 모드의 기존 테이블은 언제든지 프로비저닝된 용량 모드로 전환할 수 있습니다. 하지만 온디맨드로의 전환을 나타내는 마지막 타임스탬프가 발생한 지 24시간이 지난 후에야 다시 온디맨드 모드로 전환할 수 있습니다.

읽기 및 쓰기 용량 모드 간 전환에 대한 자세한 내용은 DynamoDB에서 용량 모드 전환 시 고려 사항 섹션을 참조하세요.

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

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

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

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

초기 처리량 설정 선택

데이터베이스에서 읽기 및 쓰기를 위한 요구 사항은 애플리케이션마다 다릅니다. 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

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을 사용하여 자동으로 처리량 용량 관리 단원을 참조하십시오.

사용률

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

DynamoDB Auto Scaling을 사용하는 경우 목표 사용률도 설정해야 합니다. Auto Scaling에서는 이 비율을 목표로 삼아 용량을 늘리거나 줄입니다. 목표 사용률을 70%로 설정하는 것이 좋습니다. 자세한 내용은 DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리 단원을 참조하십시오.