ETC

샤딩(Sharding)과 클러스터링(Clustering)

Beekei 2024. 12. 11. 21:33
반응형

샤딩(Sharding)과 클러스터링(Clustering)은 모두 대규모 데이터와 높은 트래픽을 처리하기 위해 사용되는 데이터 분산 기술입니다.

하지만 목적과 구현 방식에서 차이가 있습니다.

샤딩(Sharding)

정의

  • 데이터를 수평적으로 분할하여 여러 데이터베이스 노드에 분산 저장하는 방식
  • 각각의 분할된 데이터는 샤드(Shard)라고 불리며, 각 샤드는 독립적으로 작동합니다.

특징

  1. 데이터 분산:
    • 전체 데이터셋을 여러 샤드로 나누어 저장
    • 샤드 간에는 중복 데이터가 거의 없고, 각 샤드가 고유 데이터만 저장
  2. 샤드 키(Shard Key):
    • 데이터를 분산할 기준이 되는 필드
    • 예: 사용자 ID, 주문 ID, 날짜 등
  3. 수평 확장:
    • 샤드를 추가하면 데이터 저장 용량과 처리 능력이 확장

장단점

  • 대규모 데이터 처리를 효율적으로 분산
  • 쓰기 및 읽기 성능 향상
  • 데이터 크기 증가에 따른 유연한 확장
  • 잘못된 샤드 키 선택 시 데이터 불균형 발생
  • 샤드 간 쿼리는 복잡하며 성능 저하를 초래할 수 있음
  • 관리 복잡성 증가

사용 사례

  • 데이터 크기가 급격히 증가하며, 수평 확장이 필요한 경우
  • 사용자 기반으로 데이터를 분리해야 하는 경우(예: 소셜 네트워크, 다중 테넌트 환경)
  • 특정 샤드 키를 기준으로 데이터 액세스가 자주 이루어지는 경우

클러스터링(Clustering)

정의

  • 동일한 데이터를 여러 노드에 복제하여 가용성과 성능을 높이는 방식
  • 데이터는 모든 클러스터 노드에 동일하게 존재하며, 노드 간에 데이터 동기화가 이루어집니다.

특징

  1. 데이터 복제:
    • 클러스터 내 모든 노드에 데이터가 복제
    • 복제본을 통해 데이터 가용성 및 안정성을 보장
  2. 읽기 성능 향상:
    • 읽기 요청을 여러 노드에 분산하여 처리
    • 쓰기 작업은 보통 단일 마스터 노드에서 처리한 후 복제
  3. 고가용성:
    • 특정 노드에 장애가 발생해도 다른 노드에서 서비스 가능

장단점

  • 데이터 손실 위험 최소화
  • 읽기 부하를 여러 노드에 분산 가능
  • 장애 복구 및 데이터 백업이 용이
  • 쓰기 작업은 마스터 노드에 집중될 수 있어 병목 발생 가능
  • 데이터 동기화 및 일관성 관리가 복잡
  • 수평 확장이 제한적(데이터 크기 증가 시 샤딩 필요)

사용 사례

  • 데이터 가용성과 안정성이 중요한 경우(예: 금융, 전자상거래)
  • 읽기 요청이 많고 쓰기 작업은 상대적으로 적은 경우
  • 장애 복구가 필요한 고가용성 시스템


샤딩과 클러스터링의 비교

특성 샤딩(Sharding) 클러스터링(Clustering)
데이터 분포 방식 데이터를 샤드 키를 기준으로 분산 저장 모든 노드에 동일한 데이터 복제
확장성 수평 확장(데이터 노드 추가로 확장) 수직 확장(노드 성능 향상이 주요 방법)
목적 대규모 데이터를 효율적으로 분산 저장 데이터 가용성 및 읽기 성능 향상
읽기 성능 샤드에 따라 읽기 성능이 달라질 수 있음 여러 노드에서 읽기 성능이 균일하게 향상
쓰기 성능 샤드 간 병렬 쓰기로 성능 향상 가능 쓰기 병목 발생 가능
데이터 중복 없음 모든 노드에 동일 데이터 존재
관리 복잡성 샤드 키와 데이터 분배 설계 필요 데이터 동기화 및 장애 복구 관리 필요

어떤 경우에 각각 사용해야 하나요?

샤딩 사용 시기

  • 데이터 규모가 매우 크고 지속적으로 증가
  • 쓰기 성능이 병목이 되는 상황
  • 특정 기준(예: 사용자, 시간)에 따라 데이터를 분리해 처리하는 것이 효율적인 경우

클러스터링 사용 시기

  • 시스템 가용성과 데이터 복제본 유지가 중요
  • 읽기 요청이 많고, 읽기 성능을 높이는 것이 최우선 과제
  • 특정 노드의 장애 복구가 필요한 경우

결론

  • 샤딩은 대규모 데이터를 분산 처리하고 수평 확장이 필요한 경우에 적합하며, 클러스터링은 고가용성과 읽기 성능 향상이 필요한 경우에 적합합니다.
  • 두 방법은 상호 보완적으로 사용 가능하며, 대규모 시스템에서는 샤딩과 클러스터링을 조합하여 데이터 확장성과 가용성을 동시에 확보하기도 합니다.
반응형