CAP

분산 시스템에서 일관성, 가용성, 분단 내성 세 가지를 동시에 모두 만족할 수 없다는 이론입니다.

3가지 속성

속성설명
C (Consistency)모든 노드가 항상 같은 데이터를 반환
A (Availability)모든 요청에 항상 응답
P (Partition Tolerance)네트워크 분단 발생해도 시스템 동작

핵심

셋 중 최대 2가지만 보장 가능
→ CA, CP, AP 중 하나 선택

네트워크 분단(Partition)이란?

노드 A ─── X ─── 노드 B
              ↑
         네트워크 단절

→ 두 노드가 서로 통신 불가
→ 분산 시스템에서 언제든 발생 가능

CA, CP, AP 비교

[CA - 일관성 + 가용성]
네트워크 분단 발생 시 시스템 중단
→ 분산 시스템에서 현실적으로 불가능
→ 단일 노드 DB (전통적 RDBMS)

[CP - 일관성 + 분단 내성]
분단 발생 시 일관성 위해 가용성 포기
→ 응답 불가 상태 허용
→ HBase, Zookeeper, MongoDB(설정에 따라)

[AP - 가용성 + 분단 내성]
분단 발생 시 가용성 위해 일관성 포기
→ 오래된 데이터 반환 가능
→ Cassandra, DynamoDB, CouchDB

실제 상황으로 이해하기

노드 A, 노드 B가 있는데 네트워크 분단 발생

[CP 선택]
"일관성이 중요하니 B가 정상화될 때까지 응답 안함"
→ 서비스 중단 but 데이터 정확 O

[AP 선택]
"일단 응답은 해야하니 A의 데이터로 응답"
→ 서비스 유지 O but 데이터 불일치 가능

대표 DB 분류

DB분류이유
MySQL, PostgreSQLCA단일 노드, 분단 내성 미고려
HBaseCP일관성 우선, 분단 시 중단
MongoDBCP기본 설정 시 일관성 우선
CassandraAP가용성 우선, 최종 일관성
DynamoDBAP가용성 우선, 최종 일관성
RedisCP일관성 우선

최종 일관성 (Eventual Consistency)

AP 시스템의 타협점

지금 당장은 불일치할 수 있지만
→ 시간이 지나면 결국 일치하게 됨

ex) DNS, 쇼핑몰 재고
"잠깐 재고가 틀릴 수 있지만 결국엔 맞춰짐"

실무에서의 선택 기준

금융, 결제 → CP (데이터 정확성 최우선)
SNS, 조회수 → AP (약간의 불일치 허용)

CAP 이론은 분산 시스템 설계 시 어떤 속성을 포기할지 명확히 결정하도록 강제하며, 현실에서는 네트워크 분단이 언제든 발생할 수 있어 CP vs AP 선택이 핵심입니다.

CSLOG에서 보기