Amazon DynamoDB 글로벌 테이블

Amazon DynamoDB 글로벌 테이블을 사용해야 하는 이유

Amazon DynamoDB 글로벌 테이블은 완전 관리형 서버리스, 다중 리전, 다중 활성 데이터베이스입니다. 글로벌 테이블은 99.999%의 가용성, 향상된 애플리케이션 복원력 및 향상된 비즈니스 연속성을 제공합니다. 글로벌 테이블이 선택한 AWS 리전에서 Amazon DynamoDB 테이블을 자동으로 복제하므로 빠른 로컬 읽기 및 쓰기 성능을 얻을 수 있습니다.

드문 경우이긴 하지만, 글로벌 테이블의 다중 활성화 아키텍처를 통해 고객이 모든 복제본 테이블을 읽고 쓸 수 있으므로 데이터베이스 장애조치가 필요하지 않습니다. 또한 글로벌 테이블을 사용하면 리전 간에 데이터를 복제하고 다중 활성 워크로드의 업데이트 충돌을 해결하는 어려운 작업을 없앨 수 있습니다. 또한, 글로벌 테이블을 사용하면 전체 리전에서 드물게 격리 또는 성능 저하 문제가 있는 경우에도 애플리케이션의 가용성을 높게 유지할 수 있습니다.

AWS Command Line Interface(AWS CLI) 또는 AWS CloudFormation을 사용하여 AWS Management Console에서 글로벌 테이블을 구성할 수 있습니다. 글로벌 테이블은 단일 리전 테이블과 동일한 DynamoDB API를 사용하므로 글로벌 테이블을 읽거나 쓸 때 애플리케이션을 변경할 필요가 없습니다.

글로벌 테이블 사용에 대한 선행 비용이나 약정은 없으며 사용하는 리소스에 대해서만 비용을 지불하면 됩니다. Amazon DynamoDB 개발자 안내서에서 글로벌 테이블 구성에 대해 자세히 알아보세요. 글로벌 테이블 요금에 대한 자세한 내용은 온디맨드프로비저닝에 대한 Amazon DynamoDB 요금 옵션을 참조하세요.

사용 방법

DynamoDB 글로벌 테이블은 여러 복제본 테이블로 구성됩니다. 각 복제본 테이블은 서로 다른 리전에 있지만 모든 복제본의 이름과 기본 키는 동일합니다. 데이터가 복제본 테이블에 기록되면 DynamoDB는 해당 데이터를 글로벌 테이블의 다른 모든 복제본 테이블에 자동으로 복제합니다.

예를 들어 고객의 애플리케이션이 3개의 지역(미국 동부 해안, 캐나다, 서유럽)에 있는 다수의 고객 기반에 서비스를 제공한다고 가정해보겠습니다. 글로벌 테이블이 없으면 각 AWS 리전에 테이블을 만들고 각 리전의 각 테이블에 데이터 변경 사항을 복제하는 코드를 작성해야 합니다.

글로벌 테이블을 사용하면 각 지리적 영역에 가장 가까운 3개의 리전에 복제본 테이블이 있는 글로벌 테이블을 만들 수 있습니다. DynamoDB는 모든 복제본의 변경 사항을 다른 리전의 복제본에 자동으로 복제합니다.

글로벌 테이블을 사용하면 애플리케이션 사용자가 어디에 있든 관계없이 데이터에 빠르게 액세스할 수 있습니다. 드문 경우이긴 하지만 한 AWS 리전을 일시적으로 사용할 수 없게 되더라도 고객은 다른 리전의 복제본 테이블에 계속 액세스할 수 있습니다.

사용 방법

Amazon DynamoDB 글로벌 테이블의 이점

