전체 목록
데이터베이스Hard#214

샤딩과 레플리케이션의 차이를 설명해주세요.

#데이터베이스#Sharding#Replication#확장성

답변 포인트

분할 저장과 복제 저장의 차이를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

샤딩은 데이터를 여러 노드로 나누어 저장하는 확장 전략이고, 레플리케이션은 같은 데이터를 복제해 읽기 확장과 장애 대응을 돕는 전략입니다. 실무 예시: 쿼리를 개선할 때는 인덱스 존재 여부뿐 아니라 실제 실행 계획과 반환 행 수를 함께 확인해야 합니다.

샤딩과 레플리케이션은 모두 데이터를 여러 노드에 배치하지만 목적이 다릅니다. 샤딩은 데이터를 나누어 저장해 용량과 쓰기 부하를 분산하고, 레플리케이션은 같은 데이터를 복제해 가용성과 읽기 확장을 얻습니다.

레플리케이션

Text
Primary DB -> Replica 1
           -> Replica 2

Primary에서 쓰고 Replica로 변경 사항을 복제합니다. 읽기 트래픽을 Replica로 분산하거나 Primary 장애 시 승격(failover)할 수 있습니다.

주의점

  • 비동기 복제에서는 replication lag 때문에 방금 쓴 데이터를 replica에서 못 볼 수 있습니다.
  • failover 시 split-brain, 데이터 유실 가능성을 고려해야 합니다.
  • 읽기 분산만으로 쓰기 병목은 해결되지 않습니다.

샤딩

Text
user_id % 4 = 0 -> shard A
user_id % 4 = 1 -> shard B
user_id % 4 = 2 -> shard C
user_id % 4 = 3 -> shard D

데이터를 shard key 기준으로 나누어 여러 DB에 저장합니다. 각 shard가 전체 데이터의 일부만 담당하므로 저장 용량과 쓰기 부하를 분산할 수 있습니다.

주의점

  • shard key 선택이 매우 중요합니다. 특정 shard에 트래픽이 몰리면 hotspot이 생깁니다.
  • shard를 넘는 join, transaction, aggregate가 어려워집니다.
  • resharding은 운영 난도가 높습니다.

함께 쓰는 경우

대규모 서비스는 shard마다 primary-replica 구성을 둡니다. 즉 “데이터는 샤딩으로 나누고, 각 조각은 레플리케이션으로 복제”합니다.

면접 답변 포인트

레플리케이션은 같은 데이터를 복사해 읽기 확장과 장애 대응을 돕고, 샤딩은 데이터를 분할해 저장 용량과 쓰기 처리량을 확장합니다. 각각 lag와 failover, shard key와 cross-shard 쿼리 문제가 핵심 trade-off입니다.

관련 질문

같은 카테고리/태그 기준