CAP 정리 (CAP ConsiderRations)

Updated on

목차:

CAP 정리

CAP 정리는 데이터 일관성(consistency), 가용성 (availability), 파티션 감내(partition tolerance)라는 세 가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다는 정리다.

데이터 일관성: 분산 시스템에 접속하는 모든 클라이언트는 어떤 노드에 접속했느냐에 관계없이 언제나 같은 데이터를 보게 되어야 한다. 요청에 따라 데이터의 동일함을 항상 보장한다. 쉽게 직역하면 여러 곳에서 접속해도 데이터 조회가 동일하다.

가용성: 분산 시스템에 접속하는 클라이언트는 일부 노드에 장애가 발생하더라도 항상 응답을 받을 수 있어야 한다. 즉 항상 클라이언트의 읽기 쓰기 요청이 항상 가능하다.

파티션 감내: 파티션된 노드 두 노드 사이에 통신 장애가 발생하였음을 의미한다. 파티션 감내는 네트워크에 파티션이 생기더라도 시스템은 계속 동작하여야 한다는 것을 뜻한다. 파티션 감내는 분할내성이라고도 함. 쉽게 직역하면 주식 거래사이트는 시스템이 다운되면 안되므로 파티션 감내를 우선적으로 한다.

CP,AP,CA 시스템

  • CP 시스템: 일관성과 파티션 감내를 지원하는 키-값 저장소. 가용성을 희생한다.

  • AP 시스템: 가용성과 파티션 감내를 지원하는 키-값 저장소. 데이터 일관성을 희생한다.

  • CA 시스템: 일관성과 가용성을 지원하는 키-값 저장소. 파티션 감내는 지원하지 않는다.

그러나 통상 네트워크 장애는 피할 수 없는 일로 여겨지므로,

분산 시스템은 반드시 파티션 문제를 감내할 수 있도록 설계되어야 한다.

그러므로 실세계에 CA 시스템은 존재하지 않는다.

즉 일관성만과 가용성만 갖춘 시스템은 존재하지 않는다.

아파치 데이터 스토리지 종류와

(CAP정리 사이의 관계는 어떻게 생각할 수 있을까?)

  • Apache 카산드라 : 일관성하고 거리가 멀다.
  • Apache HBASE or MONGODB : 가용성하고 거리가 멀다
  • MYSQL : 분할내성과 거리가 멀다