본문 바로가기
Database

[Database] CAP 이론

by 가드 2022. 11. 14.
728x90

CAP이론은 많은 책이나 블로그에서 언급되는 내용인데 정의된 내용은 동일하다. 분산 데이터 저장소 환경은 일관성(Consistency), 가용성(Availability), 분할 내구성(Partitioning) 세 가지의 특성을 가지고 있는데 모든 특성을 만족할 수 없음을 인지하고 이중 두 가지 특성만 만족하는 선택지를 제공해주는 이론이다.

 

cap

일관성 (Consistency)

모든 클라이언트는 동시에 동일한 데이터를 볼 수 있어야 한다. 노드에서 쓰기 동작이 완료된 후에는 마지막으로 쓰인 데이터를 모든 노드들이 동일하게 제공해주어야 한다는 의미이다. 

 

가용성 (Availability)

특정 노드가 장애로 인해 동작 중지가 되어도 서비스가 가능하도록 데이터를 제공해야 한다. 분산 시스템에서는 운영 중인 모든 노드들은 예외 없이 모든 요청에 대해서 응답을 제공해야 한다. 클라이언트에서 요청에 대한 응답을 보낼 수 없다면 가용성이 보장되지 않는 것이다.

 

분할 허용성 (Partition-Tolerance)

노드 간의 네트워크 접속이 단절되어 서로 통신할 수 없는 사황에서도 정상적인 서비스를 유지해야 한다는 것이다.

 

위의 그림에서 일관성(Consistency)과 가용성(Availability)이 조합되면 CA, 가용성(Availability)과 분할 허용성(Partition-Tolerance)이 조합되면 AP, 일관성(Consistency)과 분할 허용성(Partition-Tolerance) 조합되어 AP가 된다. 이 모든 속성을 다 포함한 시스템은 존재할 수 없다는 이론이 CAP이다.

 

흔히 사용되어지는 관계형 데이터베이스를 예를 들면 CA에 해당된다. 일관성과 가용성은 보장하지만 분할 허용성은 보장하지 않는다.

Main DB인 Master 노드가 있고 Master 노드의 데이터를 복제하는 Slave 구조를 사용하기 때문이다. 이때 Clustering 설정을 하면 CP에 만족되는 시스템이 되기도 한다. 데이터 유지를 할 수 없는 Cluster 노드가 존재하지 않으면 종료될 것이다.

 

NoSql 데이터베이스를는 AP에 해당된다. 가용성과 분할 허용성은 보장하지만 일관성은 보장하지 않는다. 대용량의 분산 시스템을 구축하는 데에 있어서는 CP보다 AP가 맞다. 분산 시스템이 클수록 쓰기 작업이 수행된 데이터가 일관성을 맞추기에는 긴 시간 동안 Lock이 걸리게 되는 이유가 있다.

 

CAP 이론에 대해서 여기저기 돌아다니며 글들을 읽었는데 CAP 이론에 대한 반박론도 있고 CAP에 대한 명확한 정의가 부족하다며 보안돼서 나온 이론인 PACELC도 있다.

참으로 어렵다 어려워...

 

 

 

300x250

댓글