PACELC
서론
- CAP 정리를 확장한 개념으로 CAP 단점을 극복하기 위해 등장한 데이터베이스 이론
- CAP이 네트워크 파티션이 발생했을 때의 선택지(Partition vs Availability/Consistency) 만 다루는 반면, PACELC는 파티션이 없을 때의 상황까지 포함하여 시스템의 트레이드오프를 설명합니다.
- CAP 정리는 네트워크 파티션발생에서 일관성 가용성 2개의 특성을 가지고만 설명이 된다. 네트워크 파티션에서는 2개조합경우만 현실적으로 가능하다.
- 분산시스템에서 네트워크 파티션을 전제로 두어 설계한다는 정리이다.
- P가 발생했을때, 아닐때로 구분하여
- P가 발생했을때 가용성avability, 일관성consistency 사이에서 선택하는 것
- P가 발생하지 않을떄 지연성latency와 lossOfConsistency일관성손실사이에 두고 선택하는 것
- 용어는 PAC + ELC 를 합친 것
CAP 간단한 소개
- Consistency - 모든 동일한 요청에 대한 동일한 응답
- Availability - 시스템 장애시에도 데이터 접근가능해야함
- Partition Tolerance - 심지어 일부 노드가 장애시에도 시스템은 정상적으로 작동한다.
소개
PAC
- CAP이론의 약자를 뒤집음, 왜냐하면 CAP은 현실에서는 절대 불가능한 정리라는 의미로 뒤집었다.
- 순서를 뒤집은 이유는 P: Partition-Tolerance(분할허용내성) 상황에서 A : Avability를 선택할지, C: Consistency를 선택할지를 정하기 떄문이다.
- CAP이론은 CP, AP를 고르는 것에 대한 약어이다.
- 정리하자면, P에서 AP, CP 데이터베이스 결정하기라고 볼 수 있다.
ELC
- E에서 L, C에서 정하기라고 보면된다.
- if(Partition) { 데이터베이스 시스템의 A, C 수준을 결정 } else { L, C수준을 결정 }
- L: Latency, C: Consistency, E: not Partition
- 파티션발생하지 않는 정상상황에서 Latency와 Consistency중에 결정한다.
한줄로 설명
PACELC =
If Partition occurs (P),
then choose between Availability (A) or Consistency (C);
Else (E), even when no Partition,
choose between Latency (L) or Consistency (C);
Latency vs Consistency Trade-Off
- 만약 시스템이 완벽한 Consistency를 보장한다면 시스템은 Latency가 증가된다. 그 결과 네트워크 파티션이 발생해야만 시스템 정상 작동할 수 있다. 네트워크 파티션하지 않으면 가용성을 보장할 수 없다.
- 파티션이 없다면 consistency와 availability 모두 보장가능하다. PACELC는 시스템이 데이터를 어떤방식으로 복제하는지에 대해 설명한다.
- 데이터 저장이 원자적으로 일관성을 보장된다면, 읽기, 쓰기지연은 적어도 메시지지연밖에 없을겻이다. 하지만 실제로는 대부분의시슽메에서는 요청응답을 보장하기 위한 타임딜레이보다는 명료한 지식을 필요로 한다.
- 일관성보장을위한 읽기 쓰기 메시지 지연을 요구한다.
- 지연성이 낮은 시스템에서는 지연성을 낮추기위해서 대조적으로 일관성은 낮다.
Trade-Off 원칙
- 일관성이 보장될수록, 시스템지연시간(Latency)는 증가
- 그 이유는 모든 노드에 쓰기, 읽기 확인 메시지 전달이 완료되어야만 클라이언트에 응답할 수 있기 때문이다.
- 반대로 지연을 줄이기 위해 일부 일관성을 포기한다.
상세설명
- 시스템이 강한일관성을 보장하려면, 데이터변경시 모든 복제 노드에 데이터를 동기적으로 전파,응답을 기다려야 한다.
- 이러면 쓰기 읽기 요청 지연(시간) 증가
- 분산시스템에서 네트워크 지연이나 장애가 전체 지연을 의미하므로, 결국에 시스템체지연시간이 늘어나게 된다는 것
- 따라서 지연성(지연시간증가)를 낮추고자 하는 시스템은 일반적으로 일관성 수준을 낮춘다.
- 이것이 Eventually Consistency시스템
- 또한 일부 시스템은 쓰기에는 강한 일관성을 보장하지만 읽기 시점에서 일관성 선택권을 부여해 사용자 선택을 가능하게 만드는 경우도 있다.
- 이것은 Cassandra의 Tunable Consistency

PACELC 조합(4가지)
-
PA - EL : 일관성보다는 가용성과 지연성을 우선
- 네트워크 분할 상황에서는 가용성을 우선
- 평상시에는 지연시간(속도)를 우선하여 일관성보다는 응답속도를 중시
- 얘: Amazon DynamoDB, Casandra
-
PA - EC : 파티션에서 가용성을 보장, 정상상황에서는 일관성 보장
- 분할 시에는 가용성을 보장하지만
- 평상시에는 일관성을 보장한다.
- 예 : 일부 Eventually Consistent 시스템
-
PC - EL : 파티션에서 일관성을 보장, 정상상황에서는 지연성 보장
- 분할 시에는 일관성을 유지
- 정상상황에서는 지연성을 줄이기 위해 일관성은 일부 표기
-
PC - EC : 항상 일관성을 중시
- 분할 여부와 상관없이 강한 일관성을 보장
- 지연시간늘어나도 감수한다.
- 예 : HBase, Zookeeper
정리
- CAP : 분할 상황에서 가용성 vs 일관성
- PACELC : 분할시, 정상상황에도 지연성(지연시간단축) vs 일관성 트레이드오프를 고려
- 시스템설계자는 여러 조합에서 비즈니스 요구사항에 적절한 선택을 해야한다. (성능, 정확성, 실시간성)