S3 복제 완벽 가이드: CRR vs SRR 언제 무엇을 선택할까?
AWS S3 교차 리전 복제(CRR)와 동일 리전 복제(SRR)의 차이점, 사용 사례, 설정 방법을 비교합니다. 재해 복구와 규정 준수를 위한 선택 가이드입니다.
관련 시험 도메인
- Design Resilient Architectures
핵심 요약
**CRR(교차 리전 복제)**는 재해 복구와 지연 시간 단축을 위해 다른 리전으로 복제하고, **SRR(동일 리전 복제)**는 로그 통합, 계정 간 복제, 데이터 주권 준수를 위해 같은 리전 내에서 복제합니다.
시험 팁
시험 빈출: "규정 준수로 데이터가 특정 리전을 떠날 수 없는 경우?" → SRR. "재해 복구를 위해 다른 리전에 데이터 복제?" → CRR. "복제 전 기존 객체도 복제하려면?" → S3 배치 복제.
1. S3 복제 기본 개념
라이브 복제란?
S3 라이브 복제는 소스 버킷에 업로드된 객체를 대상 버킷으로 자동 비동기 복제하는 기능입니다.
┌─────────────────────────────────────────────────────────┐
│ S3 라이브 복제 개요 │
├─────────────────────────────────────────────────────────┤
│ │
│ 소스 버킷 대상 버킷 │
│ ┌──────────┐ 자동 복제 ┌──────────┐ │
│ │ 객체 A │ ─────────────────▶ │ 객체 A │ │
│ │ 객체 B │ (비동기) │ 객체 B │ │
│ │ 객체 C │ │ 객체 C │ │
│ └──────────┘ └──────────┘ │
│ │
│ 복제 유형: │
│ - CRR: 다른 AWS 리전으로 복제 │
│ - SRR: 같은 AWS 리전 내 복제 │
└─────────────────────────────────────────────────────────┘
복제 요구 사항
| 요구 사항 | 설명 |
|---|---|
| 버전 관리 | 소스/대상 버킷 모두 버전 관리 활성화 필수 |
| IAM 권한 | S3가 객체를 복제할 수 있는 IAM 역할 필요 |
| 소유권 | 소스 버킷 소유자가 복제 규칙 생성 |
2. CRR (Cross-Region Replication)
개념
CRR은 서로 다른 AWS 리전의 S3 버킷 간에 객체를 복제합니다. 2015년부터 사용되어 왔습니다.
사용 사례
┌─────────────────────────────────────────────────────────┐
│ CRR 사용 사례 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1️⃣ 재해 복구 (DR) │
│ 서울 리전 ─────────────────▶ 도쿄 리전 │
│ (Primary) CRR (DR 사이트) │
│ │
│ 2️⃣ 지연 시간 최소화 │
│ 미국 사용자 ◀── 버지니아 리전 │
│ 유럽 사용자 ◀── 프랑크푸르트 리전 (복제본) │
│ │
│ 3️⃣ 규정 준수 (지리적 분산 요구) │
│ Primary 데이터와 백업을 멀리 떨어진 리전에 보관 │
│ │
│ 4️⃣ 분석 클러스터 운영 │
│ 두 리전의 EMR 클러스터가 동일 데이터 분석 필요 │
└─────────────────────────────────────────────────────────┘
CRR 설정 예시
# AWS CLI로 CRR 규칙 생성
aws s3api put-bucket-replication \
--bucket source-bucket-seoul \
--replication-configuration '{
"Role": "arn:aws:iam::123456789012:role/S3ReplicationRole",
"Rules": [{
"ID": "CRR-to-Tokyo",
"Status": "Enabled",
"Priority": 1,
"Filter": {},
"Destination": {
"Bucket": "arn:aws:s3:::destination-bucket-tokyo"
},
"DeleteMarkerReplication": {"Status": "Disabled"}
}]
}'
3. SRR (Same-Region Replication)
개념
SRR은 같은 AWS 리전 내의 S3 버킷 간에 객체를 복제합니다. 2019년에 출시되었습니다.
사용 사례
┌─────────────────────────────────────────────────────────┐
│ SRR 사용 사례 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1️⃣ 로그 통합 │
│ App-A 로그 ──┐ │
│ App-B 로그 ──┼──▶ 중앙 로그 버킷 (분석용) │
│ App-C 로그 ──┘ │
│ │
│ 2️⃣ 개발/테스트 환경 복제 │
│ 프로덕션 계정 ────SRR────▶ 개발 계정 │
│ (실제 데이터) (테스트용 복사본) │
│ │
│ 3️⃣ 데이터 주권 준수 │
│ 데이터가 특정 국가/리전을 떠날 수 없는 규정 │
│ 같은 리전 내 다른 계정으로 백업 │
│ │
│ 4️⃣ 스토리지 클래스 변환 │
│ Standard ────SRR────▶ Glacier (자동 아카이브) │
└─────────────────────────────────────────────────────────┘
시험 팁
시험 포인트: 데이터 주권 법률로 데이터가 특정 리전을 벗어날 수 없는 경우, SRR을 사용하여 같은 리전 내 다른 계정으로 백업합니다.
4. CRR vs SRR 비교
핵심 비교표
| 특성 | CRR | SRR |
|---|---|---|
| 복제 범위 | 다른 AWS 리전 | 같은 AWS 리전 |
| 주요 목적 | 재해 복구, 지연 시간 단축 | 로그 통합, 계정 간 복제 |
| 데이터 전송 비용 | 리전 간 전송 요금 발생 | 동일 리전 내 전송 (낮음) |
| 지연 시간 | 리전 간 거리에 따라 다름 | 매우 낮음 |
| 데이터 주권 | 데이터가 다른 리전으로 이동 | 데이터가 리전 내 유지 |
선택 기준
질문 1: 데이터가 특정 리전을 떠나면 안 되나요?
├── 예 → SRR
└── 아니오 → 질문 2로
질문 2: 재해 복구가 주요 목적인가요?
├── 예 → CRR
└── 아니오 → 질문 3으로
질문 3: 다른 리전 사용자의 지연 시간을 줄여야 하나요?
├── 예 → CRR
└── 아니오 → SRR (로그 통합, 계정 간 복제 등)
5. 복제 설정 시 주요 옵션
복제 대상 필터링
복제 규칙 필터 옵션:
├── 전체 버킷 복제
├── 접두사 기반 (예: logs/)
└── 태그 기반 (예: Replicate=true)
복제 시간 제어 (RTC)
S3 Replication Time Control은 99.99%의 객체를 15분 이내에 복제하는 SLA를 제공합니다.
| 옵션 | 설명 |
|---|---|
| 일반 복제 | 대부분 15분 이내, SLA 없음 |
| RTC 활성화 | 99.99% 객체 15분 이내 복제 보장 |
양방향 복제
┌─────────────────────────────────────────────────────────┐
│ 양방향 복제 구성 │
├─────────────────────────────────────────────────────────┤
│ │
│ 버킷 A (서울) 버킷 B (도쿄) │
│ ┌──────────┐ ┌──────────┐ │
│ │ │ ─────────▶ │ │ │
│ │ │ ◀───────── │ │ │
│ └──────────┘ └──────────┘ │
│ │
│ 양방향 복제 = Active-Active 구성 │
│ - 어느 리전에서든 쓰기 가능 │
│ - 다중 리전 액세스 포인트와 함께 사용 │
└─────────────────────────────────────────────────────────┘
6. 복제되지 않는 항목
중요 제한 사항
| 항목 | 복제 여부 | 설명 |
|---|---|---|
| 기존 객체 | ❌ | 복제 규칙 생성 전 객체는 자동 복제 안 됨 |
| 삭제 마커 | 선택적 | DeleteMarkerReplication으로 설정 |
| 영구 삭제 | ❌ | 버전 ID 지정 삭제는 복제 안 됨 |
| SSE-C 암호화 객체 | ❌ | 고객 제공 키 암호화 객체 |
| 수명 주기 작업 | ❌ | Lifecycle 규칙에 의한 삭제/전환 |
S3 배치 복제
복제 규칙 설정 전에 존재했던 기존 객체를 복제하려면 S3 배치 복제를 사용합니다.
# 배치 복제 작업 생성
aws s3control create-job \
--account-id 123456789012 \
--operation '{"S3ReplicateObject": {}}' \
--manifest '{...}' \
--report '{...}' \
--priority 10 \
--role-arn arn:aws:iam::123456789012:role/BatchReplicationRole
시험 팁
핵심 암기: 복제 규칙 설정 이전에 존재하던 객체는 자동 복제되지 않습니다. 기존 객체를 복제하려면 S3 배치 복제를 사용해야 합니다.
7. 복제 모니터링
복제 지표 (Replication Metrics)
모니터링 가능 항목:
├── ReplicationLatency: 복제 지연 시간
├── BytesPendingReplication: 복제 대기 중인 바이트
├── OperationsPendingReplication: 복제 대기 중인 작업 수
└── OperationsFailedReplication: 실패한 복제 작업 수
EventBridge 알림
복제 실패 시 알림을 받을 수 있습니다:
{
"source": ["aws.s3"],
"detail-type": ["Object Replication Failed"],
"detail": {
"bucket": {"name": ["source-bucket"]}
}
}
8. 비용 고려 사항
비용 구성
| 항목 | CRR | SRR |
|---|---|---|
| 복제 요청 | PUT 요청 요금 | PUT 요청 요금 |
| 데이터 전송 | 리전 간 전송 요금 | 없음 (동일 리전) |
| 대상 스토리지 | 대상 리전 스토리지 요금 | 동일 리전 스토리지 요금 |
| RTC 추가 요금 | 있음 | 있음 |
비용 최적화 팁
1. 필터 사용
└── 필요한 객체만 복제 (접두사/태그 필터)
2. 스토리지 클래스 지정
└── 대상 버킷에 저렴한 스토리지 클래스 사용
3. 수명 주기 정책 병행
└── 복제 후 일정 기간 지나면 Glacier로 전환
시험 출제 포인트
자주 나오는 문제 유형
-
시나리오 기반 선택
- "재해 복구를 위해 다른 리전에 데이터 복제?" → CRR
- "데이터 주권으로 리전을 벗어날 수 없는 경우?" → SRR
- "여러 버킷의 로그를 중앙 버킷에 통합?" → SRR
-
제한 사항 관련
- "복제 규칙 설정 전 기존 객체는?" → 자동 복제 안 됨, 배치 복제 필요
- "버전 관리 필수인가?" → 예, 소스/대상 모두
-
삭제 동작
- "소스에서 객체 삭제 시 대상에서도 삭제되나?" → 기본적으로 아니오 (삭제 마커 복제는 선택적)
시험 팁
핵심 암기:
- CRR = 다른 리전 (재해 복구, 지연 시간 단축)
- SRR = 같은 리전 (로그 통합, 데이터 주권)
- 기존 객체 복제 = S3 배치 복제
- 버전 관리 = 필수
FAQ
Q1: CRR과 SRR을 동시에 사용할 수 있나요?
예. 하나의 소스 버킷에서 여러 대상 버킷으로 복제할 수 있습니다. 같은 리전 내 버킷(SRR)과 다른 리전 버킷(CRR)에 동시에 복제 규칙을 설정할 수 있습니다.
Q2: 복제된 객체를 다시 복제할 수 있나요?
아니요. 기본적으로 복제된 객체(복제본)는 다시 복제되지 않습니다. 이는 무한 복제 루프를 방지하기 위함입니다. 단, 양방향 복제 구성 시에는 복제본 복제가 활성화됩니다.
Q3: 복제 지연 시간은 얼마나 되나요?
일반적으로 대부분의 객체는 15분 이내에 복제됩니다. SLA가 필요하면 **Replication Time Control(RTC)**을 활성화하여 99.99%의 객체가 15분 이내에 복제되도록 보장할 수 있습니다.
Q4: 삭제가 복제되면 실수로 데이터를 잃을 수 있나요?
기본적으로 삭제 작업은 복제되지 않습니다. DeleteMarkerReplication을 활성화하면 삭제 마커가 복제되지만, 버전 ID를 지정한 영구 삭제는 복제되지 않아 대상 버킷의 데이터는 보존됩니다.
Q5: 다른 AWS 계정의 버킷으로 복제할 수 있나요?
예. 교차 계정 복제가 가능합니다. 대상 버킷에 소스 계정의 복제를 허용하는 버킷 정책을 추가해야 하며, 객체 소유권 설정도 고려해야 합니다.
마무리
S3 복제는 데이터 보호와 가용성을 높이는 핵심 기능입니다:
- CRR: 재해 복구, 지연 시간 단축, 규정 준수 (지리적 분산)
- SRR: 로그 통합, 계정 간 복제, 데이터 주권 준수
시험에서는 "다른 리전 복제" → CRR, "같은 리전 내 복제" → SRR, "기존 객체 복제" → S3 배치 복제를 떠올리세요.