복제본 테이블에 있는 항목의 모든 변경 사항은 동일한 글로벌 테이블 내의 다른 모든 복제본에도 복제됩니다. 글로벌 테이블에서 새로 작성된 항목은 대개 1초 이내에 모든 복제본 테이블로 복사됩니다.  글로벌 테이블에서 각 복제본 테이블은 동일한 데이터 항목 세트를 저장합니다. Amazon DynamoDB는 일부 항목만 부분 복제하지 않습니다. 애플리케이션이 여러 리전의 동일한 항목을 거의 동시에 업데이트하면 충돌이 발생할 수 있습니다.

충돌을 해결하기 위해 Amazon DynamoDB 글로벌 테이블은 동시 업데이트 간에 마지막 작성자를 채택하여 조정하는 방식을 사용하며, Amazon DynamoDB는 마지막 작성자를 알아내기 위해 최선의 노력을 기울입니다. 이 충돌 해결 메커니즘에 따라 모든 복제본이 최신 업데이트를 일치시키고 모두 동일한 데이터를 보유한 상태로 수렴합니다.

글로벌 테이블은 99.999%의 가용성을 제공하도록 설계되었습니다. 리전 한 개가 분리되거나 성능이 저하되면 애플리케이션을 다른 리전으로 리디렉션하여 다른 복제본 테이블에 읽기와 쓰기가 가능합니다. 사용자 지정 비즈니스 로직을 적용하여 다른 리전으로 요청을 리디렉션하는 시점을 결정할 수 있습니다. 

또한, Amazon DynamoDB는 그동안 수행되었지만 아직 다른 복제본 테이블에 복사되지 않은 모든 쓰기 작업을 추적합니다. 리전이 다시 온라인 상태가 되면 Amazon DynamoDB이 해당 리전에서 대기 중인 모든 쓰기 작업을 다른 리전의 복제본 테이블로 복사하고, 그 반대의 작업도 수행합니다.

글로벌 테이블을 사용하면 데이터를 로컬에서 읽고 쓸 수 있으므로 전 세계에 분산된 애플리케이션에 대해 한 자리 수의 밀리초 지연 시간을 제공할 수 있습니다. 이를 통해 대규모로 확장되는 글로벌 애플리케이션의 성능을 높일 수 있습니다.

글로벌 테이블은 Amazon DynamoDB에서 다중 활성, 다중 리전 복제를 배포하고 관리하는 데 따르는 복잡성과 운영 부담을 없애줍니다. 데이터 복제가 필요한 리전을 선택하면 DynamoDB가 나머지를 처리합니다. 애플리케이션은 기존 DynamoDB API 및 엔드포인트를 사용하여 글로벌 테이블에 액세스합니다.

다중 활성 다중 리전 복제를 통해 한 리전의 복제본 테이블에서 수행된 업데이트가 다른 리전의 복제본 테이블에 복제됩니다. 결과적으로 리전 간 테이블 복제본 간의 복제는 일관성을 유지합니다. 즉, 애플리케이션과 동일한 리전 내의 복제본 테이블에 대한 로컬 읽기 및 쓰기가 강력한 일관성을 유지할 수 있습니다. 그 결과, 한 리전 내의 다른 복제본 테이블에 있는 항목에 대한 읽기가 일관되게 이루어집니다.

페이지 주제

일반

일반

글로벌 테이블은 단일 AWS 계정이 모두 소유한 하나 이상의 복제본 테이블 모음입니다. 단일 Amazon DynamoDB 글로벌 테이블에는 AWS 리전당 하나의 복제본 테이블만 있을 수 있습니다.

복제본 테이블은 단일 DynamoDB 테이블입니다. 각 복제본 테이블은 동일한 데이터 항목 세트를 저장하고 동일한 테이블 이름과 동일한 프라이머리 키 스키마를 갖습니다. 애플리케이션이 한 리전의 복제본 테이블에 데이터를 작성하면 Amazon DynamoDB는 다른 AWS 리전에 있는 다른 복제본 테이블에 이를 자동으로 복제합니다.

