CAP 정리

Gunjoo Ahn·2022년 8월 21일
0

CAP

분산 시스템에서 일관성(Consistency), 가용성(Availability), 분할 용인(Partition tolerance, 네트워크 장애로 인해 시스템끼리 통신하지 못해 분할됐다는 의미)이라는 세 가지 조건을 모두 만족할 수 없다는 정리이다. 따라서 분산 시스템을 설계할 때, 세 가지 중 한 가지를 포기해야한다는 것이다.

일관성

모든 클라이언트는 접속한 노드에 상관없이 일관된 데이터를 조회해야 한다.

가용성

일부 노드 장애가 있어도 항상 응답을 받을 수 있어야 한다.

분할 용인

노드간 네트워크가 임의의 메시지 손실을 하는 것을 허용한다. 네트워크 가끔 장애가 나는 것을 허용한다는 것이다.

CAP이론에 따르면 위 세 가지 중 한 가지는 포기해야 하는데, 문제는 분할 용인은 포기할 수가 없다. 현실 세계의 네트워크는 항상 장애가 발생하기 때문이다. 따라서 결국 CAP 이론은 분산시스템에서 네트워크 장애 상황(P)일 때 일관성(C)과 가용성(A) 중 하나를 선택할 수 있다는 것이다.

이와 같이 CAP가 장애 상황만을 다루고 있기에, 정상 상황일 경우를 간과하고 있어 정상 상황에 대해서도 서술하는 PACELC이 등장했다.

PACELC


if there is a partition (P) how does the system tradeoff between availability and consistency (A and C); else (E) when the system is running as normal in the absence of partitions, how does the system tradeoff between latency (L) and consistency (C)?

파티션 상황(P)일 때는 가용성(A)과 일관성(C)중에 하나를 선택하고, 정상 상황(E)일 때는 지연 시간(L)과 일관성(C)중에 하나를 선택하는 것이다.

Reference

http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/
https://azderica.github.io/00-db-cap/

profile
Backend Developer

0개의 댓글