CAP 정리... 직방에서 면접볼 때 물어봤었는데 제대로 대답을 못했다.. (이런걸 물어볼 줄이야;)
주로 NoSQL 저장소와 같이 분산 시스템을 설계 할 때 등장하는 개념이다.
데이터 일관성, 가용성, 파티션 감내라는 세가지 요구 사항을 만족하는 분산 시스템을 설계하는 것은 불가능하다는 정리다.
뭐 하나 취하려면 뭔가 하나를 포기해야한다는.. 고런 원칙이다.
벡터 시계 기법을 이용해서 버저닝을 하고 충돌을 감지하는 처리가 신기방기했고 AWS의 다이나모 DB가 이 기법을 사용한다는 것도 무척 신기했다. (심지어 매우 많은 버전의 순서쌍 개수가 생겨도 충돌 해소 과정에서 효율성이 낮아지는 문제가 없었다는 것도... 역시 갓마존)
분산 환경에서 노드간의 가용성을 높이는 알고리즘으로는 주키퍼에서 사용하는 Raft 알고리즘이라는 것도 있음.
느낀 점