Phase 2레슨 9
Replication
Primary/Replica, Read Replica, Replication Lag, Failover, Sharding
💡ELI5·
Replication을 사본에 비유하면
Primary (쓰기)
/ Replica1 Replica2 (읽기)💡 비유 — Replication = 중요 문서의 사본을 여러 군데 보관. 원본(Primary)에 내용을 추가하면 사본(Replica)에도 복사된다. 사본이 여러 개면 여러 사람이 동시에 읽을 수 있다(읽기 확장). 원본이 불타도 사본이 있으니 복구 가능(가용성).
🔬Deep Dive·
Primary-Replica 복제 방식
| 방식 | 동작 | 일관성 | 성능 |
|---|---|---|---|
| Synchronous | Primary가 Replica 확인 후 커밋 | 높음 (데이터 유실 없음) | 낮음 (Replica 대기) |
| Asynchronous | Primary가 즉시 커밋, Replica는 나중에 반영 | 낮음 (Lag로 유실 가능) | 높음 |
| Semi-Synchronous | 최소 1개 Replica 확인 후 커밋 | 중간 | 중간 |
🔬Deep Dive·
Sharding / Partitioning
Users → Shard Key → ┌─ DB1 (A-G)
├─ DB2 (H-N)
└─ DB3 (O-Z)| 방식 | 분산 기준 | 문제점 |
|---|---|---|
| Range-based | 값의 범위 (A-G, H-N...) | Hot Partition 발생 가능 |
| Hash-based | Shard Key 해시 → Partition | 범위 조회 어려움 |
| Consistent Hashing | 해시 링 위에 배치 | Shard 추가/제거 시 재배치 최소화 |
⚖️Trade-off·
Replication vs Sharding
| 구분 | Replication | Sharding |
|---|---|---|
| 목적 | 읽기 확장, 가용성 | 쓰기 확장, 용량 확장 |
| 데이터 | 전체 복사 | 분할 저장 |
| 복잡성 | 낮음 | 높음 (분산 쿼리, 조인) |
| 장애 영향 | Replica 손실 = 읽기 용량 감소 | Shard 손실 = 데이터 유실 |
❓ 체크포인트 질문
- 1.Primary-Replica 구조에서 Read Replica의 목적은?
- 2.Replication Lag이 애플리케이션에 미치는 영향은?
- 3.Failover 과정에서 발생할 수 있는 문제는?
- 4.Sharding과 Replication의 차이는?
- 5.Consistent Hashing이 Sharding에서 해결하는 문제는?