CAP 이론은 분산 시스템의 설계에서 중요한 세 가지 속성인 일관성(Consistency), 가용성(Availability), 파티션 내구성(Partition Tolerance)에 대한 관계를 설명하는 이론입니다.
이 이론은 2000년 에리크 브루어(Eric Brewer)에 의해 제안되었으며, 이후 "CAP 정리"로 알려지게 되었습니다.
다음은 각 속성에 대한 설명입니다.
모든 노드가 같은 시간에 동일한 데이터를 보장하는 속성입니다.
즉, 어떤 클라이언트가 데이터를 쓰면, 모든 클라이언트가 이 데이터를 읽을 때 같은 값을 읽게 됩니다.
일관성을 보장하려면 시스템 내의 모든 노드가 동기화되어야 하며, 쓰기 작업이 완료된 후에야 읽기가 가능해야 합니다.
예를 들어, 은행 시스템에서는 계좌 잔고를 업데이트할 때 일관성을 유지하는 것이 매우 중요합니다.
시스템이 항상 요청에 응답할 수 있는 능력을 의미합니다. 즉, 사용자가 요청을 보내면, 해당 요청에 대해 항상 유효한 응답을 제공해야 합니다.
가용성을 보장하려면 시스템의 일부 노드가 실패하더라도 다른 노드가 요청을 처리할 수 있어야 합니다.
예를 들어, 웹 서비스는 항상 사용자의 요청에 대한 응답을 제공해야 하므로 높은 가용성을 요구합니다.
네트워크 분할이 발생하더라도 시스템이 계속 정상적으로 동작할 수 있는 능력입니다.
즉, 노드 간의 통신이 불가능해져도 시스템은 작동을 계속해야 합니다.
분산 시스템에서는 네트워크 오류로 인해 노드 간의 연결이 끊어질 수 있으며, 이런 경우에도 시스템은 일관성이나 가용성 중 하나를 유지해야 합니다.
CAP 이론에 따르면, 분산 시스템에서 이 세 가지 속성을 동시에 완벽하게 만족할 수는 없습니다.
즉, 어떤 시스템이 일관성을 극대화하려고 하면 가용성이 저하될 수 있고, 반대로 가용성을 높이려면 일관성이 손상될 수 있습니다.
이를 통해 분산 시스템의 설계자는 다음과 같은 두 가지 속성을 선택해야 합니다
파티션이 발생하지 않는 상황에서 시스템은 모든 노드가 일관성을 유지하고 항상 요청에 응답할 수 있습니다.
네트워크 분할이 발생했을 때 일관성을 우선시하여 일부 요청은 실패할 수 있지만 데이터의 정확성을 보장합니다.
네트워크 분할이 발생했을 때 시스템은 항상 요청에 응답하지만, 일관성은 유지되지 않을 수 있습니다.
CAP 이론은 분산 시스템의 설계와 운영에서 매우 중요한 기준이 됩니다.
설계자는 시스템의 요구 사항에 따라 어떤 속성을 우선시할지를 결정해야 하며, 이를 통해 성능, 신뢰성 및 사용자 경험을 최적화할 수 있습니다.
예를 들어, 금융 서비스에서는 CP 시스템이 요구될 수 있지만, 소셜 미디어 플랫폼에서는 AP 시스템이 더 적합할 수 있습니다.