contents

CAP 이론은 컴퓨터 과학자 에릭 브루어(Eric Brewer)가 처음 발표하여 브루어의 정리라고도 알려져 있으며, 분산 시스템 설계의 기본 원칙입니다. 이 이론은 어떤 분산 데이터 저장소든 다음 세 가지 보장 사항 중 최대 두 가지만을 제공할 수 있다고 말합니다.

이는 분산 시스템을 설계할 때 반드시 트레이드오프(trade-off)를 해야 함을 의미합니다. 각 구성 요소와 트레이드오프에 대해 자세히 살펴보겠습니다.


세 가지 보장 사항

1. 일관성 (Consistency) 🔗

일관성은 모든 읽기 요청이 가장 최근의 쓰기 결과를 받거나 오류를 받는 것을 의미합니다. 일관성 있는 시스템에서는 모든 노드가 동시에 동일한 데이터를 봅니다. 시스템에 데이터를 쓰면, 이후 그 데이터에 대한 모든 요청은 새로운 값을 반환합니다.

2. 가용성 (Availability) ✅

가용성은 모든 요청이 (오류가 아닌) 응답을 받는 것을 의미하지만, 그 응답이 가장 최근의 쓰기 결과를 포함한다는 보장은 없습니다. 가용성이 높은 시스템에서는 일부 노드가 다운되더라도 클라이언트가 요청을 보내면 항상 응답을 받습니다.

3. 파티션 허용성 (Partition Tolerance)

파티션 허용성은 노드 간 네트워크에 의해 임의의 수의 메시지가 손실되거나 지연되더라도 시스템이 계속 작동하는 것을 의미합니다. 간단히 말해, 서버들을 연결하는 네트워크가 끊어지더라도("네트워크 파티션") 시스템은 작동해야 합니다.


핵심 트레이드오프: 왜 세 가지 모두를 가질 수 없는가 ⚖️

둘 이상의 컴퓨터에서 실행되는 실제 분산 시스템에서는 네트워크 장애가 필연적입니다. 이는 파티션 허용성(P)은 선택이 아니라 필수 요구사항임을 의미합니다. 파티션 허용성이 없는 시스템은 네트워크에 작은 결함이 생기는 순간 완전히 실패할 것입니다.

따라서 CAP 이론의 실제 트레이드오프는 항상 네트워크 파티션이 발생했을 때 일관성(C)가용성(A) 사이에서 이루어집니다.

스스로에게 이렇게 물어야 합니다: "내 시스템의 노드들이 서로 통신할 수 없을 때, 그들은 무엇을 해야 하는가?"

시나리오 1: 일관성과 파티션 허용성 선택 (CP)

CP 시스템은 불일치를 방지하기 위해 가용성을 희생하기로 선택합니다.

시나리오 2: 가용성과 파티션 허용성 선택 (AP)

AP 시스템은 가용성을 보장하기 위해 일관성을 희생하기로 선택합니다.

CA는 어떤가?

CA(일관성 및 가용성) 시스템은 어떤 네트워크 파티션도 허용할 수 없는 이론적인 시스템입니다. 이는 단일 서버 데이터베이스와 같은 비분산 시스템에서만 가능합니다. CAP 이론은 분산 시스템에 적용되므로, CA 케이스는 일반적으로 현대적이고 확장 가능한 아키텍처에서 실용적인 선택으로 간주되지 않습니다.

결론적으로, CAP 이론은 설계자들이 피할 수 없는 네트워크 장애에 직면했을 때 일관성과 가용성 사이에서 중요한 트레이드오프를 하도록 강제하는 분산 시스템의 기본 원칙입니다. CP 시스템과 AP 시스템 사이의 선택은 전적으로 구축하려는 애플리케이션의 특정 요구사항에 따라 달라집니다.

references