시스템 디자인 아틀라스
데이터 시스템 / 분산 저장소 / Key-Value Store
학습 로드맵

분산 Key-Value Store 설계

키 하나로 읽고 쓰는 단순한 API를, 노드·네트워크가 계속 실패하는 환경에서도 확장합니다. 핵심은 파티셔닝, 복제, 정족수, 충돌 해결의 책임 경계를 분명하게 두는 것입니다.

개념 이해면접 답변운영 관점진도 저장
30초 핵심 요약

대용량 Key-Value Store는 데이터를 키 기준으로 나누고, 여러 노드에 복제하며, 읽기·쓰기 정족수로 일관성과 지연의 균형을 맞춥니다. 예시로 N=3, W=2, R=2를 선택하면 읽기와 쓰기가 한 사본 이상에서 교차하지만, 충돌 순서와 실패 감지를 올바르게 설계해야만 최신성을 판단할 수 있습니다.

데이터 세트 (설계 가정)100억 키 · 약 10TB
복제 후 저장량 (계산 결과)N=3 → 약 30TB
정족수 예시 (설계 가정)N=3 · W=2 · R=2
01 · REQUIREMENTS

무엇을 보장해야 하는가?

# 요구사항

관계형 질의가 아닌 키 기반 접근을 전제로 하되, 용량·처리량·장애 빈도는 계속 증가한다고 가정합니다.

F1단순한 API

put(key, value)get(key)에 버전 컨텍스트를 함께 전달합니다.

F2수평 확장

노드 증감 때 전체 데이터를 옮기지 않고 일부 키만 재배치합니다.

F3장애 허용

일부 사본·경로가 실패해도 선택한 정족수만 만족하면 응답합니다.

F4충돌 가시화

동시 쓰기를 숨기지 않고 버전·병합 책임을 명시합니다.

02 · HIGH-LEVEL DESIGN

코디네이터와 세 복제본

# 아키텍처

요청을 받은 코디네이터가 일관된 해싱 링에서 담당 복제본을 계산하고, 쓰기에는 W개의 ACK, 읽기에는 R개의 버전을 모읍니다.

복제·정족수 읽기/쓰기 흐름 SVG DIAGRAM · N=3, W=2, R=2는 설계 가정
클라이언트, 코디네이터, 세 복제본과 읽기 수리 경로클라이언트 요청을 코디네이터가 세 복제본에 병렬 전송하고 쓰기와 읽기 정족수를 모은 뒤 오래된 복제본을 읽기 수리하는 흐름이다.Clientput / get + versionCoordinatorhash ring · quorumReplica A · ACKReplica B · ACKReplica C · async repairN=3 · write W=2read R=2 · version mergehinted handoff / read repair병렬 전송오래된 사본을 발견하면 읽기 수리 경로로 보정
교집합의 한계 · W + R > N은 읽기·쓰기 사본의 교집합을 만들지만, 동시 쓰기 순서·버전 비교·실패 감지가 부정확하면 선형 일관성이 자동으로 생기지 않습니다.
03 · READ / WRITE FLOW

읽기와 쓰기는 어떻게 끝나는가?

# 처리 흐름
1키 배치 계산

일관된 해싱과 가상 노드로 담당 N개 복제본을 찾습니다.

2병렬 쓰기

W개 ACK를 받으면 성공 응답하고 나머지는 힌트로 보관합니다.

3병렬 읽기

R개 버전을 비교해 최신 값 또는 충돌 버전 집합을 반환합니다.

4사본 수리

읽기 수리와 Merkle Tree 안티 엔트로피로 장기 불일치를 줄입니다.

04 · TRADEOFFS

정족수와 충돌 해결의 선택

# 트레이드오프

정족수는 숫자 하나가 아니라 가용성·지연·충돌 책임을 함께 바꾸는 정책입니다.

선택
강점
주의점
적용 예
N=3, W=2, R=2
읽기·쓰기 사본 교집합
느린 사본 2개면 요청 실패
일반 데이터
W=1
낮은 쓰기 지연
읽기 시 충돌·오래된 사본 가능성 증가
가용성 우선
서버 병합
클라이언트 단순
도메인 의미를 모르면 잘못 병합
카운터·집합
클라이언트 병합
업무 의미 반영
SDK·UX 복잡도 증가
장바구니 등
05 · FAILURE MODES

장애 시나리오와 대응

# 장애 대응
!노드 장애

복제본 하나가 응답하지 않아도 요청은 계속 들어옵니다.

대응 · hinted handoff로 임시 사본을 보관하고 복귀 후 전달합니다.
네트워크 분단

양쪽에서 쓰기가 허용되면 버전이 갈라질 수 있습니다.

대응 · 벡터 클록·병합 정책으로 충돌을 명시적으로 반환·해결합니다.
핫 파티션

특정 키 범위에 QPS가 집중되어 한 노드만 느려집니다.

대응 · 가상 노드, 키 분할, 캐시와 파티션별 편차 관측을 사용합니다.
시계 역행

물리 타임스탬프만으로는 오래된 값을 최신으로 오판할 수 있습니다.

대응 · 논리 버전 우선, 클록 스큐 알림, 잘못된 덮어쓰기 추적을 적용합니다.
06 · OPERATIONS

보안·관측·비용

# 운영
영역
확인할 것
판단 기준
주의점
보안·삭제
전송/저장 암호화, 삭제 전파
힌트 사본까지 삭제 완료
복제본 하나만 지워서는 불충분
관측
p99, 정족수 미충족, 분기 수
파티션별 QPS·Merkle 차이
W/R을 낮추기 전 원인부터 분석
비용
복제 N, 수리 주기, 핫 키
원본 10TB × N=3 = 30TB
모두 설계 가정 기반 예시
출처
Dynamo 논문·Cassandra 문서
검토일 2026-08-23
제품별 기본값으로 일반화하지 않음
면접 모드 · 추가 질문05:00
“N=3에서 W=1, R=1을 선택하면 어떤 장애와 일관성 문제가 생기며, 고객 장바구니와 결제 잔액에 같은 정책을 적용할 수 있을까요?”
요구사항부터 분리W/R 트레이드오프충돌 책임 위치
NEXT CASE STUDY채팅 시스템 설계
EDITORIAL NOTES

작성·검토·참고 자료

콘텐츠 원칙
이 문서는 독립적으로 재작성한 한국어 학습 자료입니다. 사실과 학습용 설계 가정을 구분합니다.
최종 검토
예상 학습 시간
22분

참고 자료

사실 오류·출처 정정은 문의·정정 페이지로 알려 주세요.