Database

Sharding, Clustering, Replication

TedDev 2024. 10. 23. 17:30
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