Phase 3레슨 11

CAP Theorem

Consistency, Availability, Partition Tolerance — 분산 시스템의 불가능한 삼각형

💡ELI5·

쇼핑몰 재고와 CAP

핵심: 분산 시스템에서 네트워크가 끊기면(P), 데이터 일관성(C)과 서비스 가용성(A)을 동시에 100% 보장할 수 없다.
         C (Consistency)
        / \
       /   \          파티션(P) 발생 시
      /  P  \         C와 A 중 하나를 포기해야
     / (필수)\         한다. P는 현실이라 포기 불가.
    A─────────A (Availability)
💡 비유두 창고가 네트워크로 연결되어 재고를 공유. 네트워크가 끊기면: (1) 일관성 선택 = 양쪽 모두 거래 중지(정확하지만 서비스 불가), (2) 가용성 선택 = 양쪽 각자 거래(서비스는 되지만 재고 불일치). 둘 다 완벽할 수 없다.
🔬Deep Dive·

CAP의 정의와 오해

CAP에서 Consistency는 ACID의 C가 아니다. CAP의 C는 '모든 노드가 같은 순간에 같은 데이터를 본다'는 선형 일관성(linearizability)을 의미한다. ACID의 C는 비즈니스 제약조건(예: 잔액 >= 0)의 무결성이다.

용어CAP의 의미오해하기 쉬운 다른 개념
Consistency선형 일관성: 모든 노드가 같은 시점에 같은 데이터ACID의 C(무결성 제약)가 아님
Availability모든 요청이 응답을 받는다 (에러/타임아웃 아님)99.99% 업타임이 아님
Partition Tolerance네트워크 분할 허용선택이 아니라 현실 — 분산 시스템은 항상 P
🔬Deep Dive·

CP vs AP 실제 시스템

시스템분류파티션 시 동작적합한 사용
HBaseCP파티션된 영역 응답 거부엄격한 일관성 필요 (Hadoop)
ZookeeperCP과반수 노드가 안 보이면 읽기/쓰기 거부리더 선출, 설정 동기화
MongoDBCP (단일 Primary)Primary가 보이지 않으면 쓰기 거부일반 웹 (Primary-Replica)
CassandraAP어떤 노드든 응답 (stale 허용)높은 가용성, 쓰기 성능
DynamoDBAP (기본)최종 일관성 응답대규모 웹 서비스
Redis (Cluster)AP (Gossip)파티션 시 양쪽 각자 동작캐시, 세션
🔬Deep Dive·

PACELC — CAP의 한계 보완

CAP는 파티션(P) 상황만 다룬다. 하지만 정상 상태에서도 Latency와 Consistency 사이에 트레이드오프가 존재한다. PACELC는 이를 명시적으로 표현한다.

PACELC:
  if Partition (P): choose between A and C
  Else (E):          choose between L and C

  PA/EL — Cassandra: 파티션 시 A, 정상 시 L (빠른 응답)
  PC/EC — Spanner:   파티션 시 C, 정상 시 C (강한 일관성)
  PA/EC — DynamoDB:  파티션 시 A, 정상 시 C (튜닝 가능)
⚖️Trade-off·

CP vs AP 선택 기준

상황추천이유
금융, 결제CP잔액 불일치 = 돈 유실
상품 추천, 피드AP잠깐 stale해도 비즈니스 영향 적음
장바구니, 세션AP사용자 경험 > 완벽한 일관성
재고 관리CP (또는 튜닝)오버셀링 방지
로그, 메트릭AP유실 허용, 가용성 우선

❓ 체크포인트 질문

  1. 1.CAP에서 P(Partition Tolerance)를 포기할 수 없는 이유는?
  2. 2.CP 시스템과 AP 시스템의 동작 차이는?
  3. 3.PACELC가 CAP을 어떻게 확장하는가?
  4. 4.Martin Kleppmann이 'CP/AP 라벨링을 멈춰라'고 한 이유는?
  5. 5.은행 시스템이 CP를 선택하는 이유는?