[Back-end] CAP 이론

Geun·2022년 3월 25일
0

Back-end

목록 보기
35/74
post-thumbnail

CAP 이론

CAP 이론은 Network로 연결된 분산된 데이터베이스 시스템은 일관성, 가용성, 분할 내구성의 3가지 특성 중 2가지 특성만 충족할 수 있으며, 3가지 모두를 충족할 수는 없다는 이론이다.

CAP은 분산시스템 설계에서 기술적인 선택을 돕는다.
분산시스템이 모든 특성을 만족시킬 수 없음을 인지하게 하고 선택지를 제공해준다.

3가지 특성

일관성 (Consistency)

일관성을 갖는 것은 모든 데이터를 요청할 때 응답으로 최신의 변경된 데이터를 리턴 혹은 실패를 리턴한다는 것이다.
모든 읽기에 대해 DB노드가 항상 동일한 데이터를 가지고 있어야 한다는 의미이다.

가용성 (Availability)

가용성은 모든 요청에 대해서 정상적인 응답을 한다는 것이다.
클러스터의 노드 일부에서 장애가 발생하더라도 READ와 WRITE 등의 동작은 항상 성공적으로 리턴되어야 한다는 것이다.

분할 내구성 (Partition Tolerance)

분할 내구성은 DB Node간의 통신장애가 발생하더라도 동작해야한다는 것이다.

Instance A와 B가 있다고 하자.
A와 B의 Instance간의 네트워크에 장애가 발생했다.
유저는 A DB에서 쿼리를 했다. Instance A는 B의 상태를 알지는 못하지만 A자체만으로 동작한다.
이것을 분할 내구성이라고 한다.

가용성 vs. 분할 내구성

가용성은 노드에서 장애가 발생하여 Down 되었을 때,
분할 내구성은 노드간의 통신이 정상적으로 이루어지지 않을 때의 개념이다.


실제 DB 비교

DB의 CAP이론을 기준으로 분류한 이미지이다. 현실과는 동떨어진 부분이 있다.

MySQL

MySQL은 그냥 사용했을 때엔 CA에 속한다.
main이 되는 master 노드가 있고 그 노드를 복제해 사용하는 slave가 있는 패러다임을 사용하기 때문이다.
이때 MySQL은 가용성(A)과 일관성(C)을 만족하게 된다.
설정하기에 따라 CP 또는 CA에 속할 수 있다.

MySQL은 cluster 설정을 지원한다.
cluster 설정을 하면 MySQL은 CP를 만족하는 시스템이 된다.
data를 유지할만한 cluster 노드가 존재하지 않으면 cluster는 종료될 것이기 때문이다.

DynamoDB

DynamoDB는 aws에서 지원하는 Key/Value의 NoSQL로 AP에 속한다.
DynamoDB는 key값을 hashing하고 또 이 값을 mod하여 맞는 서버에 저장해둔다.

DynamoDB에는 strongly consistent 설정을 할 수 있다.
이 설정을 하게 되면 DynamoDB는 CP로 변하게 된다.
이렇게 하면 가장 최신의 데이터를 반드시 리턴한다. 따라서 모든 노드를 찾기 때문에 가용성이 조금 떨어지게 된다.

한계

CAP 이론처럼 완벽한 CP, AP 시스템은 없고 대부분 CP와 AP 중간쯤 존재한다.

CAP 이론의 명확한 한계로 P(Partition Tolerance)에대한 명확한 정의가 부족하다.
이런 문제점을 극복하고자 PACELC 이론이 나오기도 했다.

CAP 이론은 참고로만 보자.


참고자료

https://sabarada.tistory.com/91
http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/

0개의 댓글