CAP Theorem


## Brewer's Theorem
분산시스템 디자이너의 선택에 도움을 주는 정리다
- 일관성(**C**onsistency): 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다.
- 가용성(**A**vailability): 모든 요청이 성공 또는 실패 결과를 반환할 수 있다.
- 분할내성(**P**artition tolerance): 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다.
다음과 같은 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템이 존재하지 않음을 증명
정리 자체가 제대로 이해하기 어렵게 정의되어 있어서 이해하기가 쉽지 않다
애초에 CAP Theorem이 의도했던바는 명확하다. 절대로 장애가 없는 네트워크는 존재하지 않으며, 따라서 분산시스템에서 P는 무조건 인정하고 들어가야 한다는 것이다
따라서 네트워크가 단절되었을 때 시스템이 어떻게 동작할지 결정해야 하며, 이 때 C와 A를 모두 만족시키는건 불가능하므로 둘 중에 하나를 골라야 한다


### 한계
- 완벽한 CP, AP 시스템은 사용할 수 없다.
- 대부분 분산 시스템은 CP와 AP의 중간 어디쯤이다.
- 모든 분산 시스템이 파티션을 사용하진 않는다.
- 분산시스템에 대한 명확한 표현이 힘들다
그래서 나온게[PACELC Theorem](https://texonom.com/pacelc-theorem-4f66a34fc1404ae98ac6808c23e8f496) 


### math
> [CAP theorem](https://blog.seulgi.kim/2018/03/cap-theorem.html)

### usage
> [CAP Theorem, 오해와 진실](http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/)

> [Interview_Question_for_Beginner/Database at master · JaeYeopHan/Interview_Question_for_Beginner](https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#nosql)






