
분산 시스템은 여러 대의 서버가 협력하여 하나의 데이터를 관리하는 환경입니다. 이러한 환경에서는 언제든지 장애나 네트워크 분할이 발생할 수 있습니다. 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 정리은 세 가지 핵심 속성을 정의합니다.
세 가지 중 두 가지 속성만 완벽히 보장할 수 있으며, 세 가지를 모두 만족하는 시스템은 존재하지 않습니다.
따라서 현실적인 선택은 CP(일관성+분할 내성) 또는 AP(가용성+분할 내성) 중 하나입니다.
분산 시스템에서는 네트워크 분할(Partition) 이 언제든 발생할 수 있습니다.
이때 데이터를 정확히 유지하려면 노드 간 동기화가 필요하지만, 통신이 불가능하면 일관성과 가용성 중 하나를 포기해야 합니다.
이처럼 CAP 이론은 “무엇을 지킬 것인가”가 아니라 “무엇을 포기할 것인가”를 명확히 결정하게 만듭니다.
| 조합 | 설명 | 대표 시스템 | 예시 |
|---|---|---|---|
| CA | 네트워크 분할이 없는 환경에서 일관성과 가용성을 동시에 보장합니다. | 단일 서버 | MySQL (단일 인스턴스 환경) |
| CP | 분할 내성을 유지하면서 일관성을 우선합니다. 일부 요청은 지연되거나 실패할 수 있습니다. | 분산 데이터베이스, 설정 저장소 | MongoDB, Zookeeper |
| AP | 분할 내성을 유지하면서 가용성을 우선합니다. 최종 일관성을 보장합니다. | 분산 캐시, 분산 검색 시스템 | Redis, Cassandra, DynamoDB, ElasticSearch |
CAP 정리는 분산 시스템의 핵심 개념이지만, 실제 환경은 더 복잡합니다.
현대 시스템은 네트워크 분할이 일시적이며, 상황에 따라 서로 다른 균형점을 선택합니다.
이를 보완하기 위해 PACELC 이론이 등장했습니다.
PACELC는 “Partition이 발생하면(Partition) A(가용성) 또는 C(일관성)을 선택하고, Else(정상 상태)에서는 L(지연 시간) 또는 C(일관성)을 선택한다”는 의미입니다.
즉, CAP은 장애 상황의 균형을, PACELC는 정상 상황의 균형까지 확장한 개념입니다.
결국 시스템 설계의 핵심은 “항상 어느 정도의 불일치를 허용하면서도 사용자 경험을 해치지 않는 지점”을 찾는 데 있습니다.