예. Amazon Dynamo 글로벌 테이블은 애플리케이션의 복원력을 높이고 단일 리전에 강력한 일관성을 제공하므로 비즈니스 연속성을 강화합니다. 글로벌 테이블은 다중 활성 테이블이므로 애플리케이션은 모든 복제본 테이블을 읽거나 쓸 수 있습니다. 드문 경우이긴 하지만 예상치 못한 리전 이벤트가 발생할 경우 애플리케이션이 다른 복제본으로 리디렉션될 수 있습니다.

단계별 가이드를 통해 Amazon DynamoDB 콘솔, AWS CLI 또는 AWS CloudFormation을 사용하여 글로벌 테이블을 생성할 수 있습니다.

Amazon DynamoDB 글로벌 테이블에 다른 리전의 추가 복제본을 추가하기 전에 테이블에 DynamoDB Streams가 활성화되어 있어야 하고, 다른 모든 복제본과 동일한 이름을 가져야 하고, 다른 모든 복제본과 동일한 파티션 키를 가져야 하며, 동일한 쓰기 용량 설정을 지정해야 합니다.

Amazon DynamoDB 글로벌 테이블의 모든 복제본 테이블은 이름이 같아야 합니다.

다른 데이터베이스와 마찬가지로 Amazon DynamoDB는 데이터를 테이블에 저장합니다. 테이블은 항목 모음이고 각 항목은 속성 모음입니다. Amazon DynamoDB는 프라이머리 키를 사용하여 테이블의 각 항목을 고유하게 식별하고 보조 인덱스를 통해 쿼리 유연성을 높입니다.

반면 Amazon DynamoDB 글로벌 테이블은 단일 AWS 계정이 소유한 하나 이상의 복제본 테이블 모음입니다. 각 복제본 테이블은 일반 Amazon DynamoDB 테이블과 구조적으로 동일합니다.

예, 글로벌 테이블의 각 복제본에서 지정 시간 복구를 활성화할 수 있습니다.

  • Zoom

    코로나 19 팬데믹이 시작되었을 때 음성 및 동영상 서비스에 대한 수요가 치솟았습니다. 2020년 초반에는 전례 없는 수준의 사용량 증가를 목격했는데, 가상 연결을 필요로 하는 신규 및 기존 고객을 통해 일 미팅 참가자 수가 1천만 명에서 3억 명으로 증가했습니다. 백엔드에서는 Amazon DynamoDB for Zoom Meetings를 통해 이 급증을 관리할 수 있었습니다. DynamoDB 글로벌 테이블을 온디멘드 모드와 함께 사용하여 갑작스러운 사용량 스파이크 중에도 성능 문제 없이 거의 무한하게 확장할 수 있었습니다.

    Yasin Mohammed, Zoom Video Communications, Inc. 클라우드 운영 엔지니어링 관리자
  • Disney

    Disney+는 Amazon DynamoDB를 사용하여 콘텐츠, 메타데이터 및 수십억 개의 고객 작업을 매일 수집합니다. 이러한 정보는 최종 사용자가 시청 목록에 콘텐츠를 추가하고, 동영상 시청을 시작한 후 다른 디바이스에서 받거나, 다음에 볼 콘텐츠를 추천받는 데 사용됩니다.

    하루에 수십억 개의 북마크가 Amazon Kinesis와 Amazon DynamoDB에 수집됩니다.

    Attilio Giue, Disney+ Director of Content Discovery
    보도 자료 보기 »
  • Snap Inc.

    Snap Inc.는 Amazon DynamoDB를 사용하여 연간 인프라 비용을 크게 절감하고, 멀티미디어 메시징 앱 Snapchat을 위한 빠르고 안정적인 인프라를 구현했습니다.

    Amazon DynamoDB가 제공하는 기능과 그 안에서 계속되는 혁신을 보고 있으면, 우리도 계속해서 이 제품을 사용하고 이를 토대로 혁신을 진행할 수 있겠다는 확신을 줍니다.

    Saral Jain, Snap Inc. 엔지니어링 이사 및 인프라 책임자
    사례 연구 읽기 »