DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리 - Amazon DynamoDB

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

DynamoDB Auto Scaling을 사용하여 자동으로 처리량 용량 관리

많은 데이터베이스 워크로드는 본질적으로 주기적인 반면 다른 워크로드는 미리 예측하기 어렵습니다. 낮 시간 동안에는 대부분의 사용자가 활성 상태인 소셜 네트워킹 앱을 한 가지 예로 들어 보겠습니다. 이러한 데이터베이스에서는 주간 활동을 처리할 수 있어야 하지만, 밤에는 동일한 수준의 처리량이 필요 없습니다. 예상치 못한 빠른 속도로 도입 중인 새로운 모바일 게임 앱을 또 다른 예로 들 수 있습니다. 이 게임의 인기가 너무 높아지면 사용 가능한 데이터베이스 리소스 양을 초과하여 성능이 느려지고 고객 불만이 발생할 것입니다. 이러한 종류의 워크로드는 대개 사용량 변화에 따라 수동 개입을 통해 데이터베이스 리소스의 규모를 늘리거나 줄여야 합니다.

Amazon DynamoDB Auto AWS Scaling은 Application Auto Scaling 서비스를 사용하여 실제 트래픽 패턴에 따라 사용자를 대신하여 프로비저닝된 처리 용량을 동적으로 조정합니다. 따라서 테이블 또는 글로벌 보조 인덱스에 따라 할당된 읽기 및 쓰기 용량을 늘려 병목 현상 없이 갑작스러운 트래픽 증가를 처리할 수 있습니다. 워크로드가 감소할 경우 Application Auto Scaling은 사용하지 않는 프로비저닝된 용량에 대한 요금을 지불하지 않도록 처리량을 줄일 수 있습니다.

참고

를 사용하여 테이블 또는 글로벌 보조 인덱스를 생성하는 경우 DynamoDB Auto Scaling이 기본적으로 활성화됩니다. AWS Management Console 언제든지 Auto Scaling 설정을 변경할 수 있습니다. 자세한 설명은 DynamoDB Auto Scaling에서 AWS Management Console 사용 섹션을 참조하세요.

테이블 또는 글로벌 테이블 복제본을 삭제해도 관련 확장 가능한 대상, 조정 정책 또는 CloudWatch 경보는 함께 자동으로 삭제되지 않습니다.

Application Auto Scaling을 사용하여 테이블 또는 글로벌 보조 인덱스의 크기 조정 정책을 생성합니다. 이 규모 조정 정책을 통해 읽기 용량이나 쓰기 용량(또는 둘 다)을 조정할 것인지 여부와 테이블 또는 인덱스에 대해 할당된 용량 단위의 최댓값 및 최솟값 설정을 지정할 수 있습니다.

크기 조정 정책에는 특정 시점에 소비된 프로비저닝된 처리량의 비율인 목표 사용률도 포함됩니다. Application Auto Scaling은 목표 추적 알고리즘을 사용하여 실제 워크로드에 따라 테이블(또는 인덱스)의 프로비저닝된 처리량을 위나 아내로 조정하여 실제 용량 사용률이 목표 사용률 값이나 그에 가까운 수준으로 유지되도록 합니다.

1분 내에 두 데이터 포인트가 구성된 목표 사용률 값을 위반하는 경우 Auto Scaling이 트리거될 수 있습니다. 따라서 2분 동안 사용된 용량이 목표 사용률을 초과하기 때문에 Auto Scaling이 발생할 수 있습니다. 그러나 스파이크 간격이 1분 이상이면 Auto Scaling이 트리거되지 않을 수 있습니다. 마찬가지로 15개의 연속 데이터 포인트가 목표 사용률보다 낮을 때 스케일 다운 이벤트가 트리거될 수 있습니다. 두 경우 모두 Auto Scaling이 트리거된 후 UpdateTable호출이 호출됩니다. 그러면 테이블 또는 인덱스의 프로비저닝된 용량을 업데이트하는 데 몇 분이 걸릴 수 있습니다. 이 기간 동안 이전에 프로비저닝된 테이블 용량을 초과하는 모든 요청은 병목 현상이 발생합니다.

중요

