글로벌 테이블 개요 - AWS 규범적 지침

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

글로벌 테이블 개요

주요 사실

  • 글로벌 테이블에는 버전 2017.11.29 (레거시) (v1이라고도 함) 와 2019.11.21 (현재) (v2라고도 함) 의 두 가지 버전이 있습니다. 이 가이드는 현재 버전에만 초점을 맞춥니다.

  • DynamoDB (글로벌 테이블 제외) 는 지역 서비스이므로 가용성이 높고 전체 가용 영역의 장애를 비롯한 인프라 장애에 대한 내재적 복원력이 뛰어납니다. 단일 지역 DynamoDB 테이블은 99.99% 의 가용성을 제공하도록 설계되었습니다. 자세한 내용은 DynamoDB 서비스 수준 계약 (SLA) 을 참조하십시오.

  • DynamoDB 글로벌 테이블은 둘 이상의 리전 간에 데이터를 복제합니다. 다중 지역 DynamoDB 테이블은 99.999% 가용성을 제공하도록 설계되었습니다. 적절한 계획을 세우면 글로벌 테이블은 지역적 장애에 대한 복원력을 갖춘 아키텍처를 만드는 데 도움이 될 수 있습니다.

  • 글로벌 테이블은 액티브-액티브 복제 모델을 사용합니다. DynamoDB의 관점에서 볼 때 각 리전의 테이블은 읽기 및 쓰기 요청을 수락할 수 있는 동등한 지위를 갖습니다. 쓰기 요청을 받은 후 로컬 복제본 테이블은 쓰기 작업을 백그라운드에서 참여 중인 다른 원격 지역에 복제합니다.

  • 항목은 개별적으로 복제됩니다. 단일 트랜잭션 내에서 업데이트된 항목은 함께 복제되지 않을 수 있습니다.

  • 원본 지역의 각 테이블 파티션은 다른 모든 파티션과 병렬로 쓰기 작업을 복제합니다. 원격 리전 내의 쓰기 작업 순서가 소스 리전 내에서 발생한 쓰기 작업 순서와 일치하지 않을 수 있습니다. 테이블 파티션에 대한 자세한 내용은 블로그 게시물 Scaling DynamoDB: How partitions, hot keys, and split for heat impact performance를 참조하세요.

  • 글로벌 테이블에 새로 쓰여진 항목은 일반적으로 1초 안에 모든 복제본 테이블에 전파됩니다. 가까운 리전이 대체로 더 빨리 전파됩니다.

  • CloudWatchAmazon은 각 지역 쌍에 대한 ReplicationLatency 메트릭을 제공합니다. 이 값은 도착하는 항목을 보고 도착 시간을 초기 쓰기 시간과 비교하고 평균을 계산하여 계산합니다. 타이밍은 소스 지역 CloudWatch 내에 저장됩니다. 평균 및 최대 타이밍을 보면 평균 및 최악의 복제 지연을 결정하는 데 유용할 수 있습니다. 이 지연 시간에는 SLA가 없습니다.

  • 개별 항목이 서로 다른 두 지역에서 거의 동시에 (이 ReplicationLatency 창 내에서) 업데이트되고 첫 번째 쓰기 작업이 복제되기 전에 두 번째 쓰기 작업이 발생하는 경우 쓰기 충돌이 발생할 수 있습니다. 글로벌 테이블은 쓰기 작업의 타임스탬프를 기반으로 하는 Last Writer Wins 메커니즘을 사용하여 이러한 충돌을 해결합니다. 첫 번째 작업은 두 번째 작업으로 “손실”됩니다. 이러한 충돌은 CloudWatch 또는 에 기록되지 않습니다AWS CloudTrail.

  • 각 항목에는 비공개 시스템 속성으로 보관되는 마지막 쓰기 타임스탬프가 있습니다. Last Writer Wins 접근 방식은 수신 항목의 타임스탬프가 기존 항목의 타임스탬프보다 커야 하는 조건부 쓰기 작업을 사용하여 구현됩니다.

  • 글로벌 테이블은 모든 항목을 모든 참여 지역에 복제합니다. 다른 복제 범위를 지정하려는 경우 여러 글로벌 테이블을 생성하고 각 테이블에 서로 다른 참여 지역을 할당할 수 있습니다.

  • 로컬 리전은 복제본 리전이 오프라인이거나 리전이 ReplicationLatency 커져도 쓰기 작업을 허용합니다. 로컬 테이블은 각 항목이 성공할 때까지 원격 테이블에 항목 복제를 계속 시도합니다.

  • 드문 경우이긴 하지만 리전이 완전히 오프라인 상태가 되는 경우 나중에 다시 온라인 상태가 되면 보류 중인 모든 아웃바운드 및 인바운드 복제가 재시도됩니다. 테이블을 다시 동기화하기 위한 특별한 작업은 필요하지 않습니다. Last Writer Wins 메커니즘은 데이터가 최종적으로 일관성을 유지하도록 합니다.

  • 언제든지 DynamoDB 테이블에 새 리전을 추가할 수 있습니다. DynamoDB는 초기 동기화 및 진행 중인 복제를 처리합니다. 또한 리전 (원래 리전 포함) 을 제거할 수 있으며, 이렇게 하면 해당 리전의 로컬 테이블이 삭제됩니다.

  • DynamoDB에는 글로벌 엔드포인트가 없습니다. 모든 요청은 해당 리전의 로컬인 글로벌 테이블 인스턴스에 액세스하는 리전 엔드포인트로 전송됩니다.

  • DynamoDB에 대한 호출은 리전 간에 전송되어서는 안 됩니다. 가장 좋은 방법은 한 지역에 위치한 애플리케이션이 해당 지역의 로컬 DynamoDB 엔드포인트에만 직접 액세스하도록 하는 것입니다. 한 지역 (DynamoDB 계층 또는 주변 스택) 내에서 문제가 감지되면 최종 사용자 트래픽을 다른 지역에서 호스팅되는 다른 애플리케이션 엔드포인트로 라우팅해야 합니다. 글로벌 테이블을 통해 모든 리전에 있는 애플리케이션이 동일한 데이터에 액세스할 수 있습니다.

