콘텐츠로 바로가기

Replication, Partitioning & Sharding Strategies

데이터를 여러 노드에 복제하거나 쪼개어 배치함으로써 시스템의 고가용성과 병렬 처리 능력을 물리적으로 확장하는 전략들을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

복제, 파티셔닝 및 샤딩 전략(Replication, Partitioning & Sharding Strategies, RPS)은 거대한 데이터를 한 바구니에 담지 않고, 하드웨어 클러스터 전체에 어떻게 효율적으로 '뿌리고' '중복해서' 보관할 것인지 결정하는 분산 데이터 물리학입니다.

학습자는 데이터 손실 방지와 읽기 성능 향상을 위한 **복제(Replication)**의 수리적 메커니즘을 배웁니다. 특히, 저장 용량의 한계를 돌파하기 위해 데이터를 조각내는 **파티셔닝(Partitioning)**과, 이를 여러 서버로 물리 분산하는 **샤딩(Sharding)**의 물리 구조를 익힙니다. 이를 통해 수 페타바이트급 데이터 환경에서도 단일 기기처럼 빠르게 반응하고, 일부 노드가 죽어도 서비스가 중단되지 않는 하이엔드 데이터 인프라 설계 능력을확보합니다.

2. Scope & Boundaries

In-Scope

  • Replication Topologies: Single-leader, Multi-leader, Leaderless 복제의 물리적 흐름
  • Partitioning Mechanics: Range, Hash, List 기반의 데이터 물리 구획화
  • Consistent Hashing: 노드 증설/삭제 시 데이터 재배치를 최소화하는 수리 알고리즘
  • Sharding Balancing: 샤드 간의 데이터 불균형(Hotspot) 해결 물리학

Out-of-Scope

  • 개별 DBMS(MySQL, MongoDB)의 설정 명령어 상세 (파일럿 영역으로 위임)
  • 분산 합의 알고리즘(Paxos, Raft)의 내부 수리 상세 (07-02-02 영역에서 분담)

Boundaries

  • RPS vs. Distributed Storage: 분산 저장소(06-03-XX)가 '저장 방식'에 집중한다면, RPS는 '성능과 가용성을 높이기 위한 데이터 배치 전략'에 집중하여 구분합니다.

3. Counterexample

  • 단순히 "백업 서버 만들기"라 설명하는 것은 RPS 학습이 아닙니다. 왜 비동기 복제(Asynchronous Replication) 상황에서 마스터 장비가 급사했을 때 '데이터 유실'이 물리적으로 수리 필연적인지 증명할 수 있어야 하며, 잘못된 샤드 키(Shard Key) 선정으로 인해 특정 서버 한 대에만 트래픽이 몰려 전체 시스템이 폭발하는 '편향성 물리'를 분석하지 못한다면 RPS의 정수를 이해하지 못한 것입니다.

4. Prerequisites

  • indexing & B-Tree Storage Mechanics (Basic): 인덱스와 데이터 배치 이해가 필수입니다. (06-01-02 IBS)
  • Theorems & Consistency Dynamics (Recommended): CAP 정리 및 일관성 모델 이해가 권장됩니다. (07-02-01 TCD)

5. Learning Map

  1. Safety in Numbers: 같은 데이터를 여러 대에 나누어 담아 하드웨어 장애라는 재난에 대비합니다.
  2. The Great Divide: 거대 데이터를 다룰 수 있는 크기로 쪼개어 물리적 관리 효율을 높입니다.
  3. Cluster Mapping: 쪼개진 데이터 조각(Shard)들을 하드웨어 노드 지도 위에 수치적으로 매핑합니다.
  4. Resilient Rebalancing: 노드가 추가되거나 사라질 때, 데이터가 유령처럼 스스로 최적 위치를 찾아가는 지능적 물리를 완성합니다.

6. Learning Topics

Basic

Core: 데이터 복제의 물리적 구조 (Replication Basics)

  • Why to Learn: 서버 한 대가 고장 나도 데이터가 증발하지 않게 물리적 방어막을 치기 위해서입니다.
  • What to Learn:
    • Leader-Based Replication: 한 놈이 쓰고 나머지는 읽는 계층 물리학
    • Sync vs Async: 정합성을 보장할 것인가, 속도를 택할 것인가의 수리적 선택
    • Failover Mechanics: 리더 장애 시 하드웨어가 자동으로 승격되는 물리적 절차
  • How to Learn:
    • 두 대의 DB 중 리더를 강제 종료하고, 팔로워가 리더로 승격되는 시간을 초정밀 측정 실습
    • 동기 복제 설정 시 네트워크 지연이 쓰기 처리량(TPSTPS)을 얼마나 깎아먹는지 분석
  • Implement: 마스터 DB의 변경 로그를 낚아채서 슬레이브에 적용하는 가상 LogApplier