보안 침해 대상 데이터 포인트 수를 조정하여 기본 경보를 트리거할 수는 없습니다 (현재 수치는 향후 변경될 수 있음).

읽기 및 쓰기 용량에 대해 20%와 90% 사이에서 Auto Scaling 목표 사용률 값을 설정할 수 있습니다.

참고

DynamoDB Auto Scaling은 테이블 외에 글로벌 보조 인덱스도 지원합니다. 모든 글로벌 보조 인덱스에는 기본 테이블과 별도로 자체 프로비저닝된 처리 능력이 있습니다. 글로벌 보조 인덱스에 대한 크기 조정 정책을 생성하면 Application Auto Scaling은 해당 인덱스의 프로비저닝된 처리량 설정을 조절하여 실제 사용률이 원하는 사용률이나 그에 가깝게 유지되도록 합니다.

DynamoDB Auto Scaling 작동 방식

참고

DynamoDB Auto Scaling을 빠르게 시작하려면 DynamoDB Auto Scaling에서 AWS Management Console 사용 단원을 참조하세요.

아래 그림에는 DynamoDB Auto Scaling이 테이블의 처리 용량을 관리하는 방법이 간단히 소개되어 있습니다.

다음은 앞의 그림에 소개된 Auto Scaling 프로세스를 요약한 단계입니다.

  1. DynamoDB 테이블에 대한 Application Auto Scaling 정책을 생성합니다.

  2. DynamoDB는 사용된 용량 지표를 Amazon에 게시합니다. CloudWatch

  3. 테이블의 소비 용량이 특정 기간 동안 목표 사용률을 초과하거나 목표 이하로 떨어지면 Amazon은 경보를 CloudWatch 트리거합니다. 콘솔에서 이 경보를 확인하고 Amazon Simple Notification Service(Amazon SNS)를 사용하여 알림을 받을 수 있습니다.

  4. CloudWatch 경보는 Application Auto Scaling을 호출하여 조정 정책을 평가합니다.

  5. Application Auto Scaling은 UpdateTable 요청을 실행하여 테이블의 프로비저닝된 처리량을 조정합니다.

  6. DynamoDB는 UpdateTable 요청을 처리하고 해당 테이블의 프로비저닝된 처리 용량을 동적으로 늘리거나 줄임으로써 목표 사용률에 근접하게 합니다.

DynamoDB Auto Scaling의 작동 방식을 알아보기 위해 ProductCatalog라는 테이블이 있다고 가정합니다. 이 테이블에는 부정기적으로 데이터가 대량 로드되며, 따라서 쓰기 활동이 많지는 않습니다. 그러나 읽기 활동은 높은 수준으로 이루어지며 그 양은 시간에 따라 달라집니다. Amazon CloudWatch 측정치를 모니터링하여 테이블에 1,200개의 읽기 용량 단위가 필요하다는 것을 확인할 수 있습니다 (활동이 최고조에 달할 때 DynamoDB의 읽기 요청 제한을 방지하기 위해). ProductCatalog 이와 함께 ProductCatalog에는 읽기 트래픽이 최소 수준일 때 읽기 용량 단위가 최소한 150개 필요하다고 판단됩니다. 제한 방지에 대한 자세한 내용은 Amazon DynamoDB의 제한 문제 해결 섹션을 참조하세요.

그러므로 읽기 용량 단위 150개 ~ 1,200개 범위에서 목표 사용률 70%면 ProductCatalog 테이블에 적당하다고 결정합니다. 목표 사용률이란 프로비저닝된 용량 단위에 대한 소비된 용량 단위의 비율을 백분율로 나타낸 값입니다. Application Auto Scaling은 목표 추적 알고리즘을 사용하여 ProductCatalog의 프로비저닝된 읽기 용량을 필요에 따라 조절함으로써 사용률이 70% 안팎으로 유지되도록 합니다.

참고

DynamoDB Auto Scaling은 실제 워크로드가 일정 시간(분) 동안 높게 또는 낮게 유지되는 경우에 한해 프로비저닝된 처리량(throughput) 설정을 수정합니다. Application Auto Scaling의 목표 추적 알고리즘은 목표 사용률을 장기적으로 사용자가 선택한 값 안팎으로 유지되도록 합니다.

