DynamoDB 글로벌 테이블 작동 방식
다중 계정 글로벌 테이블은 DynamoDB 글로벌 테이블을 완전 관리형, 서버리스, 다중 리전 및 다중 활성 기능으로 확장하여 여러 AWS 계정에 걸쳐 확장합니다. 다중 계정 글로벌 테이블은 AWS 리전 및 계정 간에 데이터를 복제하여 동일한 계정 글로벌 테이블과 동일한 액티브-액티브 기능을 제공합니다. 복제본에 쓸 때 DynamoDB는 데이터를 다른 모든 복제본에 복제합니다.
동일 계정 글로벌 테이블과의 주요 차이점은 다음과 같습니다.
-
다중 계정 복제는 다중 리전 최종 일관성(MREC) 글로벌 테이블에 대해 지원됩니다.
-
단일 리전 테이블로 시작하는 경우에만 복제본을 추가할 수 있습니다. 기존의 동일 계정 글로벌 테이블을 다중 계정 설정으로 변환하는 것은 지원되지 않습니다. 마이그레이션하려면 새 다중 계정 글로벌 테이블을 생성하기 전에 기존 복제본을 삭제하여 단일 리전 테이블로 돌아가야 합니다.
-
각 복제본은 별도의 AWS 계정에 있어야 합니다. N개의 복제본이 있는 다중 계정 글로벌 테이블의 경우 N개의 계정이 있어야 합니다.
-
다중 계정 글로벌 테이블은 기본적으로 모든 복제본에서 통합 테이블 설정을 사용합니다. 모든 복제본은 동일한 구성(예: 처리량 모드 및 TTL)을 자동으로 공유하며, 동일한 계정 글로벌 테이블과 달리 이러한 설정은 복제본당 재정의할 수 없습니다.
-
고객은 리소스 정책에서 DynamoDB 글로벌 테이블 서비스 위탁자에 복제 권한을 제공해야 합니다.
다중 계정 글로벌 테이블은 동일한 계정 글로벌 테이블과 동일한 기본 복제 기술을 사용합니다. 테이블 설정은 모든 리전 복제본에 자동으로 복제되며 고객은 복제본당 설정을 재정의하거나 사용자 지정할 수 없습니다. 이렇게 하면 동일한 글로벌 테이블에 참여하는 여러 AWS 계정에서 일관된 구성과 예측 가능한 동작이 보장됩니다.
DynamoDB 글로벌 테이블의 설정은 테이블의 동작 방식과 리전 간에 데이터가 복제되는 방식을 정의합니다. 이러한 설정은 테이블을 생성할 때 또는 새 리전 복제본을 추가할 때 DynamoDB 컨트롤 플레인 API를 통해 구성됩니다.
다중 계정 글로벌 테이블을 생성할 때 고객은 각 리전 복제본에 대해 GlobalTableSettingsReplicationMode = ENABLED를 설정해야 합니다. 이렇게 하면 한 리전에서 수행된 구성 변경 사항이 글로벌 테이블에 참여하는 다른 모든 리전에 자동으로 전파됩니다.
테이블 생성 후 설정 복제를 활성화할 수 있습니다. 이는 원래 테이블이 리전 테이블로 생성되고 나중에 다중 계정 글로벌 테이블로 업그레이드되는 시나리오를 지원합니다.
동기화된 설정
다음 테이블 설정은 다중 계정 글로벌 테이블의 모든 복제본 간에 항상 동기화됩니다.
참고
동일 계정 글로벌 테이블과 달리 다중 계정 글로벌 테이블은 이러한 설정에 대해 리전별 재정의를 허용하지 않습니다. 유일한 예외는 읽기 자동 크기 조정 정책(테이블 및 GSI)에 대한 재정의가 별도의 외부 리소스이므로 허용된다는 것입니다.
-
용량 모드(프로비저닝된 용량 또는 온디맨드)
-
테이블 프로비저닝된 읽기 및 쓰기 용량
-
테이블 읽기 및 쓰기 오토 스케일링
-
로컬 보조 인덱스(LSI) 정의
-
글로벌 보조 인덱스(GSI) 정의
-
GSI 프로비저닝된 읽기 및 쓰기 용량
-
GSI 테이블 읽기 및 쓰기 오토 스케일링
-
MREC 모드의 스트림 정의
-
TTL(Time To Live)
-
웜 처리량
-
온디맨드 최대 읽기 및 쓰기 처리량
비동기화 설정
다음 설정은 복제본 간에 동기화되지 않으므로 각 리전의 각 복제본 테이블에 대해 독립적으로 구성해야 합니다.
-
테이블 클래스
-
서버 측 암호화(SSE) 유형
-
시점 복구
-
서버 측 암호화(SSE) KMS 키 ID
-
삭제 방지
-
Kinesis Data Streams(KDSD)
-
Tags
-
리소스 정책
-
테이블 Cloudwatch-Contributor Insights(CCI)
-
GSI Cloudwatch-Contributor Insights(CCI)
모니터링
다중 리전 최종 일관성(MREC)을 위해 구성된 글로벌 테이블은 ReplicationLatency 지표를 CloudWatch에 게시합니다. 이 지표는 하나의 복제본 테이블에 항목이 쓰인 시점부터 해당 항목이 글로벌 테이블의 다른 복제본에 나타날 때까지 걸린 시간을 추적합니다. ReplicationLatency는 밀리초 단위로 표현되며 글로벌 테이블의 모든 소스 및 대상 리전 쌍마다 내보내집니다.
일반적인 ReplicationLatency 값은 선택한 AWS 리전 간의 거리와 워크로드 유형 및 처리량과 같은 기타 변수에 따라 달라집니다. 예를 들어 미국 서부(캘리포니아 북부)(us-west-1) 리전의 소스 복제본은 아프리카(케이프타운)(af-south-1) 리전에 비해 미국 서부(오리건)(us-west-2) 리전에 대한 ReplicationLatency가 낮습니다.
ReplicationLatency 값이 상승하면 한 복제본의 업데이트 내용이 다른 복제본 테이블로 시기 적절하게 전파되지 않는다는 것을 나타낼 수 있습니다. 이 경우 애플리케이션의 읽기 및 쓰기 작업을 다른 AWS 리전으로 일시적으로 리디렉션할 수 있습니다.
다중 계정 글로벌 테이블의 복제 지연 시간 문제 처리
복제본 테이블의 고객 유도 문제로 인해 ReplicationLatency가 3시간을 초과하면 DynamoDB는 고객에게 기본 문제를 해결하도록 요청하는 알림을 보냅니다. 복제를 방해할 수 있는 일반적인 고객 유발 문제는 다음과 같습니다.
-
복제본 테이블의 리소스 정책에서 필요한 권한 제거
-
다중 계정 글로벌 테이블의 복제본을 호스팅하는 AWS 리전 옵트아웃
-
데이터 복호화에 필요한 테이블의 AWS KMS 키 권한 거부
DynamoDB는 복제 지연 시간이 증가한 후 3시간 이내에 초기 알림을 보낸 다음 문제가 해결되지 않은 상태로 유지되면 20시간 후에 두 번째 알림을 보냅니다. 필요한 기간 내에 문제가 해결되지 않으면 DynamoDB는 글로벌 테이블에서 복제본의 연결을 자동으로 해제합니다. 그러면 영향을 받는 복제본이 리전 테이블로 변환됩니다.