CAP 이론이란? 분산 시스템에서 피할 수 없는 선택

CAP 이론의 정의

CAP 이론은 분산 시스템이 동시에 만족할 수 있는 속성이 최대 두 가지뿐이라는 이론입니다. 여기서 CAP은 각각 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 내성)를 의미합니다. 일관성은 모든 노드가 같은 시점에 같은 데이터를 보여주는 것이고, 가용성은 요청이 오면 항상 응답을 반환하는 것이며, 분할 내성은 네트워크가 끊겨도 시스템이 계속 동작하는 것을 뜻합니다. 문제는 여러 대의 서버로 이루어진 분산 시스템에서는 네트워크 장애가 언제든 발생할 수 있다는 점입니다. 즉 분할 내성(P)은 사실상 선택이 아니라 필수 조건이며, 결국 개발자는 남은 C와 A 중 무엇을 우선할지 선택해야 합니다.

동작 원리와 예시로 이해하기

두 도시에 있는 은행 지점을 예로 들어보겠습니다. 서울 지점과 부산 지점의 서버가 네트워크 장애로 서로 통신할 수 없는 상황(파티션 발생)이 생겼다고 가정해봅시다. 이때 서울 지점에서 계좌 출금 요청이 들어오면 시스템은 두 가지 선택을 할 수 있습니다.

  • 일관성(C) 우선: 부산 지점과 동기화가 안 되었으니 요청을 거부하거나 대기시킨다. 데이터는 항상 정확하지만 서비스가 잠시 멈출 수 있다.
  • 가용성(A) 우선: 일단 서울 지점 데이터로 출금을 처리한다. 서비스는 계속되지만 나중에 부산 지점과 데이터가 맞지 않을 위험이 있다.

이처럼 네트워크 단절 상황에서 정확성을 지킬지, 서비스 중단 없이 응답할지를 선택하는 것이 CAP 이론의 핵심입니다. 참고로 평상시(파티션이 없을 때)는 C와 A를 동시에 만족할 수 있으며, 트레이드오프는 오직 장애 상황에서만 발생합니다.

실무에서 왜 중요한가

실무에서는 이 이론을 바탕으로 데이터베이스나 시스템을 선택합니다. 예를 들어 금융 거래처럼 데이터 정합성이 생명인 서비스는 CP 성향의 시스템(예: MongoDB의 강한 일관성 설정, ZooKeeper)을 사용하고, SNS 피드나 조회수처럼 약간의 지연이 허용되는 서비스는 AP 성향의 시스템(예: Cassandra, DynamoDB)을 선택하는 식입니다. CAP 이론을 이해하면 ‘왜 이 데이터베이스는 이런 옵션을 제공하는지’, ‘장애 발생 시 우리 서비스는 어떤 선택을 해야 하는지’를 설계 단계에서 미리 고민할 수 있습니다. 결국 CAP 이론은 정답을 알려주는 공식이 아니라, 분산 시스템을 설계할 때 반드시 마주하게 되는 트레이드오프를 명확히 인식하게 해주는 사고의 틀이라고 할 수 있습니다.

댓글 남기기