클러스터링과 레플리케이션은 데이터베이스 시스템의 고가용성과 확장성을 확보하기 위한 기술입니다.
클러스터링 (Clustering) – 수평 확장
- 클러스터링은 여러 DB 서버를 하나의 논리적 단위로 묶어 하나의 DB처럼 동작하게 만드는 구조입니다.
- 모든 노드가 동일한 DB 스토리지에 접근하며, 노드 간 작업을 분산하거나 장애 시 복구를 담당합니다.
- 이를 통해 모든 노드가 동일한 스토리지를 공유하여, 단일 데이터 정합성을 유지할 수 있는 장점이 있습니다.
- 클러스러팅의 유형으로는 Active-Active 구조, Active–Standby 구조가 있습니다.
Active-Active 구조
- Active-Active 구조는 모든 DB 서버가 동시에 읽기/쓰기 트래픽을 처리합니다.
- 서버 간 부하가 분산되므로 CPU, Memory 자원 활용 효율이 높으며, 무중단 복구가 가능합니다.
- 단, 모든 서버가 동시에 동일한 스토리지에 접근하므로 스토리지 병목 현상이 발생할 수 있습니다.
Active–Standby 구조
- Active–Standby 구조는 하나의 DB 서버만 운영에 참여하고, 나머지는 대기 상태(Standby)로 있다가 장애 발생 시 활성화됩니다.
- Standby 서버는 평소에는 스토리지 접근을 하지 않기 때문에 스토리지 병목 현상이 줄어들 수 있습니다.
- 단, 장애 발생 시 전환 시간이 필요하므로 무중단 복구는 불가능하며, 운영 효율도 낮습니다.
사용 시점
1. 무중단 서비스가 필수인 경우 → 장애 발생 시 Active–Active 구조로 즉시 복구가 가능합니다.
2. 데이터 정합성이 중요한 경우 → 모든 노드가 공유 스토리지를 사용해 일관성 유지가 용이합니다.
3. 읽기/쓰기 부하가 균형적인 경우 → 병렬 처리로 자원 부하를 효율적으로 분산시킬 수 있습니다.
레플리케이션 (Replication) – 수직 확장
- 레플리케이션은 하나의 DB 서버(Master)의 데이터를 다른 서버(Slave 또는 Replica)로 복제하는 구조입니다.
- Master → Slave 간 비동기 복제를 통해 읽기 성능 분산 및 장애 대비가 가능해집니다.
- 읽기 처리 분산에는 매우 효과적이며, 슬레이브를 활용한 백업 및 장애 복구에 유리합니다.
- 다만, 복제 시 데이터 반영이 지연될 수 있어 최신 데이터 정합성이 보장되지 않을 수 있습니다.
사용시점
1. 읽기 부하가 높은 경우 → Slave를 활용해 읽기 트래픽을 분산 처리할 수 있습니다.
2. 장애 복구 및 백업이 필요한 경우 → 복제본 승격을 통해 빠른 장애 대응과 백업이 가능합니다.
3. 저비용 확장이 필요한 경우 → 마스터-슬레이브 구조로 적은 비용에 수직 확장이 가능합니다.
Clustering vs Replication 비교표
항목 | 클러스터링 (Clustering) | 레플리케이션 (Replication) |
확장 방식 | 수평 확장 | 수직 확장 |
데이터 정합성 | 높음 (공유 스토리지) | 낮음 (복제 지연 가능성) |
읽기 성능 | 보통 (공유 락 영향) | 우수 (슬레이브 분산 처리) |
쓰기 성능 | 좋음 (노드 병렬 처리 가능) | 보통 (마스터에 집중됨) |
장애 복구 | Active–Active 구조 시 무중단 가능 | 슬레이브 승격 방식 (약간의 지연) |
결론
클러스터링은 여러 DB 서버가 하나의 스토리지를 공유하며 하나의 DB처럼 동작하도록 구성하는 방식으로, Active–Active 구조에서는 무중단 복구와 부하 분산이 가능하지만, 스토리지 병목 현상이 발생할 수 있습니다. 반면, 레플리케이션은 Master DB의 데이터를 Slave DB로 복제하여 읽기 부하를 분산시키는 구조로, 장애 대비 및 성능 확장에 효과적이지만 복제 지연이나 최신 데이터 정합성의 문제가 발생할 수 있습니다. 클러스터링은 스토리지 공유 기반의 수평 확장이고, 레플리케이션은 스토리지 분리 기반의 수직 확장 구조입니다.
'CS' 카테고리의 다른 글
CS 스터디 35 - 데이터 구조와 알고리즘 (0) | 2025.07.24 |
---|---|
CS 스터디 34 - 객체지향 프로그래밍 (OOP) (0) | 2025.07.18 |
CS 스터디 (DB) 25 - DB 락에 대해 설명해주세요. (0) | 2025.05.26 |
CS 스터디 (DB) 24 - 트랜잭션 격리 수준에 대해 설명해주세요. (0) | 2025.05.23 |
CS 스터디 (DB) 23 - 트랜잭션의 특성은 무엇인가요? (0) | 2025.05.23 |