짧은 기간 동안 갑자기 급증하는 활동은 테이블에 기본 제공되는 버스트 용량으로 처리합니다. 자세한 설명은 효과적으로 버스트 용량 사용 섹션을 참조하세요.

ProductCatalog 테이블에 대해 DynamoDB Auto Scaling을 활성화하기 위해 크기 조정 정책을 만듭니다. 이 정책은 다음을 지정합니다.

  • 관리하려는 테이블 또는 글로벌 보조 인덱스

  • 관리하려는 용량 유형(읽기 용량 또는 쓰기 용량)

  • 프로비저닝된 처리량 설정의 상한값과 하한값

  • 목표 사용률

조정 정책을 생성하면 Application Auto Scaling에서 사용자를 대신하여 한 쌍의 Amazon CloudWatch 경보를 생성합니다. 각 쌍은 할당된 처리량(throughput) 설정의 상한값과 하한값을 나타냅니다. 이러한 CloudWatch 경보는 테이블의 실제 사용률이 일정 기간 동안 목표 사용률에서 벗어날 때 트리거됩니다.

CloudWatch 경보 중 하나가 트리거되면 Amazon SNS에서 알림을 보냅니다 (활성화한 경우). 그러면 CloudWatch 경보가 Application Auto Scaling을 호출하고, 그러면 DynamoDB에 ProductCatalog 테이블의 프로비저닝된 용량을 적절히 상향 또는 하향 조정하도록 알립니다.

스케일링 이벤트 중에는 기록된 구성 항목당 요금이 부과됩니다. AWS Config 스케일링 이벤트가 발생하면 각 읽기 및 쓰기 자동 스케일링 이벤트에 대해 CloudWatch alarms:, alarms ProvisionedCapacity ProvisionedCapacityLow: ProvisionedCapacityHigh , ConsumedCapacity 라는 4개의 경보가 생성됩니다. AlarmHigh AlarmLow 그 결과 총 8개의 경보가 발생합니다. 따라서 모든 스케일링 이벤트에 대해 8개의 구성 항목을 AWS Config 기록합니다.

참고

또한 DynamoDB 스케일링이 특정 시간에 이루어지도록 스케줄링할 수 있습니다. 여기에서 기본 단계를 알아보십시오.

사용 노트

DynamoDB Auto Scaling을 사용하려면 먼저 다음 내용을 이해해야 합니다.

  • DynamoDB Auto Scaling은 Auto Scaling 정책에 따라 필요한 만큼 자주 읽기 용량이나 쓰기 용량을 늘릴 수 있습니다. 모든 DynamoDB 할당량은 Amazon DynamoDB의 서비스, 계정 및 테이블 할당량에서 설명한 것처럼 계속 유효합니다.

  • DynamoDB Auto Scaling은 프로비저닝된 처리량 설정을 사용자가 수동으로 수정하는 것도 허용합니다. 이러한 수동 조정은 DynamoDB Auto CloudWatch Scaling과 관련된 기존 경보에는 영향을 주지 않습니다.

  • 글로벌 보조 인덱스가 하나 이상인 테이블에 대해 DynamoDB Auto Scaling을 활성화하는 경우, 해당 인덱스에도 Auto Scaling을 균일하게 적용하는 것이 좋습니다. 이를 통해 테이블 쓰기 및 읽기 성능이 향상되고 제한을 방지할 수 있습니다. AWS Management Console에서 Apply same settings to global secondary indexes(글로벌 보조 인덱스에 동일한 설정 적용)를 선택하여 Auto Scaling을 사용하도록 설정할 수 있습니다. 자세한 설명은 기존 테이블에서 DynamoDB Auto Scaling 활성화 섹션을 참조하세요.

  • 테이블 또는 글로벌 테이블 복제본을 삭제해도 관련 확장 가능한 대상, 조정 정책 또는 CloudWatch 경보는 이와 함께 자동으로 삭제되지 않습니다.

  • 기존 테이블에 대한 GSI를 생성할 때 GSI에 대해 Auto Scaling이 활성화되지 않습니다. GSI 빌드 중에는 용량을 수동으로 관리해야 합니다. GSI의 백필이 완료되고 활성 상태에 도달하면 Auto Scaling이 정상적으로 작동합니다.