Contents

Cap정리와 Pacelc표기법

CAP 정리

분산 시스템에서 3마리 토끼를 한번에 잡을 수 없다는 정리이다.

  1. Consistency (일관성) : 어떤 노드에 연결되었는지와는 무관하게 모든 클라이언트가 동시에 똑같은 데이터를 보는 것이 보장되는 능력
  2. Availability (가용성) : 하나 이상의 노드가 작동 중지된 경우에도 데이터를 요청하는 클라이언트가 응답을 받을 수 있는 것이 보장되는 능력
  3. Partition Tolerance (분할 용인) : 분산 시스템 내의 다수의 통신 단절 상태에도 불구하고 클러스터가 계속해서 작동함이 보장되는 능력

그런데 문제가 많다.

http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/

  1. Partition Tolerance에 대한 정의가 일관성이 없다는 문제가 있다.
  2. C, A, P가 분산 시스템 특징 중 동등한 선상에 있는 것처럼 느껴지지만 실은 P가 항상 선택되어야 한다
    1. P의 정의는 네트워크가 임의의 메시지 손실을 할 수 있음을 허용하느냐
    2. 절대로 장애가 날 수 없는 네트워크 구성은 불가능하기에 P를 포기하고 CA를 선택하는 것이 불가능
  3. CAP가 서술하는 상황 == 네트워크 장애 상황이라면 모순 없음

그래서 나온 것이 PARLEC 표기법.

PACELC 표기법

분산 시스템 디자이너의 선택에 도움을 주는 정리. CAP이 장애 상황일 때의 선택에 대해 서술, 정상 상황일 때의 선택에 대해 서술 불가 PARLEC은 그래서 장애 상황일 때와, 정상 상황일 때를 나누어 설명하자

파티션 (네트워크 장애) 상황일 때에는 A <-> C, 둘 중 하나를 선택해야 함.

중요도에 따른 구분 지연 시간 감소 (L) 일관성 유지 (C)
가용성 (A) PA/EL PA/EC
일관성 (C) PC/EL PC/EC
  • PA/EL : 정상 상황에서는 지연 시간 감소를 우선시하고 네트워크 장애 시 가용성을 우선시한다. (Dynamo, Cassandra)
  • PA/EC : 정상 상황에서는 일관성 유지를 우선시하고 네트워크 장애 시에는 가용성을 우선시한다. (MongoDB)
  • PC/EL : 정상 상황에서는 지연시간 감소를 우선시하고 네트워크 장애 시에는 일관성을 우선시한다. (PNUTS)
  • PC/EC : 정상 상황에서는 일관성 유지를 우선시하고 네트워크 장애 시에도 일관성을 우선시한다. (Megastore, VoltDB)

서비스에 필요한 특성에 맞는 DB를 선택할 때 기준이 될 수 있는 지표 같다.