분산 데이터베이스 기초
데이터를 여러 서버에 분산하는 두 가지 핵심 기법이 레플리케이션(Replication)과 샤딩(Sharding)입니다. 단일 서버의 한계(처리량, 가용성, 저장 용량)를 극복하기 위해 분산 아키텍처를 도입하며, 이때 발생하는 일관성·가용성·파티션 내성 사이의 트레이드오프를 이해해야 합니다.
분산 데이터베이스가 필요한 이유
| 분산 목적 | 기법 | 설명 |
|---|---|---|
| 읽기 확장 | 레플리케이션 | 읽기 요청을 여러 복제본에 분산 |
| 쓰기 확장 | 샤딩 | 데이터를 분할하여 쓰기 분산 |
| 고가용성 | 레플리케이션 | 한 서버 장애 시 다른 서버가 대체 |
| 지역 분산 | 멀티 리전 복제 | 사용자와 가까운 서버에서 응답 |
레플리케이션
레플리케이션은 같은 데이터를 여러 서버에 복사하여 가용성과 읽기 성능을 높이는 기법입니다.
마스터-슬레이브 (Primary-Replica)
가장 일반적인 레플리케이션 구조입니다. 쓰기는 마스터만, 읽기는 슬레이브에서 처리합니다.
| 장점 | 단점 |
|---|---|
| 읽기 부하 분산 | 쓰기는 Master만 가능 |
| Master 장애 시 Slave가 승격 | 복제 지연(Replication Lag) |
| 구현이 비교적 단순 | Master가 단일 장애점(SPOF) |
| 백업을 Slave에서 수행 가능 | 쓰기 확장 불가 |
복제 방식: 동기 vs 비동기
복제의 동기화 수준에 따라 데이터 일관성과 성능 사이의 트레이드오프가 달라집니다.
복제 지연(Replication Lag) 문제
비동기 복제에서 마스터와 슬레이브의 데이터가 일시적으로 다른 현상입니다.
Failover (장애 조치)
마스터 장애 시 슬레이브를 새로운 마스터로 승격하는 과정입니다.
마스터-마스터 (Multi-Master)
양쪽에서 동시에 같은 데이터를 수정하면 충돌이 발생합니다. 충돌 해결 정책이 필요합니다.
| 비교 | Master-Slave | Multi-Master |
|---|---|---|
| 쓰기 확장 | 불가 | 가능 |
| 복잡도 | 낮음 | 높음 |
| 충돌 | 없음 | 발생 가능 |
| 가용성 | Failover 필요 | 즉시 전환 가능 |
| 주요 사용 | 대부분의 시스템 | 멀티 리전, 특수 요구 |
샤딩
샤딩(Sharding)은 데이터를 여러 서버에 나누어 저장하는 기법입니다. 레플리케이션이 복사라면, 샤딩은 분할입니다. 단일 서버로 감당할 수 없는 쓰기 부하나 저장량을 해결합니다.
샤드 키 선택
샤딩의 성패는 샤드 키(Shard Key) 선택에 달려 있습니다.
해시 기반 샤딩
범위 기반 샤딩
일관성 해싱
해시 기반 샤딩에서 샤드를 추가하거나 제거할 때 일관성 해싱(Consistent Hashing)은 데이터 재배치를 최소화합니다.
샤딩의 과제
샤딩은 강력하지만 여러 운영 과제를 수반합니다.
레플리케이션 + 샤딩 조합
실무에서는 레플리케이션과 샤딩을 함께 사용합니다.
합의 알고리즘
분산 시스템에서 여러 노드가 하나의 값에 합의하는 방법입니다. 노드 장애가 발생해도 시스템이 올바르게 동작하기 위해 필수적입니다.
| 알고리즘 | 특징 | 사용 제품 |
|---|---|---|
| Raft | 이해하기 쉬움, 리더 기반 | etcd, CockroachDB, TiDB |
| Paxos | 이론적 근간, 구현 복잡 | Google Spanner, Chubby |
| ZAB | Zookeeper 전용, Paxos 변형 | Apache Zookeeper |
| PBFT | 비잔틴 장애 허용 | 블록체인 일부 |
CAP 정리와 분산 DB
분산 시스템에서는 CAP 3가지 속성을 동시에 모두 만족할 수 없습니다.
분산 DB 제품 비교
분산 데이터베이스 종합 정리
| 핵심 개념 | 설명 |
|---|---|
| 레플리케이션 | 같은 데이터 복사 → 읽기 확장, 가용성 |
| 샤딩 | 데이터 분할 → 쓰기 확장, 저장량 확장 |
| 일관성 해싱 | 노드 변경 시 최소 재배치 |
| 합의 알고리즘 | 노드 장애에도 올바른 결정 |
| CAP 정리 | C·A·P 중 2개만 선택 가능 |
| Failover | 자동 장애 감지 후 대체 노드 승격 |
| 복제 지연 | 비동기 복제에서 일시적 불일치 |
| 샤드 키 | 데이터 분배 기준 → 설계 핵심 |
다음 절에서는 RDB와 NoSQL의 선택 기준을 다루겠습니다.