글로벌 테이블 - DynamoDB의 다중 리전 복제
Amazon DynamoDB 글로벌 테이블은 완전관리형 다중 리전 다중 활성 데이터베이스 옵션으로, 대규모로 확장되는 글로벌 애플리케이션에 빠른 로컬 읽기 및 쓰기 성능을 지원합니다.
글로벌 테이블은 복제 솔루션을 직접 구축하여 관리하지 않고도 다중 리전의 다중 활성 데이터베이스를 배포할 수 있는 완전관리형 솔루션을 제공합니다. 테이블을 사용할 수 있는 AWS 리전을 지정할 수 있습니다. 그러면 DynamoDB가 지속적인 데이터 변경 사항을 모든 해당 리전으로 전파합니다. 글로벌 테이블은 모든 리전에서 사용할 수 있습니다.
글로벌 테이블을 사용할 때 얻을 수 있는 구체적인 이점은 다음과 같습니다.
DynamoDB 테이블을 선택한 AWS 리전 간에 자동으로 복제할 수 있습니다
리전 간에 데이터를 복제하고 업데이트 충돌을 해결하는 어려운 작업이 필요 없어 애플리케이션의 비즈니스 로직에 집중할 수 있습니다.
전체 리전이 격리되거나 성능이 저하되는 예상치 못한 상황에서도 애플리케이션의 가용성을 높게 유지할 수 있습니다.
DynamoDB 글로벌 테이블은 전역적으로 사용자가 분산된 대규모 애플리케이션에 유용합니다. 이러한 환경에서 사용자는 매우 빠른 애플리케이션 성능을 경험할 수 있습니다. 글로벌 테이블은 전 세계 AWS 리전에 자동 멀티 활성 복제본을 제공합니다. 따라서 사용자의 위치에 관계 없이 지연 시간이 짧은 데이터 액세스를 제공할 수 있습니다.
다음 비디오에서는 전역 테이블에 대해 소개합니다.
AWS Management Console 또는 AWS CLI에서 글로벌 테이블을 설정할 수 있습니다. 글로벌 테이블은 기존 DynamoDB API를 사용하므로 애플리케이션을 변경할 필요가 없습니다. 선결제 비용이나 약정 없이 프로비저닝된 리소스에 대해서만 비용을 지불하면 됩니다.
주제
글로벌 테이블을 사용하여 원활하게 리전 간 데이터 복제
미국 동부 해안, 미국 서부 해안, 서부 유럽의 세 지역에 대규모의 고객이 있다고 가정합니다. 이러한 고객은 해당 애플리케이션을 사용하는 동안 프로필 정보를 업데이트할 수 있습니다. 이 사용 사례의 요건을 채우기 위해 고객이 있는 세 개의 다른 AWS 리전에 CustomerProfiles
라는 이름의 동일한 세 개의 DynamoDB 테이블을 생성해야 합니다. 이러한 세 가지 테이블은 서로 완전히 별도의 테이블이며 한 테이블의 데이터 변경 사항이 다른 테이블에 반영되지 않습니다. 관리형 복제 솔루션 없이 데이터 변경 사항을 복제하는 코드를 작성할 수 있지만, 이렇게 하려면 시간과 노동력이 많이 필요합니다.
코드를 직접 작성하는 대신 세 개의 리전별 CustomerProfiles
테이블로 구성된 글로벌 테이블을 만들 수 있습니다. DynamoDB는 자동으로 데이터 변경을 이러한 테이블 간에 복제하므로 한 리전에서 CustomerProfiles
데이터가 변경되면 다른 리전으로 자동 전파됩니다. 또한 AWS 리전 중 하나가 일시적으로 사용 불가 상태가 될 경우에도 고객은 다른 리전에서 동일한 CustomerProfiles
데이터를 액세스할 수 있습니다.
참고
-
글로벌 테이블 글로벌 테이블 버전 2017.11.29(레거시)는 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), 유럽(아일랜드), 유럽(런던), 유럽(프랑크푸르트), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄) 및 아시아 태평양(서울) 리전에서 사용 가능합니다.
-
트랜잭션 작업은 원래 쓰기 작업이 실행된 리전에서만 ACID(원자성, 일관성, 격리 및 내구성) 보장을 제공합니다. 전역 테이블에서는 트랜잭션이 리전 간에 지원되지 않습니다. 예를 들어 미국 동부(오하이오) 및 미국 서부(오레곤) 리전에 복제본이 있는 전역 테이블에 대해 미국 동부(버지니아 북부)에서 TransactWriteItems 작업을 수행할 경우 변경 내용이 복제될 때 미국 서부(오레곤)에서 부분적으로 완료된 트랜잭션을 관찰할 수 있습니다. 변경 내용은 소스 리전에서 커밋된 이후에만 다른 리전에 복제됩니다.
-
AWS 리전을 비활성화하는 경우 DynamoDB는 AWS 리전에 액세스할 수 없는 것으로 감지하고 20시간 후 복제 그룹에서 이 복제본을 제거합니다. 복제본이 삭제되지 않고 이 리전에서와 이 리전으로의 복제가 중지됩니다.
-
소스 테이블을 성공적으로 삭제하려면 읽기 전용 복제본을 추가한 후 24시간을 기다려야 합니다. 읽기 전용 복제본을 추가한 후 처음 24시간 동안 테이블을 삭제하려고 하면 "Replica cannot be deleted because it has acted as a source region for new replicas being added in the table in the last 24 hours"(최근 24시간 동안 테이블에 추가된 새 복제본의 소스 리전 역할을 했기 때문에 복제본을 삭제할 수 없습니다)라는 오류 메시지가 나타납니다.
-
새 복제본을 추가할 때 소스 리전의 성능에 영향을 미치지 않습니다.
-
복제본의 읽기 및 쓰기 용량을 변경하면 새 쓰기 용량은 다른 동기화된 복제본에 반영되지만 새 읽기 용량은 반영되지 않습니다.
AWS 리전의 가용성과 요금에 대한 자세한 내용은 Amazon DynamoDB 요금
AWS KMS를 사용하여 글로벌 테이블에 대한 보안 및 액세스 제공
-
복제본을 암호화하는 데 사용된 고객 관리형 키 또는 AWS 관리형 키에 대해
AWSServiceRoleForDynamoDBReplication
서비스 연결 역할을 사용하여 글로벌 테이블에 대한 AWS KMS 작업을 수행할 수 있습니다. -
복제본을 암호화하는 데 사용된 고객 관리형 CMK에 액세스할 수 없는 경우 DynamoDB는 복제 그룹에서 이 복제본을 제거합니다. 복제본은 삭제되지 않으며 KMS 키에 액세스할 수 없는 것으로 감지된 후 20시간이 지나면 이 리전에서 복제가 중지됩니다.
-
복제 테이블을 암호화하는 데 사용된 고객 관리형 CMK를 비활성화하려는 경우 복제 테이블을 암호화하는 데 키가 더 이상 사용되지 않는 경우에만 그렇게 해야 합니다. 복제 테이블을 삭제하는 명령을 실행한 후에는 삭제 작업이 완료되고 글로벌 테이블이
Active
가 될 때까지 기다린 이후에 키를 비활성화해야 합니다. 이렇게 하지 않으면 복제 테이블에서 및 복제 테이블로 일부 데이터가 복제됩니다. -
복제 테이블의 IAM 역할 정책을 수정하거나 삭제하려면 복제 테이블이
Active
상태일 때 해야 합니다. 이렇게 하지 않으면 복제 테이블 생성, 업데이트 또는 삭제에 실패할 수 있습니다. -
글로벌 테이블은 기본적으로 삭제 방지가 비활성화된 상태로 생성됩니다. 글로벌 테이블에 대해 삭제 방지가 활성화된 경우에도 해당 테이블의 모든 복제본은 기본적으로 삭제 방지가 비활성화된 상태로 시작됩니다.
-
테이블에 대한 삭제 방지가 비활성화되어 있는 동안 실수로 테이블이 삭제될 수 있습니다. 삭제 방지가 활성화된 테이블은 그 누구도 삭제할 수 없습니다.
-
한 복제본 테이블에 대한 삭제 보호 설정을 변경해도 그룹의 다른 복제본은 업데이트되지 않습니다.
참고
고객 관리형 키는 글로벌 테이블 버전 2017.11.29(레거시)에서 지원되지 않습니다. DynamoDB 글로벌 테이블에서 고객 관리형 키를 사용하려면 테이블을 글로벌 테이블 버전 2019.11.21(현재)로 업그레이드하고 활성화해야 합니다.