CP 선택

분할 중에는 쓰기를 멈추고 같은 값을 지킨다

CP 시스템은 "두 노드가 모두 같은 상태여야 커밋"이라는 규칙을 우선합니다. 요청을 계속 받는 것보다 값 불일치를 만들지 않는 것이 더 중요할 때 쓰는 선택입니다.

공유 전제: A와 B는 같은 계좌 상태를 유지해야 한다
네트워크 분할로 복제 경로가 끊김
노드 A
쓰기 요청 도착
현재 잔액 100,000원
×
복제 불가
노드 B
대기 중
현재 잔액 100,000원
들어온 요청

사용자가 노드 A에 출금 -10,000원 쓰기를 보냅니다.

커밋 조건

노드 B에도 같은 변경을 복제할 수 있어야만 쓰기를 확정합니다.

CP의 판단

복제할 수 없으므로 이번 쓰기는 거부한다

노드 A는 혼자만 값을 바꾸지 않습니다. 부분 성공을 허용하면 노드마다 서로 다른 잔액이 보일 수 있기 때문입니다.

일관성 유지

두 노드의 상태는 끝까지 동일하게 남습니다

노드 A 100,000원
노드 B 100,000원

한쪽만 먼저 반영되는 상황을 막아, 같은 데이터가 서로 다르게 보이지 않게 합니다.

가용성 희생

요청 자체는 실패할 수 있습니다

살아 있는 노드가 있어도 복제 보장을 못 하면 응답을 거절합니다. 즉, 서비스는 일부 순간에 덜 "항상 응답"하게 됩니다.

은행 시스템에 적합한 이유: 잠깐 요청이 실패하는 것보다, 노드마다 다른 잔액이 보이는 것이 훨씬 더 큰 문제이기 때문입니다.