글로벌 테이블을 레거시(2017.11.29) 버전에서 현재(2019.11.21) 버전으로 업그레이드 - Amazon DynamoDB

글로벌 테이블을 레거시(2017.11.29) 버전에서 현재(2019.11.21) 버전으로 업그레이드

DynamoDB 글로벌 테이블에는 글로벌 테이블 버전 2019.11.21(현재)글로벌 테이블 버전 2017.11.29(레거시)의 두 가지 버전이 있습니다. 고객은 가능하면 버전 2019.11.21(현재)을 사용해야 합니다. 이는 2017.11.29(레거시)보다 유연성과 효율성이 뛰어나고 쓰기 용량을 적게 소비합니다. 사용 중인 버전을 확인하려면 사용 중인 글로벌 테이블 버전 확인 섹션을 참조하세요.

이 섹션에서는 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만 필요합니다.

    다음 테이블에는 2017.11.29(레거시) 및 2019.11.21(현재) 테이블의 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(현재)은 DescribeTableUpdateTable API를 사용하여 복제본을 관리합니다.

  • 버전 2017.11.29(레거시)는 각 쓰기에 대해 2개의 DynamoDB Streams 레코드를 게시합니다. 버전 2019.11.21(현재)은 각 쓰기에 대해 1개의 DynamoDB Streams 레코드를 게시합니다.

  • 버전 2017.11.29(레거시)는 aws:rep:deleting, aws:rep:updateregionaws:rep:updatetime 속성을 채우고 업데이트합니다. 버전 2019.11.21(현재)은 이러한 속성을 채우거나 업데이트하지 않습니다.

  • 버전 2017.11.29(레거시)는 복제본 간에 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(현재) 글로벌 테이블로 업그레이드하려면 먼저 다음과 같은 사전 조건을 충족해야 합니다.

  • 복제본의 TTL(Time To Live) 설정은 리전 간에 일관됩니다.

  • 복제본의 글로벌 보조 인덱스(GSI) 정의는 리전 간에 일관됩니다.

  • 복제본의 저장 시 암호화 설정은 리전 간에 일관됩니다.

  • DynamoDB Auto Scaling이 모든 복제본의 WCU에 대해 활성화되거나 온디맨드 용량 모드가 모든 복제본에 대해 활성화됩니다.

  • 애플리케이션에는 테이블 항목에 aws:rep:deleting, aws:rep:updateregionaws: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개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

대상

복제가 PutItem을 사용하여 수행됩니다. 복제가 PutItem을 사용하여 수행됩니다. 복제가 PutItem을 사용하여 수행됩니다.
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성만 포함하고 복제 속성은 포함하지 않는 단일 Streams 레코드가 생성됩니다.
대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. 대상 리전에 항목이 있는 경우 rWCU 1개가 사용됩니다. 대상 리전에 항목이 없는 경우 rWCU 2개가 사용됩니다. 각 고객 쓰기 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

삭제

소스

DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다. DeleteItem을 사용하여 타임스탬프가 더 작은 항목을 삭제합니다.
고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성과 aws:rep:* 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Streams 레코드가 생성됩니다.
각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

대상

2단계 삭제가 이루어집니다.

  • 1단계에서 UpdateItem이 삭제 플래그를 설정합니다.

  • 2단계에서 DeleteItem이 항목을 삭제합니다.

DeleteItem을 사용하여 항목을 삭제합니다. DeleteItem을 사용하여 항목을 삭제합니다.
두 개의 Streams 레코드가 생성됩니다. 첫 번째 레코드에 aws:rep:deleting 필드 변경 사항이 포함됩니다. 두 번째 레코드에 고객이 작성한 속성과 aws:rep:* 속성이 포함됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다. 고객이 작성한 속성을 모두 포함하는 단일 Stream 레코드가 생성됩니다.
각 고객 삭제 작업에 rWCU 2개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다. 각 고객 삭제 작업에 rWCU 1개가 사용됩니다.
ReplicationLatencyPendingReplicationCount 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다. ReplicationLatency 지표가 CloudWatch에 게시됩니다.

버전 2019.11.21(현재)로 업그레이드

AWS Management Console을 사용하여 DynamoDB 글로벌 테이블의 버전을 업그레이드하려면 다음 단계를 수행하세요.

글로벌 테이블을 버전 2019.11.21(현재)로 업그레이드하는 방법
  1. https://console.aws.amazon.com/dynamodb/home에서 DynamoDB 콘솔을 엽니다.

  2. 콘솔 왼쪽의 탐색 창에서 테이블을 선택한 다음 버전 2019.11.21(현재)로 업그레이드할 글로벌 테이블을 선택합니다.

  3. 전역 테이블 탭을 선택합니다.

  4. Update version(버전 업데이트)을 선택합니다.

    버전 업데이트 버튼을 보여주는 콘솔 스크린샷
  5. 새 요구 사항을 읽고 동의한 다음 버전 업데이트(Update version)를 선택합니다.

  6. 업그레이드 프로세스가 완료되면 콘솔에 나타나는 글로벌 테이블 버전이 2019.11.21로 변경됩니다.