위키득계정 ↗
기술

CAP 정리

CAP 정리기술
C
선형화 가능한 일관성
A
정상 노드 요청에 대한 응답 보장
P
통신 분할을 허용하는 모형
핵심 상황
분리된 노드 사이의 정보 전달 불가
CAP 정리는 통신 분할이 가능한 분산 읽기와 쓰기 서비스에서 선형화 가능한 일관성과 모든 정상 노드 요청에 대한 응답을 함께 보장할 수 없다는 한계를 다룬다. 세 기능 중 아무 두 개를 평상시에 골라 쓰라는 단순한 분류표와는 다르다.

통신이 끊긴 두 복제본

같은 값을 가진 두 복제본 사이의 통신이 끊어졌다고 하자. 한쪽에서 쓰기가 완료된 뒤 다른 쪽에 읽기가 들어오면 그쪽은 새 값을 전달받지 못했을 수 있다. 새 값을 알아낼 때까지 기다리는 것과 현재 정보로 응답하는 것은 서로 다른 선택이며 이를 동시에 무조건 보장할 수는 없다.

일관성의 뜻

여기서 사용하는 일관성은 각 연산이 요청과 응답 사이의 한 시점에 일어난 것처럼 보이는 원자적 읽기와 쓰기다. 모든 종류의 데이터 일관성이나 데이터베이스 제약 조건을 같은 의미로 부르는 것은 아니다. 인과적 일관성이나 최종적 일관성처럼 다른 조건과 구분해야 한다.

가용성의 뜻

정상적으로 동작하는 노드에 도착한 각 요청이 결국 응답을 얻는다는 성질이다. 단순한 연간 가동률이나 응답 속도 목표와 동일하지 않다. 오류를 즉시 돌려주면 언제나 정리의 가용성을 만족한다는 뜻도 아니다. 어떤 동작과 응답을 서비스가 제공해야 하는지 명세가 중요하다.

설계에 적용하기

분할 동안 어떤 연산을 기다리게 하고 어떤 응답을 허용할지 정할 때 한계를 이해하는 데 도움이 된다. 분할이 없는 상황에서도 지연과 일관성의 선택은 남아 있다. 시스템 전체를 영구적인 두 글자 표지로만 나누기보다 연산별 요구와 장애 중 동작, 복구 후 조정 방법을 구체적으로 살핀다.

관련 문서

분산 시스템 / 데이터베이스 / 네트워크 / CRDT / Raft / Paxos / 알고리즘 / 동시성