1 minute read

선형화 가능한 데이터베이스가 단일 리더 데이터베이스든, 다중 리더 데이터베이스에 상관없이 언제든지 네트워크 오류가 발생할 수 있다. 즉, 선형화 가능한 데이터베이스에서 발생하는 문제는 데이터 센터의 수에 상관없이 네트워크로 인해 발생할 수 있다. 만약 당신의 애플리케이션이 선형화 가능해야 한다면, 몇몇의 복제본이 연결 불가능한 상태가 되었을 때, 복제본이 작업 요청을 처리할 수 없다는 것을 인지해야 한다.

선형화 가능성을 포기한다면 네트워크 오류에도 안전하다. 이러한 트레이드-오프를 정리한 것이 CAP 이론이다.

CAP는 데이터베이스의 트레이드오프에 대한 논의를 시작하기 위해 정확한 정의 없이 경험에 기반하여 제안된 이론이다. 당시 많은 분산 데이터베이스는 공유 스토리지가 있는 머신 클러스터에서 선형화 가능한 의미를 제공하는 데 중점을 두었다. CAP는 데이터베이스 엔지니어가 대규모 웹 서비스를 구현하는 데 더 적합한 분산 shared- nothing 시스템의 더 넓은 설계 공간을 탐색하도록 장려했다.

도움이 되지 않는 CAP 정리

네트워크 파티션은 일종의 결함이기 때문에 사용자가 선택할 수 있는 것이 아니라 원하든 원하지 않든 발생한다. 네트워크가 올바르게 작동하는 경우 시스템은 일관성(선형화 가능성)과 총 가용성을 모두 제공할 수 있다. 네트워크 장애가 발생하면 선형화 가능성 또는 총 가용성 중 하나를 선택해야 한다. 따라서 CAP를 표현하는 더 좋은 방법은 일관성 또는 분할 시 가용성 중 하나를 선택하는 것이다. 신뢰성이 높은 네트워크일수록 이러한 선택을 덜 자주 해야 하지만, 어느 시점에서는 이러한 선택이 불가피하다.

CAP에 대한 논의에서 가용성이라는 용어에 대한 몇 가지 모순된 정의가 있다. 소위 “고가용성”(내결함성) 시스템이라고 불리는 많은 시스템은 실제로 가용성에 대한 CAP의 고유한 정의를 충족하지 못한다. 대체로 CAP에 대한 오해와 혼란이 많으며 시스템을 더 잘 이해하는 데 도움이 되지 않으므로 CAP는 피하는 것이 좋다.

공식적으로 정의된 CAP 정리는 범위가 매우 좁다. 이 정리는 하나의 일관성 모델(선형화 가능성)과 한 가지 종류의 결함(살아있지만 서로 연결이 끊어진 노드)만 고려한다. 네트워크 지연, 데드 노드 또는 기타 트레이드오프에 대해서는 언급하지 않는다. 따라서 CAP는 역사적으로 영향력이 있었지만, 시스템 설계에는 실질적인 가치가 거의 없다.