CAP 이론이란?
CAP 이론이란?
CAP 이론은 Eric Brewer 교수가 2000년 처음 제안한 이론으로, 분산 시스템의 설계 시 발생하는 근본적인 트레이드오프를 설명한 것이다. 2002년 MIT의 Seth Gilbert와 Nancy Lynch에 의해 수학적으로 증명되었다.
분산 시스템은 다음 세 가지 보장(guarantees) 중 동시에 최대 두 가지만 충족 가능하다는 내용이다.
- 일관성(Consistency): 모든 노드가 동일한 시점에 동일한 데이터를 볼 수 있음
- 가용성(Availability): 모든 요청이 성공 또는 실패로 응답받음
- 분할 허용도(Partition Tolerance): 네트워크 분할(장애) 상황에서도 시스템이 계속 작동함
각 특징별 의미
C (Consistency) 일관성
- 모든 노드에 동일한 데이터를 동시에 보여준다.
- 클라이언트는 어떤 노드에 연결하든 동시에 동일한 데이터를 볼 수 있다.
- 데이터가 한 노드에 기록되면, 즉시 모든 노드로 전달되거나 복제된다.
- ACID 원리에서 의미하는 것과 같다.
- 어떤 데이터베이스 속성에 C가 있다면, 트랜잭션 기능 또는 그와 비슷한 매커니즘이 존재한다는 뜻이다.
A (Availability) 가용성
- 모든 요청에 대해 응답이 보장됩니다.
- 클라이언트는 모든 요청에 대해 예외없이 유효한 응답을 받는다.
- 일부 노드가 다운되어도 시스템은 응답함
P (Partition Tolerance) 분할 허용도
- 네트워크 분할(노드 간 연결이 끊어지거나 지연되는 통신 장애) 상황에서도 시스템은 계속 동작한다.
- 분산 시스템에서 P는 항상 보장해야 합니다.
관계형 데이터베이스는 CA 시스템이다. 일관성(C)와 가용성(A)를 보장하되, 분단 허용성(P)는 보장하지 않는다.
관계형 데이터베이스가 동시에 다량의 서버를 운용하는 클러스터링에 적합하지 않는 이유가 여기에 있다. 만약 10대의 서버중에서 한 서버의 접속이 끊어졌다고 가정을 하면, 분단 허용성을 지원하지 않으므로 이는 수용할 수 있지만 끊어진 서버 때문에 일관성과 가용성이 훼손되므로 아예 1번 부터 10번까지 모든 서버를 중단시켜서 어떤 클라이언트도 서버와 접속할 수 없어야한다. 일반적으로 불가능한 방법이다.
해결책은 간단한데, CA를 포기하면 된다. CA를 포기한다는 뜻이 극단적으로 일관성과 가용성을 포기하는 것이 아닌 1 ~ 100까지의 수치가 있을 때 일관성과 가용성을 100% 지원하던 것에서 수치를 60%로 낮춘다고 생각을 하면 된다.
대부분의 NoSQL 데이터베이스는 CA가 아닌 CP나 AP 시스템이다. 대용량의 분산 시스템을 구축하는데에는 CP보다도 AP가 알맞다. C가 들어가서 강력한 일관성 즉, ACID 트랜잭션을 지원한다고 가정하면 예를 들어 하나의 쓰기 작업을 수행한다고 가정할 때 2대가 정상 응답할 때까지 LOCK이 걸리겠지만 100대라면 너무 긴 시간동안 LOCK이 걸리게 된다.
