SAABlog
데이터베이스중급

DynamoDB 글로벌 테이블: 멀티 리전 Active-Active 데이터베이스

AWS DynamoDB 글로벌 테이블로 멀티 리전 Active-Active 복제를 구성하는 방법을 설명합니다. 99.999% 가용성과 저지연 글로벌 서비스를 구축하세요.

PHILOLAMB-
DynamoDB글로벌 테이블멀티 리전Active-Active복제

관련 시험 도메인

  • Design Resilient Architectures
  • Design High-Performing Architectures

핵심 요약

DynamoDB 글로벌 테이블은 여러 AWS 리전에서 Active-Active 복제를 제공하여 어느 리전에서든 읽기/쓰기가 가능합니다. 단일 리전 테이블의 99.99%보다 높은 99.999% SLA를 제공하며, 전 세계 사용자에게 저지연 액세스를 보장합니다.

시험 팁

시험 빈출: "전 세계 사용자에게 저지연 데이터베이스 액세스를 제공하려면?" → DynamoDB 글로벌 테이블. "멀티 리전 Active-Active 데이터베이스?" → 글로벌 테이블. "99.999% 가용성?" → 글로벌 테이블.


1. 글로벌 테이블이란?

개념

DynamoDB 글로벌 테이블은 선택한 여러 AWS 리전에 테이블 복제본(Replica)을 자동으로 생성하고 동기화하는 완전관리형 솔루션입니다.

┌─────────────────────────────────────────────────────────┐
│              DynamoDB 글로벌 테이블 아키텍처              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   서울 리전              도쿄 리전              버지니아   │
│   ┌──────────┐         ┌──────────┐         ┌────────┐ │
│   │ Replica  │ ◀─────▶ │ Replica  │ ◀─────▶ │Replica │ │
│   │ (Active) │   양방향  │ (Active) │   양방향  │(Active)│ │
│   └────┬─────┘   복제   └────┬─────┘   복제   └───┬────┘ │
│        │                     │                    │      │
│        ▼                     ▼                    ▼      │
│   한국 사용자            일본 사용자          미국 사용자   │
│   (로컬 읽기/쓰기)       (로컬 읽기/쓰기)     (로컬 읽기/쓰기)│
│                                                         │
│   특징: 모든 복제본이 Active (읽기 + 쓰기 가능)            │
└─────────────────────────────────────────────────────────┘

주요 특징

특징설명
Active-Active모든 리전에서 읽기/쓰기 가능
자동 복제리전 간 데이터 자동 동기화
완전관리형복제 인프라 관리 불필요
일관성최종 일관성 (Eventual Consistency)
SLA99.999% 가용성

2. 왜 글로벌 테이블을 사용해야 할까?

단일 리전 vs 글로벌 테이블

특성단일 리전글로벌 테이블
가용성 SLA99.99%99.999%
재해 복구수동 백업/복원자동 복제, 즉시 장애 조치
지연 시간원격 사용자에게 높은 지연로컬 리전 접근으로 저지연
쓰기 가능 리전1개모든 복제본 리전

사용 사례

┌─────────────────────────────────────────────────────────┐
│               글로벌 테이블 사용 사례                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  1️⃣ 글로벌 게임 서비스                                   │
│     - 전 세계 플레이어에게 저지연 게임 데이터 제공         │
│     - 어느 리전에서든 게임 상태 저장/로드                 │
│                                                         │
│  2️⃣ 글로벌 이커머스                                      │
│     - 상품 카탈로그, 장바구니 데이터                      │
│     - 지역별 재고 관리                                   │
│                                                         │
│  3️⃣ 금융 서비스                                         │
│     - 실시간 거래 데이터                                 │
│     - 리전 장애 시 즉시 장애 조치                        │
│                                                         │
│  4️⃣ IoT 데이터 수집                                     │
│     - 전 세계 센서 데이터 수집                           │
│     - 가까운 리전에서 데이터 기록                        │
└─────────────────────────────────────────────────────────┘

3. 글로벌 테이블 설정

사전 요구 사항

요구 사항설명
빈 테이블새 글로벌 테이블은 빈 테이블에서 시작 권장
DynamoDB Streams자동 활성화됨
동일한 테이블 이름모든 리전에서 같은 이름
동일한 키 스키마파티션 키, 정렬 키 동일

콘솔에서 설정

1. DynamoDB 콘솔 → 테이블 선택
2. 글로벌 테이블 탭 → 복제본 생성
3. 대상 리전 선택 (예: 도쿄, 버지니아)
4. 생성 클릭 → 자동 복제 시작

