CAP (New)
CAP (New)
CAP 이론 설명
- 분산 데이터 베이스 시스템은 일관성, 가용성, 분할 내구성 3가지를 모두 가질 수 없다는 이론
- 일관성(Consistency): DB는 오류가 아닌 이상 노드에 상관 없이 가장 최신의 데이터를 반환해야 함
- 가용성(Availability): DB는 특정 노드에서 오류가 나도, 모든 요청에 대해 정상 응답을 해야 함
- 분할 내구성(Partition Tolerance): DB 노드 간에 통신 장애가 발생해도 동작해야 함
- 보통 두 가지만 만족하는 CP 시스템, CA 시스템, AP 시스템 으로 구분
CA 시스템
- 일반적으로 분산 DB 시스템은 네트워크 시스템에 장애가 발생해도 동작해야 함
- 즉, P가 없는 CA 시스템은 분산 데이터베이스 시스템이 아님
- CA 시스템은 보통 하나의 노드에서 동작하는 monolithic한 DB 시스템을 의미
- MySQL과 같은 RDBMS 역시 일반적으로는 CA 시스템이나, master-slave 구조를 사용하는 경우 CP 시스템이 됨
CP 시스템
- 가용성을 포기한 분산 데이터베이스 시스템
- 대표적인 예로 MongoDB가 존재 (MongoDB 기준으로 설명)
- 마스터인 primary 노드와 이 데이터가 비동기적으로 복제 되는 여러 secondary 노드로 구성
- Primary에서는 데이터를 읽고 쓸 수 있고, secondary 노드는 읽기만 가능
- Primary로부터 가장 최신의 데이터를 받으므로, CP 시스템임
- Primary가 고장나면 secondary를 primary로 승격하게 되는데, 이 동안 사용 불가능 상태가 됨 (가용성 X)
AP 시스템
- 일관성을 포기한 분산 데이터베이스 시스템
- 대표적인 예로 Cassandra가 존재 (Cassandra 기준으로 설명)
- P2P 형식으로, primary 노드가 없고, 각 노드별로 읽고 쓰기 가능
- SPOF가 없음
- 데이터의 복제본을 다른 노드에 저장
- 한 노드가 다른 노드와 통신이 되지 않아도, 읽고 쓸 수 있음
- 그러나 가장 최신의 데이터를 받는다는 보장은 없음 (일관성 X)
- 이후 통신이 복구되면 데이터를 동기화해 일관성을 복구
한계 및 주의점
- 완벽한 CP 시스템을 구현하기 위해서는, 항상 최신의 응답을 반환해야 함
- 이를 위해 데이터가 변경된 경우 다른 모든 노드에 항상 복사되어야 함
- 이 과정에서 특정 노드에 문제가 있으면 성능적 희생이 발생 가능
- 완벽한 AP 시스템을 구현하기 위해서는, 고립된 노드에게 데이터를 요청해도 계속 데이터를 받기는 함
- 그러나 최신 데이터가 아닐 수 있음
- 이 노드와 연결된 사용자는 최신 데이터를 얻기 위해 요청을 보내는 상황이 발생 가능
- 이런 이유로 완벽하게 일관성과 가용성 중 하나만 선택할 수는 없고, 요구사항에 따른 타협이 필요
- 또한 네트워크 파티션이 없는 상황을 기술하지 못함
- 이 부분에 대해 보충하기 위해 PACELC 이론이 등장
References
- https://onduway.tistory.com/106
- https://sabarada.tistory.com/91
- http://happinessoncode.com/2017/07/29/cap-theorem-and-pacelc-theorem/
기타
2022-10-04 에 작성한 CAP Theorem 내용을 새로 작성 중. 추후 정리 예정