DynamoDB 글로벌 테이블의 버전 2017.11.29(레거시)에서 버전 2019.11.21(현재)로 업그레이드
참고
DynamoDB 글로벌 테이블에는 글로벌 테이블 버전 2019.11.21(현재)과 글로벌 테이블 버전 2017.11.29(레거시)의 두 가지 버전이 있습니다. 고객은 가능하면 버전 2019.11.21(현재)을 사용해야 합니다. 이는 2017.11.29(레거시)보다 유연성과 효율성이 뛰어나고 쓰기 용량을 적게 소비합니다. 사용 중인 버전을 확인하려면 사용 중인 DynamoDB 글로벌 테이블 버전 확인 섹션을 참조하세요.
이 섹션에서는 DynamoDB 콘솔을 사용하여 글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드하는 방법을 설명합니다. 버전 2017.11.29(레거시)에서 버전 2019.11.21(현재)로 업그레이드하는 것은 일회성 작업이며 되돌릴 수 없습니다. 현재는 콘솔을 통해서만 글로벌 테이블을 업그레이드할 수 있습니다.
주제
레거시 버전과 현재 버전 간의 동작 차이
다음 목록은 글로벌 테이블의 레거시 버전과 현재 버전 간의 동작 차이를 설명합니다.
-
버전 2019.11.21(현재)은 버전 2017.11.29(레거시)에 비해 몇몇 DynamoDB 작업에 대한 쓰기 용량을 적게 소비합니다. 따라서 대부분의 고객에게 더 비용 효과적입니다. 이러한 DynamoDB 작업의 차이점은 다음과 같습니다.
-
한 리전에 있는 1KB 항목에 대해 PutItem을 간접 호출하고 다른 리전에 복제할 때 2017.11.29(레거시)의 경우 리전당 2개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 1개만 필요합니다.
-
1KB 항목에 대해 UpdateItem을 간접 호출할 때 2017.11.29(레거시)의 경우 소스 리전당 2개의 rWRU와 대상 리전당 1개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 소스 및 대상 리전에 모두 1개의 rWRU만 필요합니다.
-
1KB 항목에 대해 DeleteItem을 간접 호출할 때 2017.11.29(레거시)의 경우 소스 리전당 1개의 rWRU와 대상 리전당 2개의 rWRU가 필요하지만 2019.11.21(현재)의 경우 소스 또는 대상 리전에 1개의 rWRU만 필요합니다.
다음 표에서는 2개 리전에 있는 1KB 항목에 대한 2017.11.29(레거시) 및 2019.11.21(현재) 테이블의 rWRU 사용량을 보여줍니다.
Operation 2017.11.29(레거시) 2019.11.21(현재) 절감 PutItem rWRU 4개 rWRU 2개 50% UpdateItem rWRU 3개 rWRU 2개 33% DeleteItem rWRU 3개 rWRU 2개 33% -
-
버전 2017.11.29(레거시)는 11개 AWS 리전에서만 사용할 수 있습니다. 그러나 버전 2019.11.21(현재)은 모든 AWS 리전에서 사용할 수 있습니다.
-
먼저 빈 리전 테이블 세트를 만든 다음 CreateGlobalTable API 간접 호출로 글로벌 테이블을 구성하여 버전 2017.11.29(레거시) 글로벌 테이블을 생성합니다. UpdateTable API 간접 호출로 기존 리전 테이블에 복제본을 추가하여 버전 2019.11.21(현재) 글로벌 테이블을 생성합니다.
-
버전 2017.11.29(레거시)에서는 생성 중일 때를 포함하여 새 리전에 복제본을 추가하기 전에 테이블의 모든 복제본을 비워야 합니다. 버전 2019.11.21(현재)에서는 이미 데이터가 포함된 테이블의 리전에 복제본을 추가 및 제거할 수 있습니다.
-
버전 2017.11.29(레거시)는 복제본 관리를 위해 다음과 같은 컨트롤 플레인 전용 API 세트를 사용합니다.
버전 2019.11.21(현재)은 DescribeTable 및 UpdateTable API를 사용하여 복제본을 관리합니다.
-
버전 2017.11.29(레거시)는 각 쓰기에 대해 2개의 DynamoDB Streams 레코드를 게시합니다. 버전 2019.11.21(현재)은 각 쓰기에 대해 1개의 DynamoDB Streams 레코드를 게시합니다.
-
버전 2017.11.29(레거시)는
aws:rep:deleting
,aws:rep:updateregion
및aws:rep:updatetime
속성을 채우고 업데이트합니다. 버전 2019.11.21(현재)은 이러한 속성을 채우거나 업데이트하지 않습니다. -
버전 2017.11.29(레거시)는 복제본 간에 DynamoDB에서 TTL(Time To Live) 사용 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 TTL 설정을 동기화합니다.
-
버전 2017.11.29(레거시)는 TTL 삭제를 다른 복제본에 복제하지 않습니다. 버전 2019.11.21(현재)은 TTL 삭제를 모든 복제본에 복제합니다.
-
버전 2017.11.29(레거시)는 복제본 간에 Auto Scaling 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 Auto Scaling 설정을 동기화합니다.
-
버전 2017.11.29(레거시)는 복제본 간에 글로벌 보조 인덱스(GSI) 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 GSI 설정을 동기화합니다.
-
버전 2017.11.29(레거시)는 복제본 간에 저장 시 암호화 설정을 동기화하지 않습니다. 버전 2019.11.21(현재)은 복제본 간에 저장 시 암호화 설정을 동기화합니다.
-
버전 2017.11.29(레거시)는
PendingReplicationCount
지표를 게시합니다. 버전 2019.11.21(현재)은 이 지표를 게시하지 않습니다.
업그레이드 사전 조건
버전 2019.11.21(현재) 글로벌 테이블로 업그레이드하려면 먼저 다음과 같은 사전 조건을 충족해야 합니다.
-
복제본의 DynamoDB에서 TTL(Time To Live) 사용 설정은 리전 간에 일관됩니다.
-
복제본의 글로벌 보조 인덱스(GSI) 정의는 리전 간에 일관됩니다.
-
복제본의 저장 시 암호화 설정은 리전 간에 일관됩니다.
-
DynamoDB Auto Scaling이 모든 복제본의 WCU에 대해 활성화되거나 온디맨드 용량 모드가 모든 복제본에 대해 활성화됩니다.
-
애플리케이션에는 테이블 항목에
aws:rep:deleting
,aws:rep:updateregion
및aws:rep:updatetime
속성이 없어도 됩니다.
글로벌 테이블 업그레이드에 필요한 권한
버전 2019.11.21(현재)로 업그레이드하려면 복제본이 있는 모든 리전에 dynamodb:UpdateGlobalTableversion
권한이 있어야 합니다. DynamoDB 콘솔에 액세스하고 테이블을 보는 데 필요한 권한에 더해 이러한 권한이 필요합니다.
다음 IAM 정책은 글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드할 수 있는 권한을 부여합니다.
{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": "*" } ] }
다음 IAM 정책은 두 개의 리전에 복제본이 있는 Music
글로벌 테이블만 버전 2019.11.21(현재)로 업그레이드할 수 있는 권한을 부여합니다.
{ "version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:UpdateGlobalTableversion", "Resource": [ "arn:aws:dynamodb::123456789012:global-table/Music", "arn:aws:dynamodb:ap-southeast-1:123456789012:table/Music", "arn:aws:dynamodb:us-east-2:123456789012:table/Music" ] } ] }
업그레이드 중 기대할 수 있는 사항
-
업그레이드하는 동안 모든 글로벌 테이블 복제본은 읽기 및 쓰기 트래픽을 계속 처리합니다.
-
업그레이드 프로세스에는 테이블 크기와 복제본 수에 따라 몇 분에서 몇 시간이 소요됩니다.
-
업그레이드 프로세스 중에 TableStatus의 값은
ACTIVE
에서UPDATING
으로 변경됩니다. DescribeTable API를 호출하거나 DynamoDB 콘솔의 테이블 보기를 사용하여 테이블 상태를 볼 수 있습니다. -
테이블이 업그레이드되는 동안에는 Auto Scaling이 글로벌 테이블의 프로비저닝된 용량 설정을 조정하지 않습니다. 업그레이드 중에는 테이블을 온디맨드 용량 모드로 설정하는 것이 좋습니다.
-
업데이트 중에 프로비저닝된 용량 모드를 Auto Scaling과 함께 사용하도록 선택한 경우 업그레이드 기간 동안 예상되는 트래픽 증가를 수용하여 업그레이드 중 제한을 피하기 위해 정책의 최소 읽기 및 쓰기 처리량을 늘려야 합니다.
-
업그레이드 프로세스가 완료되면 테이블 상태가
ACTIVE
로 변경됩니다.
업그레이드 전, 업그레이드 중, 업그레이드 후의 DynamoDB Streams 동작
Operation | 복제본 리전 | 업그레이드 전 동작 | 업그레이드 중 동작 | 업그레이드 후 동작 |
---|---|---|---|---|
넣기 또는 업데이트 |
소스 |
타임스탬프 채우기가 UpdateItem을 사용하여 발생합니다. | 타임스탬프 채우기가 PutItem을 사용하여 발생합니다. | 고객이 볼 수 있는 타임스탬프가 생성되지 않습니다. |
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 고객이 작성한 속성이 포함됩니다. 두 번째 레코드에 aws:rep:* 속성이 포함됩니다. |
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 고객이 작성한 속성이 포함됩니다. 두 번째 레코드에 aws:rep:* 속성이 포함됩니다. |
고객이 작성한 속성을 포함하는 단일 Streams 레코드가 생성됩니다. | ||
각 고객 쓰기 작업에 rWCU 2개가 사용됩니다. | 각 고객 쓰기 작업에 rWCU 2개가 사용됩니다. | 각 고객 쓰기 작업에 rWCU 1개가 사용됩니다. | ||
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 지표가 CloudWatch에 게시됩니다. |
||
대상 |
복제가 PutItem을 사용하여 수행됩니다. | 복제가 PutItem을 사용하여 수행됩니다. | 복제가 PutItem을 사용하여 수행됩니다. | |
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. |
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. |
고객이 작성한 속성만 포함하고 복제 속성은 포함하지 않는 단일 Streams 레코드가 생성됩니다. | ||
대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. | 대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. | 각 고객 쓰기 작업에 rWCU 1개가 사용됩니다. | ||
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 지표가 CloudWatch에 게시됩니다. |
||
삭제 |
소스 |
DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. | DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. | DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. |
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. |
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. |
고객이 작성한 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. | ||
각 고객 삭제 작업에 rWCU 1개가 사용됩니다. | 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. | 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. | ||
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 지표가 CloudWatch에 게시됩니다. |
||
대상 |
2단계 삭제가 이루어집니다.
|
DeleteItem을 사용하여 항목을 삭제합니다. | DeleteItem을 사용하여 항목을 삭제합니다. | |
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 aws:rep:deleting 필드 변경 사항이 포함됩니다. 두 번째 레코드에 고객이 작성한 속성과 aws:rep:* 속성이 포함됩니다. |
고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다. | 고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다. | ||
각 고객 삭제 작업에 rWCU 2개가 사용됩니다. | 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. | 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. | ||
ReplicationLatency 및 PendingReplicationCount 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 지표가 CloudWatch에 게시됩니다. |
ReplicationLatency 지표가 CloudWatch에 게시됩니다. |
버전 2019.11.21(현재)로 업그레이드
AWS Management Console을 사용하여 DynamoDB 글로벌 테이블의 버전을 업그레이드하려면 다음 단계를 수행하세요.
글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드하는 방법
-
https://console.aws.amazon.com/dynamodb/home
에서 DynamoDB 콘솔을 엽니다. -
콘솔 왼쪽의 탐색 창에서 테이블을 선택한 다음 버전 2019.11.21(현재)로 업그레이드할 글로벌 테이블을 선택합니다.
-
전역 테이블 탭을 선택합니다.
-
Update version(버전 업데이트)을 선택합니다.
-
새 요구 사항을 읽고 동의한 다음 버전 업데이트(Update version)를 선택합니다.
-
업그레이드 프로세스가 완료되면 콘솔에 나타나는 글로벌 테이블 버전이 2019.11.21로 변경됩니다.