본문 바로가기
공부 및 정리/기타 정리

CAP 정리

by 스파이펭귄 2024. 3. 6.
728x90

분산 데이터베이스를 공부하다가 CAP 정리라는게 계속 나오는데 뭔가 익숙해지지가 않아서 한번 간단히라도 정리해 보려 한다.

 

CAP 정리

CAP 정리는 다음 3가지 조건을 모두 만족하는 분산 컴퓨터 시스템은 존재하지 않음을 증명한 정리라고 한다. 즉, 이 중 최대 2가지 속성만을 만족할 수 있다는 것이다.

  • Consistency(일관성): 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다.
  • Availability(가용성): 모든 요청이 성공 또는 실패의 결과를 반환할 수 있다.
  • Partition tolerance(분할 내성): 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템을 계속 쓸 수 있다.

위 3가지 조건의 앞 글자를 따서 CAP 정리라 부른다.

위 정리는 분산형 시스템에서 정의된 정리로 일반적인 분산형 시스템은 P는 필수적이기에 결국 Consistency와 Availability 중 어느 쪽을 집중하는 지로 나뉘게 될 것이다.

예를 들어 은행 시스템과 같이 일관성이 매우 중요한 분산 시스템에서는 CP 형태를 택하게 될 것이다.

 

위 3가지 속성에 대해서 조금 더 자세히 알아보자.

1. 일관성(Consistency)

일관성은 모든 노드가 동일한 순간에 같은 데이터를 보여주는 성질을 말한다. 즉, 시스템 내의 어떤 노드에 데이터 변경(예: 업데이트, 삽입, 삭제)이 발생하면, 변경이 모든 노드에 즉시 반영되어야 한다.

이는 사용자가 어느 노드에 접근하든지 간에 데이터의 최신 상태를 볼 수 있음을 보장한다. 이러한 일관성을 유지하기 위해서는 때때로 시스템의 일부 작업을 일시적으로 중단해야 할 수도 있다.

하지만 현실의 시스템은 모든 노드에 변경 내용을 즉각 반영하기는 사실상 불가능하다고 한다. 따라서 데이터의 동기화가 빨라서 사용상으로는 문제가 없게 끔 하는 것이 실제 서비스의 Consistency의 목표이다.

2. 가용성(Availability)

가용성은 모든 요청에 대한 응답을 받을 수 있는 것을 의미한다. 즉, 사용자가 시스템에 요청시 실패한 노드가 있더라도 시스템은 항상 어떤 형태로든 유효한 응답을 제공해야한다는 것이다. 가용성은 시스템이 일관성을 완전히 보장하지는 않더라도, 사용자가 시스템과 안정적으로 상호 작용할 수 있도록 보장해야하는 시스템에 중요하다.

3. 분할 내성(Partition Tolerance)

분할 내성은 시스템 내의 노드들이 서로 통신할 수 없는 네트워크 분할이 발생했을 때도 전체 시스템이 정상적으로 작동할 수 있음을 의미한다. 분산 시스템은 이러한 네트워크 오류를 견딜 수 있도록 설계해야 하며, 분할 내성이 있는 시스템은 네트워크 분할에도 어떤 형태로든 사용자의 요청을 처리할 수 있어야만 한다.

 

각 선택 별 특징

CA

네트워크 분할이 발생하지 않는 경우에만 가능한 형태로 실제 분산 시스템에서는 네트워크 분할을 피할 *수 없기에 *권장되지 않는 형태

CP

일관성과 분할 내성을 우선시해 일관된 정보를 모든이에게 제공하지만, 모든 요청에 대한 응답이 항상 보장되지는 않는다. 은행과 같이 모든이에게 일관된 데이터를 제공해야 하는 시스템에 적합하다. ex. Mongo DB: 여러 프라이머리 노드와 세컨더리 노드를 가지며 프라이머리 노드에 Binary JSON 형태로 데이터를 저장하며 비동기적으로 세컨더리 노드에 업데이트 해 복제본을 가진다. 이때 프라이머리 노드가 중단되었다면 세컨더리 노드 중 하나가 프라이머리 노드로 승격되며 이 과정에서 모든 쓰기 작업이 중단된다. 이는 CP로 볼 수 있다.

AP

가용성과 분할 내성을 우선시하여 데이터가 최신 상태가 아니더라도 모든 요청에 성공 또는 실패의 결과를 받을 수 있어 소셜 미디어와 같은 최신 정보 보다는 가용성이 중요한 시스템에 적합

ex. Cassandra: P2P 시스템으로 프라이머리 노드 없이 모드 노드가 읽기 쓰기 작업이 가능하며 복제본을 다른 노드에 저장시킨다. 이때 한 노드가 통신이 끊어진 경우 해당 노드는 다른 노드와 통신이 불가능해도, 여전히 읽기 쓰기 작업을 할 수 있다. 이는 데이터가 다시 동기화 전까지 다른 노드들과 맞지 않는 일관성이 깨진 상태를 의미하며, AP 시스템으로 분류된다.

나중에 더 읽어볼 아티클…

CAP Theorem, 오해와 진실

 

CAP Theorem, 오해와 진실

CAP Theorem은 분산시스템에서 일관성(Consistency), 가용성(Availability), 분할 용인(Partition tolerance)이라는 세 가지 조건을 모두 만족할 수 없다는 정리로, 세 가지 중 두 가지를 택하라는 것으로 많이 알

eincs.com

 

 

Reference

728x90

'공부 및 정리 > 기타 정리' 카테고리의 다른 글

[SQL] DELETE, TRUNCATE, DROP  (0) 2024.04.24
동기, 비동기, Blocking, Non-Blocking  (0) 2024.04.14
트랜잭션과 ACID  (0) 2024.03.05
스프링-MYSQL 프로젝트 EC2에 올리기  (2) 2024.02.06
Docker with WSL  (0) 2023.04.16