Skip to content
> giho's blog
Go back

~/posts/cap-theorem

CAP 이론 — 파티션이 나면 뭘 포기할 것인가

· 2 min read
-- contents

CAP은 분산 시스템 공부하면 제일 먼저 나오는데, 세 글자 외우는 걸로 끝내면 실무에 안 붙는다. 나는 “네트워크가 끊겼을 때 내 시스템이 무슨 선택을 하는가”로 이해하는 게 제일 와닿았다.

세 글자부터

CAP은 “셋 중 둘만”이라고들 하는데, 이 말이 오해를 부른다. 분산 시스템에서 P는 선택이 아니다. 네트워크는 언젠가 끊기고, 그걸 견디는 건 기본 전제다. 그러니 실제 선택지는 파티션이 났을 때 C를 지킬 거냐, A를 지킬 거냐 딱 이거다.

CP vs AP — 끊겼을 때의 선택

같은 제품도 설정에 따라 갈린다. DynamoDB나 Cassandra는 정족수(R/W) 설정으로 AP↔CP 사이를 조절할 수 있다.

CA는 사실상 함정

“CA = 일관성 + 가용성, P만 포기”라고 하는데, P를 포기한다는 건 분산을 포기한다는 말이다. 즉 CA는 노드 하나짜리(단일 RDBMS) 얘기지 분산 시스템의 선택지가 아니다. 분산으로 넘어온 순간 CA는 목록에서 빠진다고 보면 된다.

대략적인 진영

교과서 분류라 제품/설정마다 다르지만 감을 잡는 용도로:

PACELC — 평상시도 생각해야 한다

CAP은 “파티션 났을 때”만 다룬다. 그런데 시스템은 파티션 안 난 평상시가 훨씬 길다. PACELC가 그 빈칸을 채운다.

DynamoDB가 왜 빠른가? 평상시에도 일관성보다 낮은 지연을 택하기 때문이다(PA/EL). 반대로 동기 복제로 강한 일관성을 잡는 구성은 평상시 지연을 감수한다(EC). 결국 실무 튜닝은 이 “평상시 L vs C”에서 벌어지는 경우가 많다.

정리하며



-- related


Previous Post
How to compile C & C++ in Mac OS
Next Post
Schema Diff Pro
giho=#searchesc