Core Concepts
분산 시스템은 일관성, 가용성, 분할 내성이라는 세 가지 속성 중 동시에 모두를 만족할 수 없다.
Abstract
CAP 정리는 분산 시스템과 데이터베이스의 핵심 개념이다. 이 정리는 분산 시스템이 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance)이라는 세 가지 속성 중 동시에 모두를 만족할 수 없다고 설명한다.
일관성은 모든 노드가 동일한 데이터를 동시에 볼 수 있음을 의미한다. 즉, 한 노드의 데이터가 변경되면 다른 모든 노드에서도 즉시 그 변경 사항이 반영된다. 가용성은 시스템이 일부 노드가 다운되거나 통신이 원활하지 않더라도 계속해서 응답을 제공할 수 있음을 의미한다. 분할 내성은 노드 간 통신이 신뢰할 수 없는 상황(메시지 손실 또는 지연)에서도 시스템이 계속 작동할 수 있음을 의미한다.
CAP 정리는 분산 시스템 설계 시 이러한 세 가지 속성 간의 트레이드오프를 이해하는 데 도움을 준다. 예를 들어, 가장 최신 데이터를 읽을 수 있는 일관성(Consistency)과 네트워크 장애에도 계속 작동하는 분할 내성(Partition Tolerance)을 모두 만족시키려면 가용성(Availability)을 포기해야 할 수 있다.
실제 애플리케이션에서는 네트워크 분할이 일반적으로 발생하므로, 시스템은 분할 내성을 가져야 한다. 이에 따라 일관성과 가용성 중 하나를 선택해야 하는 상황이 발생한다. 가용성을 선택하면 일부 데이터 불일치를 허용해야 하고, 일관성을 선택하면 가용성이 저하될 수 있다.
다양한 데이터베이스는 CAP 정리의 세 가지 속성 중 서로 다른 조합을 선택하여 설계되어 있다. 예를 들어 MongoDB는 CP(Consistent and Partition-Tolerant) 데이터베이스이고, Cassandra는 AP(Available and Partition-Tolerant) 데이터베이스이다.
그러나 CAP 정리는 단순화된 모델이며, 실제 시스템 설계에서는 지연 시간과 같은 다른 요소들도 고려해야 한다. 따라서 데이터베이스 선택 시 CAP 정리 외에도 사용 사례, 데이터 특성, 애플리케이션 요구사항 등 다양한 요소를 종합적으로 고려해야 한다.
Stats
분산 시스템은 일관성, 가용성, 분할 내성 중 동시에 모두를 만족할 수 없다.
네트워크 분할은 실제 애플리케이션에서 일반적으로 발생한다.
MongoDB는 CP(Consistent and Partition-Tolerant) 데이터베이스이고, Cassandra는 AP(Available and Partition-Tolerant) 데이터베이스이다.
Quotes
"분산 시스템은 일관성, 가용성, 분할 내성 중 동시에 모두를 만족할 수 없다."
"네트워크 분할은 실제 애플리케이션에서 일반적으로 발생한다."
"MongoDB는 CP(Consistent and Partition-Tolerant) 데이터베이스이고, Cassandra는 AP(Available and Partition-Tolerant) 데이터베이스이다."