키 하나로 읽고 쓰는 단순한 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는 설계 가정
교집합의 한계 · 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을 선택하면 어떤 장애와 일관성 문제가 생기며, 고객 장바구니와 결제 잔액에 같은 정책을 적용할 수 있을까요?”