분산 시스템 설계와 구현에는 여러 가지 이론과 알고리즘, 데이터 구조가 중요한 역할을 한다. 이런 개념을 알아두면 분산 시스템 구성에 필요한 기본기를 쌓을 수 있다.
CAP 정리는 분산 시스템이 일관성, 가용성, 파티션 허용성을 동시에 취할 수 없다는 정리이다.
파티션이 단절되는 것은 피할 수가 없는 일이라 파티션 허용성을 배제할 수 없는데 이 때 일관성, 가용성 중에 하나를 선택하는 것이 중요하다.
이 선택은 애플리케이션 성격에 따라 다르며, 높은 가용성과 응답성이 중요하다면 AP, 정합성이 매우 중요하다면 CP를 선택하는 경우가 많다.
CAP 정리에서 좀 더 개념을 추가한 정리로, 분산 시스템은 파티션 단절이 항상 발생하지는 않는데 이 때 어떤 것을 선택할 것이냐에 대한 것이다.
파티션 단절이 발생하지 않으면 지연 시간과 일관성을 트레이드 오프할 수 있다. 이를 선택하는 것에 대한 내용이다.
분산 시스템에서는 서버 여러 대가 함께 작업을 수행하기 때문에 각 서버가 동일한 결정을 내리는 것이 중요하다. 이를 위해서는 여러 노드 간의 합의를 이루는 것이 필수이다. 이 합의를 도출하는데 사용하는 팩소스와 래프트 알고리즘을 알아보자.