CLI로 설정

# 글로벌 테이블 복제본 추가
aws dynamodb update-table \
  --table-name MyGlobalTable \
  --replica-updates '[
    {
      "Create": {
        "RegionName": "ap-northeast-1"
      }
    }
  ]'

기존 테이블을 글로벌 테이블로 변환

기존 데이터가 있는 테이블도 글로벌 테이블로 변환할 수 있습니다:

변환 프로세스:
1. 소스 테이블의 스냅샷 생성
2. 새 리전에 복제본 생성
3. 스냅샷으로 복제본 초기화
4. 실시간 복제 시작

⚠️ 변환 중에도 테이블 사용 가능 (다운타임 없음)

4. 데이터 일관성과 충돌 해결

최종 일관성 (Eventual Consistency)

글로벌 테이블은 최종 일관성 모델을 사용합니다. 한 리전에서 쓴 데이터가 다른 리전에 복제되기까지 약간의 지연이 있습니다.

┌─────────────────────────────────────────────────────────┐
│                   복제 지연 시간                          │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  서울에서 쓰기:  T = 0ms                                 │
│       │                                                 │
│       ▼                                                 │
│  서울에서 읽기:  T = 0ms (즉시)                          │
│  도쿄에서 읽기:  T = ~1초 (복제 후)                       │
│                                                         │
│  일반적인 복제 지연: 1초 미만                             │
│  (네트워크 상황에 따라 다름)                              │
└─────────────────────────────────────────────────────────┘

충돌 해결: Last Writer Wins

동시에 여러 리전에서 같은 항목을 수정하면 충돌이 발생할 수 있습니다.

┌─────────────────────────────────────────────────────────┐
│                충돌 해결: Last Writer Wins                │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  시간   서울 리전                도쿄 리전                │
│  ─────────────────────────────────────────────────────  │
│  T1     Item.name = "A"         (복제 대기)             │
│  T2     (복제 대기)             Item.name = "B"         │
│  T3     복제 완료               복제 완료               │
│         └──────────────────────────────────────┘        │
│                      결과: "B" (T2 > T1)                │
│                                                         │
│  규칙: 타임스탬프가 늦은 쓰기가 최종 값                   │
└─────────────────────────────────────────────────────────┘

시험 팁

시험 포인트: 글로벌 테이블은 최종 일관성을 사용하며, 충돌 시 Last Writer Wins 방식으로 해결합니다. 강력한 일관성이 필요한 경우 단일 리전 사용을 고려하세요.


5. 다중 리전 강력한 일관성 (MRSC)

새로운 기능 (2024년 출시)

**Multi-Region Strong Consistency (MRSC)**는 글로벌 테이블에서 강력한 일관성을 제공하는 새로운 기능입니다.

MRSC 특징

특성설명
일관성리전 간 강력한 일관성 보장
RPO제로 RPO (데이터 손실 없음)
리전 수최소 3개 리전 필요
구성 옵션복제본 3개 또는 복제본 2개 + 감시자 1개

MRSC 아키텍처

┌─────────────────────────────────────────────────────────┐
│                  MRSC 아키텍처 (3 리전)                   │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   옵션 1: 복제본 3개                                     │
│   ┌────────┐     ┌────────┐     ┌────────┐             │
│   │Replica │ ◀──▶│Replica │ ◀──▶│Replica │             │
│   │ 서울   │     │ 도쿄   │     │버지니아 │             │
│   └────────┘     └────────┘     └────────┘             │
│                                                         │
│   옵션 2: 복제본 2개 + 감시자 1개                        │
│   ┌────────┐     ┌────────┐     ┌────────┐             │
│   │Replica │ ◀──▶│Replica │ ◀──▶│Witness │             │
│   │ 서울   │     │ 도쿄   │     │(데이터X)│             │
│   └────────┘     └────────┘     └────────┘             │
│                                                         │
│   감시자: 변경 데이터만 보관, 전체 테이블 사본 없음        │
└─────────────────────────────────────────────────────────┘

6. 비용 고려 사항

비용 구성

항목설명
읽기/쓰기 용량각 리전별로 과금
복제된 쓰기 용량복제로 인한 쓰기에 대해 과금 (rWCU)
스토리지각 리전별 저장 용량 과금
데이터 전송리전 간 복제 데이터 전송 비용

비용 최적화 팁

1. 필요한 리전만 선택
   └── 사용자가 없는 리전은 복제본 불필요

2. 온디맨드 vs 프로비저닝
   └── 트래픽 패턴에 따라 선택

3. Auto Scaling 활성화
   └── 각 리전별 독립적 스케일링

