CAP의 핵심

분할이 생기는 순간, 시스템은 같은 값 유지와 계속 응답 중 하나를 우선합니다.

장애가 없을 때는 여러 노드가 같은 데이터를 보여주며 서비스도 응답할 수 있습니다. 하지만 네트워크가 끊기면 무엇을 먼저 지킬지가 CAP 선택으로 드러납니다.

1. 정상 상태
복제가 잘 되면 C와 A가 함께 보입니다.
노드 A 잔액 10만
노드 B 잔액 10만
노드 C 잔액 10만
2. 네트워크 분할 발생
왼쪽 파티션
노드 A만 접근 가능
오른쪽 파티션
노드 B, C는 서로 통신
이때 질문은 하나입니다: "같은 값을 지킬까, 모든 요청에 응답할까?" P(분할 내성)는 이미 전제로 깔려 있으므로, 실제 운영 선택은 C와 A 사이에서 갈립니다.
CP
일관성 + 분할 내성
복제가 확인되지 않으면 쓰기나 응답을 멈춰서, 어느 노드에서 읽어도 같은 값을 보이게 합니다.
분할 중 상태
노드 A 쓰기 거부
노드 B, C 잔액 10만 유지
즉시 결과 일부 요청은 실패하거나 대기하지만, 서로 다른 잔액이 보이는 상황은 막습니다.
잘 맞는 곳 은행처럼 값이 어긋나면 큰 사고가 되는 시스템
AP
가용성 + 분할 내성
분리된 쪽도 계속 응답하게 두어서 서비스는 유지하지만, 잠시 동안 노드마다 다른 값을 가질 수 있습니다.
분할 중 상태
노드 A 잔액 9만 응답
노드 B, C 잔액 10만 응답
즉시 결과 사용자는 계속 응답을 받지만, 분할이 복구되기 전까지는 값이 서로 다를 수 있습니다.
잘 맞는 곳 피드, 장바구니처럼 잠시 불일치를 감수해도 서비스 지속이 중요한 시스템