Core: 데이터 파티셔닝과 수평 분할 (Partitioning Mechanics)

  • Why to Learn: 단일 서버의 디스크 용량 한계를 넘어 무한히 데이터를 쌓기 위함입니다.
  • What to Learn:
    • Range Partitioning: 시간/알파벳 순서대로 데이터 영역을 나누는 물리적 구획
    • Hash Partitioning: 수식을 통해 데이터를 무작위로 고르게 뿌리는 수리 모델
    • Partition Pruning: 쿼리 실행 시 필요한 파티션만 골라서 하드웨어 스캔을 하는 지능적 생략
  • How to Learn:
    • 10억 건의 데이터를 시간별 파티션으로 나누었을 때 검색 속도 향상분을 수치로 도출 실습
    • 해시 함수의 충돌 가능성이 데이터 분산 균형에 미치는 물리적 영향 산출
  • Implement: 입력된 키 값을 해시하여 여러 버킷(Bucket) 중 하나에 할당하는 PartitionRouter

Practical

Core: 샤딩 아키텍처와 샤드 키 (Sharding Essentials)

  • Why to Learn: 데이터를 쪼개는 것을 넘어, 독립적인 서버 클러스터로 하드웨어 부하를 물리 분산하기 위해서입니다.
  • What to Learn:
    • Shard Key Selection: 물리적 성패를 좌우하는 기준 값 선정 기법
    • Global Indexing in Shards: 흩어진 서버들 사이에서 데이터를 찾기 위한 메타데이터 물리학
    • Hotspot resolution: 특정 샤드에 부하가 쏠리는 물리적 편향 해결 전술
  • How to Learn:
    • '사용자 ID'를 샤드 키로 썼을 때와 '지역'을 썼을 때의 데이터 분포 편차를 시각화 실습
    • 수천 대의 샤드 서버에서 '전체 검색(Scatter-Gather)' 쿼리가 네트워크에 가하는 물리적 충격 분석
  • Implement: 여러 서버 주소를 관리하며 쿼리를 적절한 샤드로 보내는 ShardingProxy 모듈

Advanced

Core: 일관된 해싱과 동적 재배치 (Consistent Hashing & Rebalancing)

  • Why to Learn: 시스템 가동 중에 서버를 늘리거나 줄일 때 데이터 이동(Migration)의 물리적 고통을 최소화하기 위함입니다.
  • What to Learn:
    • Consistent Hashing: 링(Ring) 구조를 이용한 수리적 데이터 매핑
    • Virtual Nodes: 하드웨어 성능 차이를 고려해 가상 노드를 촘촘히 박는 수법
    • Auto-rebalancing: 부하가 불균등할 때 샤드를 물리적으로 자동 이동시키는 알고리즘
  • How to Learn:
    • 일반 모듈로(%\%) 연산과 일관된 해싱의 서버 추가 시 데이터 이동량 격차를 수리 증명 실습
    • 재배치(Rebalancing) 작업 중 시스템 성능이 얼마나 물리적으로 저하되는지 임계점 예측
  • Implement: 링 구조를 구현하고 노드 추가/삭제 시 이동되는 데이터 비중을 계산하는 DynamicHashRing

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Replication 데이터를 여러 물리적 위치에 복사하여 가용성과 읽기 성능을 높이는 기법입니다. 기본 생존 능력 Sync/Async Back-up 단순 복사와 다름 P1:CS2023 core
Sharding 물리적으로 다른 데이터베이스 서버들에 데이터를 수평 분할하여 저장하는 기술입니다. 실무 확장성 극치 Shard Key Partitioning 관리가 매우 복잡함 Industry core
Consistent Hashing 노드 변경 시 전체가 아닌 최소한의 데이터만 재배치하도록 하는 수리적 해싱 기법입니다. 심화 유연한 확장 Ring / VNode Modulo 분산 저장소의 심장 Industry core
Shard Key 샤딩된 환경에서 데이터가 어느 물리적 샤드에 저저장될지 결정하는 기준 속성입니다. 실무 분산의 뇌 Mapping Index 잘못 고르면 폭망함 Industry core

8. References

Primary

Secondary

  • [Designing Data-Intensive Applications (DDIA)] Martin Kleppmann — The best chapters on Replication and Partitioning.
  • [Database Internals] Alex Petrov — Storage and distributed systems connection.

Industry

  • [Google Spanner: TrueTime and External Consistency] — Sharding at global scale.
  • [MongoDB: Sharding Manual and Best Practices] — Practical field guide.

9. Final Checklist

Primary

  • '복제(Replication)'를 사용할 때 '비동기' 방식이 '동기' 방식보다 왜 수평 확장에 유리한지 물리적 근거로 설명 가능한가? (P1)
  • '파티셔닝'을 통해 전체 데이터셋 중 탐색 범위를 물리적으로 줄여 하드웨어 I/O를 아끼는 원리를 기술할 수 있는 가? (P1)

Secondary

  • '샤딩' 도입 시 '조인(Join)' 연산이 왜 시스템 전체 가용성을 위협하는 물리적 장애물이 되는지 소통 가능한가?
  • 일관된 해싱(Consistent Hashing) 구조에서 가상 노드(VirtualNodeVirtual Node)를 늘렸을 때 데이터 분산의 균질도가 어떻게 향상되는지 수리 증명할 수 있는 가?

Industry

  • 소셜 미디어 아키텍처 설계 시, '글로벌 핫 이슈' 포스팅이 특정 샤드에 물리적 과부하를 주는 시나리오를 예측하고 대처 방안을 제안할 수 있는 가? (SFIA)
  • 데이터 마이그레이션 도중 발생하는 '복제 지연(Replication Lag)'이 실제 사용자 비즈니스 정합성에 미치는 수리적 영향을 분석할 수 있는 가?