4. 최근 요금 인하 (최대 67%)
   └── 글로벌 테이블 비용 대폭 절감됨

7. 설계 모범 사례

파티션 키 설계

글로벌 테이블에서도 파티션 키 설계가 중요합니다:

좋은 파티션 키:
├── 고유성 높은 값 (UserID, SessionID)
├── 균등한 데이터 분포
└── 핫 파티션 방지

피해야 할 패턴:
├── 리전 코드를 파티션 키로 사용 (불균등 분포)
├── 날짜만 사용 (핫 파티션)
└── 순차적 값 (쓰기 집중)

애플리케이션 설계

┌─────────────────────────────────────────────────────────┐
│              애플리케이션 설계 권장 사항                   │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  1. 로컬 리전 접근                                       │
│     └── 사용자와 가까운 리전의 복제본 사용                │
│                                                         │
│  2. 충돌 최소화                                          │
│     └── 같은 항목을 여러 리전에서 동시 수정 피하기         │
│     └── 사용자별 리전 할당 고려                          │
│                                                         │
│  3. 최종 일관성 고려                                     │
│     └── 복제 지연을 감안한 로직 설계                     │
│     └── 읽기 후 쓰기 패턴 주의                          │
│                                                         │
│  4. 장애 조치 테스트                                     │
│     └── 정기적인 리전 장애 조치 테스트                   │
└─────────────────────────────────────────────────────────┘

8. 글로벌 테이블 vs 다른 복제 옵션

비교표

특성글로벌 테이블DynamoDB Streams + Lambda수동 복제
관리완전관리형반자동수동
Active-Active가능 (복잡)가능 (매우 복잡)
충돌 해결자동수동 구현 필요수동 구현 필요
지연 시간~1초 미만수초가변적
비용rWCU 과금Lambda + 전송 비용가변적

시험 출제 포인트

자주 나오는 문제 유형

  1. 시나리오 기반 선택

    • "전 세계 사용자에게 저지연 데이터베이스?" → 글로벌 테이블
    • "99.999% 가용성 필요?" → 글로벌 테이블
    • "멀티 리전 Active-Active 쓰기?" → 글로벌 테이블
  2. 일관성 관련

    • "글로벌 테이블의 일관성 모델?" → 최종 일관성 (기본)
    • "충돌 해결 방식?" → Last Writer Wins
  3. 설정 관련

    • "글로벌 테이블 변환 시 다운타임?" → 없음
    • "DynamoDB Streams 필요?" → 자동 활성화됨

시험 팁

핵심 암기:

  • 글로벌 테이블 = Active-Active 멀티 리전
  • 가용성 SLA = 99.999% (단일 리전: 99.99%)
  • 일관성 = 최종 일관성 (기본)
  • 충돌 해결 = Last Writer Wins

FAQ

Q1: 글로벌 테이블은 읽기 전용 복제본인가요?

아니요. 글로벌 테이블의 모든 복제본은 읽기와 쓰기 모두 가능합니다(Active-Active). RDS의 읽기 전용 복제본과 다릅니다.

Q2: 복제 지연 시간은 얼마나 되나요?

일반적으로 1초 미만입니다. 하지만 네트워크 상황, 데이터 크기 등에 따라 달라질 수 있습니다.

Q3: 글로벌 테이블에서 특정 리전만 쓰기를 허용할 수 있나요?

DynamoDB 자체에서는 지원하지 않습니다. 애플리케이션 레벨에서 Route 53 등을 사용하여 특정 리전으로만 쓰기 트래픽을 라우팅할 수 있습니다.

Q4: 기존 데이터가 있는 테이블도 글로벌 테이블로 변환할 수 있나요?

예. 다운타임 없이 기존 테이블을 글로벌 테이블로 변환할 수 있습니다. DynamoDB가 자동으로 스냅샷을 생성하고 새 복제본을 초기화합니다.

Q5: 글로벌 테이블에서 GSI도 복제되나요?

예. **Global Secondary Index(GSI)**도 모든 복제본에 자동으로 생성되고 동기화됩니다.


마무리

DynamoDB 글로벌 테이블은 글로벌 규모의 Active-Active 데이터베이스가 필요할 때 최적의 선택입니다:

  • 99.999% 가용성으로 최고 수준의 복원력
  • 저지연 로컬 리전 접근
  • 완전관리형으로 운영 부담 최소화

시험에서는 "멀티 리전 Active-Active", "글로벌 저지연 데이터베이스"라는 키워드가 나오면 글로벌 테이블을 떠올리세요.