Phase 3레슨 12

Consistency Model

Strong, Sequential, Causal, Eventual, Read-Your-Writes — 얼마나 '최신'이어야 하는가

💡ELI5·

SNS 댓글과 일관성

Strong:        방금 쓴 글 → 모든 사용자가 즉시 본다 (느림)
Eventual:      방금 쓴 글 → 몇 초 뒤 전파 (빠름, 일시적 불일치)
Causal:        댓글→대댓글 순서는 보장, 동시 댓글 순서는 미보장
Read-Your-Writes: 내가 쓴 글은 내가 무조건 본다 (타인은 eventual)
💡 비유Strong = 생방송 (모든 TV가 동시에 같은 화면). Eventual = 뉴스 다시보기 (업로드되면 결국 다 볼 수 있지만, 시차 발생). Read-Your-Writes = 내가 찍은 사진은 내 폰에 바로 보임 (다른 사람은 나중에 공유 피드에서 봄).
🔬Deep Dive·

일관성 모델 계층

강함 ←─────────────────────────────────→ 약함

Linearizable  >  Sequential  >  Causal  >  Read-Your-Writes  >  Eventual
 (Strong)        (같은 순서)   (인과순서)  (자기 쓰기 보장)      (수렴만)
모델보장지연사용 예
Linearizable (Strong)모든 읽기 = 최신 쓰기높음 (동기화 필요)결제, 좌석 예약
Sequential모든 노드가 같은 순서로 봄높음분산 로그, Zookeeper
Causal인과관계 순서 보장중간댓글 스레드, 협업 문서
Read-Your-Writes자기 쓰기는 자기가 볼 수 있음낮음사용자 프로필 수정
Monotonic Read더 과거로 돌아가지 않음낮음피드 새로고침
Eventual결국 수렴 (시점 미보장)최저좋아요 수, 조회수
🔬Deep Dive·

Read-Your-Writes 구현 방법

사용자가 쓰기를 수행한 후 읽을 때, 자신의 쓰기가 아직 Replica에 전파되지 않았다면 stale data를 보게 된다. 이를 해결하는 방법:

방법동작단점
Sticky Session같은 사용자를 같은 노드로 라우팅부하 불균형, 노드 장애 시 문제
Read-after-Write 대기쓰기 후 복제 완료 대기 후 읽기지연 증가
Version Token쓰기 시 버전 반환, 읽기 시 해당 버전 이상 확인구현 복잡
Primary 읽기쓰기를 수행한 Primary에서 읽기Primary 부하
⚖️Trade-off·

일관성 vs 성능

일관성이 강할수록 모든 복제본을 동기화해야 하므로 지연이 증가하고 가용성이 감소한다. 반대로 일관성이 약할수록 지연은 줄지만 일시적 불일치를 애플리케이션이 감당해야 한다.

실용적 접근: 데이터 종류별로 다른 일관성 적용. 결제 = Strong, 피드 = Eventual, 프로필 = Read-Your-Writes. 모든 데이터에 Strong을 적용하는 것은 비용 낭비다.

❓ 체크포인트 질문

  1. 1.Strong Consistency와 Eventual Consistency의 핵심 차이는?
  2. 2.Read-Your-Writes Consistency가 왜 사용자 경험에 중요한가?
  3. 3.Causal Consistency는 Strong과 Eventual 사이에서 무엇을 보장하는가?
  4. 4.Cosmos DB의 5단계 일관성 수준이 실용적인 이유는?
  5. 5.Monotonic Read Consistency가 해결하는 문제는?