💾

CAP 정리

최민석·2025-10-24

CAP 정리

cap_theorem

CAP 정리, 왜 중요한가?

분산 시스템은 여러 대의 서버가 협력하여 하나의 데이터를 관리하는 환경입니다. 이러한 환경에서는 언제든지 장애나 네트워크 분할이 발생할 수 있습니다. CAP 이론은 이러한 불안정한 환경에서 무엇을 포기하고 무엇을 지킬 것인가를 판단하는 기준이 됩니다.
즉, 완벽한 시스템을 설계하는 것이 아니라, 현실적 제약 속에서 균형을 선택하는 철학을 제공합니다.

💡 CAP Theory(이론)는 이론으로 시작하여 증명이 완료되어 현재는 '정리'(Theorem)으로 불립니다. 해당 이론은 Eric Brewer의 추측 증명으로 검증되었으며, 논문은 다음 링크에서 확인하실 수 있습니다.

논문명: “Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition‑Tolerant Web Services” (Seth Gilbert & Nancy Lynch, 2002)


CAP 정리란?

CAP 정리은 세 가지 핵심 속성을 정의합니다.

  • Consistency (일관성): 모든 노드가 동일한 데이터를 바라봅니다.
    한 노드에서 데이터가 수정되면, 다른 노드에서도 즉시 동일한 데이터를 조회할 수 있습니다.
  • Availability (가용성): 요청이 들어오면 항상 응답을 반환합니다.
    일부 노드가 장애가 나더라도 시스템 전체는 계속 동작합니다.
  • Partition Tolerance (분할 내성): 네트워크가 일부 분리되어도 시스템이 멈추지 않습니다.

세 가지 중 두 가지 속성만 완벽히 보장할 수 있으며, 세 가지를 모두 만족하는 시스템은 존재하지 않습니다.
따라서 현실적인 선택은 CP(일관성+분할 내성) 또는 AP(가용성+분할 내성) 중 하나입니다.


왜 세 가지를 동시에 가질 수 없는가

분산 시스템에서는 네트워크 분할(Partition) 이 언제든 발생할 수 있습니다.
이때 데이터를 정확히 유지하려면 노드 간 동기화가 필요하지만, 통신이 불가능하면 일관성과 가용성 중 하나를 포기해야 합니다.

  • 전통적 RDBMS(CA): 네트워크 분할이 없다고 가정합니다. 분산시스템이 아닌 경우에만 적용할 수 있습니다. 예: MySQL(단일 노드)
  • 일관성을 우선(CP): 모든 노드가 동일한 데이터를 유지하기 위해 일부 요청을 거절합니다.
    예: MongoDB, Zookeeper
  • 가용성을 우선(AP): 요청을 빠르게 처리하기 위해 일시적으로 다른 노드와 데이터 불일치를 허용합니다.
    예: Cassandra, Redis, ElasticSearch

이처럼 CAP 이론은 “무엇을 지킬 것인가”가 아니라 “무엇을 포기할 것인가”를 명확히 결정하게 만듭니다.


CAP 조합별 시나리오

조합 설명 대표 시스템 예시
CA 네트워크 분할이 없는 환경에서 일관성과 가용성을 동시에 보장합니다. 단일 서버 MySQL (단일 인스턴스 환경)
CP 분할 내성을 유지하면서 일관성을 우선합니다. 일부 요청은 지연되거나 실패할 수 있습니다. 분산 데이터베이스, 설정 저장소 MongoDB, Zookeeper
AP 분할 내성을 유지하면서 가용성을 우선합니다. 최종 일관성을 보장합니다. 분산 캐시, 분산 검색 시스템 Redis, Cassandra, DynamoDB, ElasticSearch

CAP 정리의 한계와 현대적 관점

CAP 정리는 분산 시스템의 핵심 개념이지만, 실제 환경은 더 복잡합니다.
현대 시스템은 네트워크 분할이 일시적이며, 상황에 따라 서로 다른 균형점을 선택합니다.

이를 보완하기 위해 PACELC 이론이 등장했습니다.
PACELC는 “Partition이 발생하면(Partition) A(가용성) 또는 C(일관성)을 선택하고, Else(정상 상태)에서는 L(지연 시간) 또는 C(일관성)을 선택한다”는 의미입니다.

즉, CAP은 장애 상황의 균형을, PACELC는 정상 상황의 균형까지 확장한 개념입니다.
결국 시스템 설계의 핵심은 “항상 어느 정도의 불일치를 허용하면서도 사용자 경험을 해치지 않는 지점”을 찾는 데 있습니다.