사용 사례

글로벌 테이블은 다음과 같은 일반적인 이점을 제공합니다.

  • 지연 시간이 짧은 읽기 작업 데이터 사본을 최종 사용자 가까이에 두어 읽기 작업 중 네트워크 지연 시간을 줄일 수 있습니다. 데이터는 ReplicationLatency 가치만큼이나 최신 상태로 유지됩니다.

  • 지연 시간이 짧은 쓰기 작업 최종 사용자는 가까운 지역에 쓰기 작업을 수행하여 네트워크 지연 시간을 줄이고 쓰기 작업을 완료하는 데 걸리는 시간을 줄일 수 있습니다. 쓰기 트래픽은 충돌이 발생하지 않도록 주의해서 라우팅해야 합니다. 라우팅 기법은 이후 섹션에서 설명합니다.

  • 복원력 및 재해 복구 향상. 특정 리전의 성능이 저하되거나 완전히 중단된 경우 해당 리전을 회피 (해당 리전으로 전송되는 요청 일부 또는 전체 이동) 하여 초 단위로 측정되는 복구 시점 목표 (RPO) 및 복구 시간 목표 (RTO) 를 달성할 수 있습니다. 또한 글로벌 테이블을 사용하면 DynamoDB SLA의 월간 가동률이 99.99% 에서 99.999% 로 증가합니다.

  • 원활한 리전 마이그레이션. 새 지역을 추가한 다음 이전 지역을 삭제하여 데이터 계층의 가동 중단 없이 한 지역에서 다른 지역으로 배포를 마이그레이션할 수 있습니다.

예를 들어, 피델리티 인베스트먼트는 re:Invent 2022에서 DynamoDB 글로벌 테이블을 주문 관리 시스템에 사용하는 방법에 대해 발표했습니다. 이 회사의 목표는 가용 영역 및 지역 장애에 대한 복원력을 유지하는 동시에 온프레미스 처리로는 달성할 수 없는 규모로 안정적으로 짧은 지연 시간을 처리하는 것이었습니다.