Dev/database

CAP Theorem(CAP 정리)

Luigi.yoon 2025. 6. 12. 14:00

CAP 정리란?

CAP 정리(CAP Theorem)는 분산 데이터베이스 및 분산 시스템에서 동시에 만족시킬 수 없는 세 가지 핵심 특성, 즉 일관성(Consistency)가용성(Availability)분할 허용성(Partition Tolerance) 사이의 트레이드오프로 인해 세 가지 특성을 모두 만족시킬 수 없으며, 최대 두 가지 특성만 제공할 수 있다고 설명하는 이론이다. 이 이론은 2000년 Eric Brewer에 의해 제안되었고, 2002년 MIT의 Seth Gilbert와 Nancy Lynch에 의해 증명되었다.

 

출처 : https://en.wikipedia.org/wiki/CAP_theorem

🧩 CAP 정리의 세 가지 요소

요소 설명
C (Consistency) 일관성 모든 노드가 같은 시점에 같은 데이터를 보여줌 (Strong consistency).
A (Availability) 가용성 클라이언트의 요청에 항상 응답함 (응답 자체가 실패하지 않음).
P (Partition Tolerance) 파티션 허용성(분할 내성) 네트워크 분할이 발생하더라도 시스템이 계속 동작함.
 

📌 CAP 정리의 핵심: 세 가지 중 두 가지만 선택 가능

CAP 정리에 따르면, 분산 시스템은 네트워크 분할(Partition)이 발생했을 때 일관성과 가용성 중 하나를 반드시 희생해야 한다. 즉, 세 가지 특성을 동시에 완벽하게 만족시킬 수 없으며, 시스템 설계 시 두 가지 특성을 우선순위로 선택해야 한다.

 

 

⚖️ 유형별 트레이드오프 분석

유형 구성 설명 예시
CP (Consistency + Partition tolerance) 데이터 정합성을 보장하지만, 네트워크 분할 시 일부 요청을 거절함. HBase, MongoDB (Strong Consistency),
Zookeeper
AP (Availability + Partition tolerance) 항상 응답하지만 데이터 정합성이 즉각 보장되지 않음 (Eventually Consistent). Cassandra,
DynamoDB,
Couchbase
CA (Consistency + Availability) 네트워크가 안정적일 때만 가능 (현실적 분산 환경에서는 불가능) 이론적 조합, 단일 노드 RDBMS와 유사
 

🔍 실제 상황에서의 선택 기준

  • Consistency가 중요한 경우 (CP 선택)
    • 금융, 결제, 인증 시스템 등
    • 데이터 무결성이 중요한 경우
  • Availability가 중요한 경우 (AP 선택)
    • SNS, 로그 수집, 캐시 시스템 등
    • "언제든 응답"이 우선

🧠 추가 개념: Eventual Consistency

AP 시스템에서는 Eventually Consistent (최종적 일관성) 개념을 사용합니다.
즉, 네트워크 분할이나 장애가 복구되면, 시간이 지나 결국 모든 노드가 동일한 데이터를 갖게 됩니다.

 

비교 분석

1. 분산 시스템의 현실적인 선택

  • 실제 대규모 분산 시스템에서는 네트워크 분할(Partition)이 언제든 발생할 수 있으므로, 대부분의 시스템은 CP 또는 AP 중 하나를 선택하게 된다.
  • 완벽한 CA 시스템은 네트워크 분할이 없다는 가정 하에서만 가능하며, 현실적으로는 거의 존재하지 않는다.

2. 트레이드오프의 예시

  • 은행 시스템: 일관성이 매우 중요하므로 CP를 선택. 네트워크 분할 시 일부 서비스(예: 입출금)는 중단하고, 조회만 허용할 수 있음4.
  • SNS, 메신저 등: 가용성이 더 중요하므로 AP를 선택. 네트워크 분할 시에도 서비스는 계속 동작하지만, 일시적으로 데이터 불일치가 발생할 수 있음.

3. 한계와 확장

  • CAP 정리는 단순화된 모델로, 실제 시스템은 일관성과 가용성의 '정도'를 조절하며 동작한다. 완벽한 CP, AP 시스템은 드물고, 대부분 그 사이 어딘가에 위치한다.
  • 파티션이 없는 상황, 지연시간(latency) 등은 CAP 정리만으로 설명이 어렵기 때문에, PACELC 정리 등으로 확장하여 설명하기도 한다.

✅ 마무리

CAP 정리는 완벽한 시스템은 없다는 것을 알려주고, 업무 요구사항에 따라 어떤 속성을 우선할지 명확히 선택해야 함을 강조합니다.