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
- Safety in Numbers: 같은 데이터를 여러 대에 나누어 담아 하드웨어 장애라는 재난에 대비합니다.
- The Great Divide: 거대 데이터를 다룰 수 있는 크기로 쪼개어 물리적 관리 효율을 높입니다.
- Cluster Mapping: 쪼개진 데이터 조각(Shard)들을 하드웨어 노드 지도 위에 수치적으로 매핑합니다.
- 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 중 리더를 강제 종료하고, 팔로워가 리더로 승격되는 시간을 초정밀 측정 실습
- 동기 복제 설정 시 네트워크 지연이 쓰기 처리량()을 얼마나 깎아먹는지 분석
- Implement: 마스터 DB의 변경 로그를 낚아채서 슬레이브에 적용하는 가상
LogApplier
Recommended
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
8. References
Primary
- [P1] CS2023 - DM/Data Management (Distributed and decentralized data management) — Core requirements.
- [P1] CS2023 - PD/Parallel and Distributed Computing (Fault tolerance and replication) — Transport context.
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) 구조에서 가상 노드()를 늘렸을 때 데이터 분산의 균질도가 어떻게 향상되는지 수리 증명할 수 있는 가?
Industry
- 소셜 미디어 아키텍처 설계 시, '글로벌 핫 이슈' 포스팅이 특정 샤드에 물리적 과부하를 주는 시나리오를 예측하고 대처 방안을 제안할 수 있는 가? (SFIA)
- 데이터 마이그레이션 도중 발생하는 '복제 지연(Replication Lag)'이 실제 사용자 비즈니스 정합성에 미치는 수리적 영향을 분석할 수 있는 가?