https://johngrib.github.io/wiki/CAP-theorem/
https://en.wikipedia.org/wiki/CAP_theorem
https://ohjongsung.io/2019/05/01/cap-이론과-pacelc-이론
CAP이론은 분산시스템에서 다음의 3가지를 모두 만족 시킬 수 없다는 이론이다.
- Consistency (일관성)
- 모든 노드들은 같은 시간에 동일한 항목에 대하여 같은 내용의 데이터를 사용자에게 보여준다.
- 모든 요청은 최신 데이터 또는 에러를 응답 받는다.
- Availability (가용성)
- 모든 사용자들이 읽기 및 쓰기가 가능해야 하며, 몇몇 노드의 장애 시에도 다른 노드에 영향을 미치면 안된다.
- 모든 요청은 정상 응답을 받는다.
- Partition tolerance (분할내성)
- 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있어야 한다.
- 노드간 통신이 실패하는 경우라도 시스템은 정상 동작 한다.

C+A
- 메시지 손실을 방지하는 강한 신뢰형 (Consensus Protocols)
- 일반적인 RDBMS
C+P
- 데이터 일관성 보다는 성능이 중요한 퍼포먼스형 (Enforced Consistency)
- HBase, MongoDB, Redis 등
A+P
- 일관성을 크게 필요로 하지 않는 서비스에 적합 (Eventual Consistency)
- Cassandra, CouchDB