728x90
클러스터링 (Clustering)
클러스터링은 여러 서버를 하나의 그룹으로 묶어 동시에 운영함으로써 고가용성을 확보하는 기술이다. 이는 한 서버에 장애가 발생해도 서비스가 중단되지 않도록 하는 데 효과적이다.
액티브-액티브 클러스터링
- 여러 서버가 동시에 가동되어 모든 서버가 실제로 데이터를 처리한다
- 장점
- 서버 하나가 장애를 일으켜도 나머지 서버가 역할을 대신 수행해 서비스가 중단되지 않는다
- CPU와 메모리 자원을 효율적으로 활용하여 처리 성능이 향상된다
- 단점
- 모든 서버가 동일한 스토리지를 공유하므로 데이터 I/O에서 병목 현상이 발생할 수 있다
- 여러 서버를 운영하므로 비용과 관리 부담이 증가한다
액티브-스탠바이 클러스터링
- 한 서버가 활성(액티브) 상태로 운영되고 다른 서버는 대기(스탠바이) 상태로 유지된다
- 장점
- 대기 서버가 평소 운영되지 않아 비용 절감이 가능
- 단점
- 액티브 서버에 장애가 발생했을 때 스탠바이 서버로의 전환에 시간이 소요될 수 있다
레플리케이션 (Replication)
레플리케이션은 마스터-슬레이브 구조를 통해 데이터를 복제하여 저장한다. 이는 데이터를 백업하거나 읽기 성능을 개선하기 위해 주로 사용된다.
마스터-슬레이브 구조
- 마스터 DB는 데이터를 관리하고 수정하며 슬레이브 DB는 마스터의 데이터를 복제해 주로 읽기 작업에 사용된다.
- 장점
- 읽기 작업을 슬레이브 DB로 분산시켜 읽기 성능이 향상
- 장애 발생 시 슬레이브 DB를 마스터로 전환해 데이터 손실을 최소화할 수 있다
- 단점
- 슬레이브 DB는 주로 읽기 작업만 가능하며 쓰기는 마스터에 집중되므로 일부 병목 현상이 발생할 수 있다
샤딩 (Sharding)
샤딩은 데이터베이스를 여러 조각(샤드)으로 나눠 각각 독립된 데이터베이스에 저장하는 방식이다. 주로 데이터가 증가할 때 검색 성능을 최적화하기 위해 사용된다.
해시 기반 샤딩
- 데이터를 해시 함수를 이용해 여러 샤드에 분산한다
- 장점
- 데이터를 균등하게 분산하여 부하를 고르게 분산할 수 있다
- 단점
- 샤드 수를 변경할 때 해시 함수가 달라지며 데이터를 재분배해야 하므로 확장성이 떨어질 수 있다
로케이터 기반 샤딩
- 별도의 로케이터 서비스가 샤드의 위치를 관리한다
- 장점
- 샤드를 확장하거나 축소할 때 로케이터가 위치를 관리하므로 확장성이 뛰어나다
- 단점
- 로케이터 서비스에 장애가 발생하면 전체 시스템에 영향을 미칠 수 있다
엔티티 그룹 기반 샤딩
- 데이터 간의 관계를 고려해 특정 엔티티를 같은 샤드에 저장한다
- 예: 게시글과 댓글을 같은 샤드에 저장해 관련 쿼리의 성능을 최적화한다
- 장점
- 연관된 데이터를 같은 샤드에 저장하여 쿼리 속도가 빠르다
- 단점
- 여러 샤드 간의 연관된 데이터를 처리할 때는 오히려 성능 저하가 발생할 수 있다
정리
클러스터링, 레플리케이션, 샤딩의 비교
- 클러스터링 : 서버의 가용성을 높여 장애 상황에서도 서비스를 지속할 수 있음
- 레플리케이션 : 데이터를 복제하여 읽기 성능을 높이고 데이터 손실을 방지
- 샤딩 : 데이터를 수평 분할해 대용량 데이터를 효율적으로 처리하고 검색 속도를 개선
사용 상황에 따른 선택 기준
- 클러스터링 : 서비스의 가용성이 중요할 때(장애 복구)
- 레플리케이션 : 읽기 작업이 많은 환경에서 사용
- 샤딩 : 데이터 양이 방대하고 검색 성능이 중요할 때 사용
사실 데이터베이스 아키텍처는 단일 기법으로만 구성되지 않는다. 각 기법을 복합적으로 활용해 시스템의 특성에 맞게 최적화하는 것이 중요하다. 예를 들어, 클러스터링으로 가용성을 높이면서 레플리케이션으로 읽기 성능을 향상시키며 필요 시 샤딩도 같이 적용하여 대용량 데이터를 효율적으로 처리할 수도 있다. 즉, 성공적인 데이터베이스 구축을 위해선 현재의 시스템 상황과 요구 사항에 맞춰 각 기법을 적절히 선택하는 것이 중요하다
반응형
'Database' 카테고리의 다른 글
DB Replication (1) | 2024.12.09 |
---|---|
MySQL 옵티마이저 실행계획 분석 (0) | 2024.12.09 |
CDC(Change Data Capture) (1) | 2024.11.28 |
트랜잭션의 메커니즘 (0) | 2024.10.28 |
데이터베이스 인덱스에 대한 이해와 활용 (2) | 2024.09.05 |