CAP 정리란? 브루어의 정리란?
- 개발 지식
- 2022. 12. 29.
CAP 정리란? 브루어의 정리란?
CAP 정리 또는 브루어(Brewer)의 정리는 다음과 같은 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템은 존재하지 않음을 증명한 정리이다.
- 일관성(Consistency) : 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다.
- 가용성(Availability) : 모든 요청이 성공 또는 실패 등의 결과를 반환활 수 있다.
- 파티션 허용(Partition tolerance) : 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다.
위의 세 가지 조건의 첫 글자를 따서 CAP정리라고 부른다.
여기서 분산 시스템은 동시에 둘 이상의 노드(물리적 또는 가상머신)에 데이터를 저장하는 네트워크를 뜻한다.
세 가지 조건에 대해 더 자세히 알아보자면 다음과 같다.
일관성(Consistency)
일관성이란 어떤 노드에 연결되었는지와 무관하게 모든 클라이언트가 동시에 동일한 데이터를 볼 수 있음을 의미한다. 이 조건을 만족하려면, 데이터가 하나의 노드에 기록될 때마다 이 데이터는 쓰기가 '성공'으로 간주되기 전에 시스템의 다른 모든 노드로 즉시 전달되거나 복제되어야 한다.
가용성(Availability)
가용성이란 하나 이상의 노드가 작동 중지된 경우에도 데이터를 요청하는 클라이언트가 응답을 받을 수 있음을 의미한다. 다르게 말하자면, 분산 시스템의 모든 작업 중인 노드는 예외 없이 모든 요청에 대해 유효한 응답을 반환한다는 뜻이다.
파티션 허용(Partition tolerence)
파티션이란 분산 시스템 내의 통신 단절, 즉 두 노드 간의 연결이 유실되거나 일시적으로 지연된 상태를 뜻한다. 파티션 허용이란 시스템의 노드 간에 다수의 통신 단절에도 불구하고 클러스터가 계속해서 동작해야 함을 의미한다.
CP, AP, CA 시스템
세 가지 조건을 모두 만족할 수는 없다고 했으므로, 현재 모든 분산 시스템은 셋 중 하나를 어느 정도 포기한 시스템이다.
이를 세 가지 유형으로 나눠볼 수 있다.
CP 시스템
CP 시스템은 가용성을 희생하면서 일관성과 파티션 허용을 제공한다. 두 노드 간에 파티션이 발생하면, 시스템은 파티션이 해결될 때까지 일관되지 않은 노드를 사용 불가능하게 해야 한다.
AP 시스템
AP 시스템은 일관성을 희생하면서 가용성과 파티션 허용을 제공한다. 파티션이 발생하면 모든 노드를 사용할 수 있지만, 파티션의 잘못된 끝에 있는 노드는 다른 데이터보다 이전 버전의 데이터를 반환활 수 있다. 파티션이 해결되면 AP 시스템은 일반적으로 시스템의 모든 불일치를 복구하기 위해 노드를 재동기화한다.
CA 시스템
CA 시스템은 모든 노드에서 일관성과 가용성을 제공한다. 그러나 시스템에 있는 두 노드 사이에 파티션이 있는 경우 이를 수행할 수 없으므로 결함 허용을 제공할 수 없다.
* 실제 세계에서는 파티션(통신 단절)은 피할 수 없는 문제이다. 따라서 CA 시스템은 이론적으로만 존재한다.
이러한 CAP 이론은 사실 모호한 부분이 많다. P에 대한 정의도 일관성이 부족하다.
이에 대해 다음 글을 참고해 보자.
참고
1. https://ko.wikipedia.org/wiki/CAP_%EC%A0%95%EB%A6%AC
2. https://www.ibm.com/kr-ko/cloud/learn/cap-theorem
'개발 지식' 카테고리의 다른 글
스웨거(Swagger) 사용법, 스웨거로 API 명세서 작성하기 (0) | 2023.03.14 |
---|---|
프레임워크(Framework)와 라이브러리(Library)의 차이 (0) | 2023.01.05 |
해시 테이블의 크기를 소수로 정하는 이유, hashCode() 에서 31을 쓰는 이유 (0) | 2022.11.03 |
이상적인 스레드 풀의 적정 크기에 대하여, 스레드 풀 크기 공식, 리틀의 법칙 (0) | 2022.10.27 |
클라우드 서비스 IaaS, PaaS, SaaS란? (0) | 2022.10.25 |