CAP 정리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
CAP 정리는 분산 시스템에서 데이터 일관성(Consistency), 가용성(Availability), 분할 내성(Partition-tolerance) 세 가지 속성 중 동시에 두 가지만 만족할 수 있다는 이론이다. 분산 시스템은 네트워크 분할을 허용해야 하므로, 분할 상황에서 일관성 또는 가용성 중 하나를 선택해야 한다. CAP 정리는 1998년 에릭 브루어가 처음 제시했으며, 2002년 세스 길버트와 낸시 린치에 의해 정리로 증명되었다. PACELC 정리는 CAP 정리를 기반으로 하며, 분할이 없더라도 지연 시간과 일관성 사이에 상충 관계가 있다고 설명한다.
더 읽어볼만한 페이지
CAP 정리 | |
---|---|
CAP 정리 | |
![]() | |
다른 이름 | Brewer's theorem (브루어 정리) |
개요 | |
문제 영역 | 분산 컴퓨팅 시스템 디자인 트레이드오프 |
약어 | |
C | Consistency (일관성) |
A | Availability (가용성) |
P | Partition tolerance (분할 내성) |
내용 | |
설명 | 네트워크 분할 상황에서 일관성과 가용성 중 하나를 선택해야 함 |
종류 | |
CA | 단일 시스템에서 일관성 및 가용성 보장 |
CP | 일관성 및 분할 내성 보장 |
AP | 가용성 및 분할 내성 보장 |
2. 정의
분산 시스템은 네트워크 장애로부터 안전하지 않으므로, 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 일관성을 가용성보다 우선시하면, 네트워크 분할로 인해 특정 정보가 최신 상태로 유지될 수 없다고 판단될 경우 시스템은 오류를 반환하거나 시간 초과를 발생시킨다. 가용성을 일관성보다 우선시하면, 시스템은 항상 쿼리를 처리하고 네트워크 분할로 인해 최신 상태를 보장할 수 없더라도 가장 최신의 사용 가능한 정보 버전을 반환하려 시도한다.
분할이 없는 경우에는 가용성과 일관성 모두를 만족시킬 수 있다.[8]
전통적인 ACID 보장을 염두에 두고 설계된 RDBMS와 같은 데이터베이스 시스템은 가용성보다 일관성을 선택하는 반면, 예를 들어 NoSQL 운동에서 흔히 볼 수 있는 BASE 철학을 기반으로 설계된 시스템은 일관성보다 가용성을 선택한다.[9]
노드 간 데이터 복제 시, 동시에 다음 세 가지 보장을 제공할 수 없다.[15][16]
- 일관성 ('''C'''onsistency)
- 모든 데이터 읽기에서 최신 쓰기 데이터 또는 오류 중 하나를 받는다.
- 가용성 ('''A'''vailability)
- 노드 장애로 인해 생존 노드의 기능성이 손상되지 않는다. 즉, 다운되지 않은 노드가 항상 응답을 반환한다. 단일 장애점이 존재하지 않아야 한다.
- 분할 내성 ('''P'''artition-tolerance)
- 시스템은 임의의 통신 장애 등으로 인한 메시지 손실에 대해 지속적으로 동작한다. 통신 가능한 서버가 여러 그룹으로 분할되는 경우 (네트워크 분할)를 의미하며, 하나의 허브에 모든 서버가 연결되어 있는 경우에는 발생하지 않는다. 하지만, 그러한 네트워크 설계는 단일 장애점을 가지게 되어 가용성이 성립하지 않는다. RDB에서는 아예 데이터베이스를 분할하지 않으므로 이러한 장애와는 무관하다.
이 정리에 따르면, 분산 시스템은 이 세 가지 보장 중 동시에 두 가지를 만족할 수 있지만, 동시에 모두 만족할 수는 없다.[17] 단일 장애점이 있다면, 네트워크 분할이 발생했을 때 시스템이 갈라져도, 그 지점을 기준으로 일관된 응답을 할 수 있다 (분할 내성 + 일관성). 하지만 가용성이 성립하지 않게 된다.
3. 역사
캘리포니아 대학교 버클리의 컴퓨터 과학자 에릭 브루어는 1998년 가을에 이 정리를 처음 제시했다.[9] 1999년에는 CAP 원칙으로 발표되었고,[10] 2000년 분산 컴퓨팅 원리 심포지엄(PODC)에서 추측으로 제시되었다.[11] 2002년 MIT의 세스 길버트와 낸시 린치는 브루어의 추측에 대한 공식적인 증명을 발표하여 정리로 확립했다.[1]
2012년, 브루어는 "셋 중 둘" 개념이 오해를 불러일으킬 수 있다는 점을 포함하여 자신의 입장을 명확히 했다. 시스템 설계자는 분할 상황에서 일관성 또는 가용성 중 하나만 희생하면 되며, 분할 관리 및 복구 기술이 존재하기 때문이다. 브루어는 CAP 정리에서 사용되는 일관성의 정의가 ACID에서 사용되는 정의와 다르다는 점도 지적했다.[9][12]
1996년 비르만과 프리드먼은 분산 시스템에서 일관성과 가용성 사이의 상충 관계를 나타내는 유사한 정리를 발표했다.[13] 비르만과 프리드먼의 결과는 이 하한을 비가환 연산으로 제한했다.
2010년에는 PACELC 정리가[8] CAP를 기반으로 소개되었으며, 분할이 없더라도 지연 시간과 일관성 사이에 또 다른 상충 관계가 있다고 명시한다.
4. 분산 시스템의 선택: CAP 속성 조합
분산 시스템은 네트워크 장애로부터 안전하지 않으므로, 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. CAP 정리에 따르면, 분산 시스템은 다음 세 가지 보장 중 동시에 두 가지를 만족할 수 있지만, 모두 만족할 수는 없다.[17]
- 일관성 ('''C'''onsistency): 모든 데이터 읽기에서 최신 쓰기 데이터 또는 오류 중 하나를 받는다.
- 가용성 ('''A'''vailability): 노드 장애로 인해 생존 노드의 기능성이 손상되지 않는다. 즉, 다운되지 않은 노드가 항상 응답을 반환한다. 단일 장애점이 존재하지 않아야 한다.
- 분할 내성 ('''P'''artition-tolerance): 시스템은 임의의 통신 장애 등으로 인한 메시지 손실에 대해 지속적으로 동작한다. 통신 가능한 서버가 여러 그룹으로 분할되는 경우(네트워크 분할)를 의미하며, 하나의 허브에 모든 서버가 연결되어 있는 경우에는 발생하지 않는다. 하지만, 그러한 네트워크 설계는 단일 장애점을 가지게 되어 가용성이 성립하지 않는다. RDB에서는 아예 데이터베이스를 분할하지 않으므로 이러한 장애와는 무관하다.
분할이 없는 경우에는 가용성과 일관성 모두를 만족시킬 수 있다.[8]
일부 클라우드 서비스는 강력한 일관성을 선택하지만, 네트워크 분할 빈도를 최소화하기 위해 전 세계적인 사설 광섬유 네트워크와 GPS 시계 동기화를 사용한다. 일관성을 유지하는 공유 없음 아키텍처는 지리적 샤딩과 같은 기술을 사용하여 쿼리된 노드가 소유한 데이터의 가용성을 유지할 수 있지만, 네트워크 분할 동안 임의의 요청에 대해서는 사용할 수 없다.
4. 1. 일관성 + 가용성 (CP)
분산 시스템은 네트워크 장애로부터 안전하지 않으므로, 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 일관성을 가용성보다 우선시하면, 네트워크 분할로 인해 특정 정보가 최신 상태로 유지될 수 없다고 판단될 경우 시스템은 오류를 반환하거나 시간 초과를 발생시킨다.일반적인 관계형 데이터베이스, LDAP, NFS 등은 일관성과 가용성만 충족한다. 2단계 커밋이 이에 해당한다. 네트워크 분단이 발생한 경우에는 한쪽을 포기한다. 아마존 관계형 데이터베이스 서비스의 Multi-AZ 배포도 이에 해당한다. 단일 장애점이 있다면, 네트워크 분할이 발생했을 때 시스템이 갈라져도, 그 지점을 기준으로 일관된 응답을 할 수 있지만(분할 내성 + 일관성), 가용성이 성립하지 않게 된다.
4. 2. 가용성 + 분할 내성 (AP)
분산 시스템은 네트워크 장애로부터 안전하지 않으므로, 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 가용성을 일관성보다 우선시하면, 시스템은 항상 쿼리를 처리하고 네트워크 분할로 인해 최신 상태를 보장할 수 없더라도 가장 최신의 사용 가능한 정보 버전을 반환하려 시도한다.분할이 없는 경우에는 가용성과 일관성 모두를 만족시킬 수 있다.[8]
예를 들어 NoSQL 운동에서 흔히 볼 수 있는 BASE 철학을 기반으로 설계된 시스템은 일관성보다 가용성을 선택한다.[9]
가용성 + 분할 내성의 경우에도, 일정 시간 이내에 일관성을 성립시키는 시스템(결과적 일관성)을 구축하는 것이 가능하다. Amazon SimpleDB나 Apache Cassandra 등이 이 방식을 채택하고 있다. DNS나 HTTP 캐시 등도 해당된다. 3가지 방식 중에서는 이 방식이 가장 장애에 강하다.
4. 3. 일관성 + 분할 내성 (CP)
분산 시스템은 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 일관성을 가용성보다 우선시하면, 네트워크 분할로 인해 특정 정보가 최신 상태로 유지될 수 없다고 판단될 경우 시스템은 오류를 반환하거나 시간 초과를 발생시킨다.전통적인 ACID를 보장하는 RDBMS과 같은 데이터베이스 시스템은 가용성보다 일관성을 선택한다.[9]
CAP 정리에 따르면 분산 시스템은 일관성, 가용성, 분할 내성 이 세 가지 보장 중 동시에 두 가지를 만족할 수 있지만, 동시에 모두 만족할 수는 없다.[17] 단일 장애점이 있다면, 네트워크 분할이 발생했을 때 시스템이 갈라져도 그 지점을 기준으로 일관된 응답을 할 수 있지만(분할 내성 + 일관성), 가용성이 성립하지 않게 된다.
HBase 등이 이 방식을 채택하고 있다. HBase의 경우, 단일 실패 지점이 있으며, 네트워크 분단에 대한 일관성을 유지하는 메커니즘이 불완전하기 때문에 가용성이 희생되고 있다.
5. 추가적인 고려 사항
분산 시스템은 네트워크 장애에 취약하므로, 일반적으로 네트워크 분할을 고려해야 한다.[6][7] 네트워크 분할 상황에서는 가용성과 일관성 중 하나를 선택해야 한다.
- 일관성 중시: 정보가 최신 상태가 아니면 오류를 반환하거나 응답을 지연시킨다.
- 가용성 중시: 항상 요청을 처리하지만, 최신 정보가 아닐 수 있다.
분할이 없을 때는 가용성과 일관성을 모두 만족할 수 있다.[8] 전통적인 RDBMS은 ACID 특성에 따라 가용성보다 일관성을, NoSQL은 BASE 철학에 따라 일관성보다 가용성을 우선시하는 경향이 있다.[9]
2012년에 에릭 브루어는 "셋 중 둘"이라는 개념이 오해를 일으킬 수 있다고 지적했다. 분할 상황에서만 일관성 또는 가용성 중 하나를 희생하면 되며, 분할 관리 및 복구 기술도 존재하기 때문이다. 또한 CAP 정리의 일관성은 ACID의 일관성과는 다른 의미임을 강조했다.[9][12]
5. 1. PACELC 정리
PACELC 정리는 CAP 정리를 확장한 것으로, 분산 시스템에서 네트워크 분할(P)이 발생하면 가용성(A)과 일관성(C) 사이에서 선택해야 하고, 그렇지 않은 경우(E)에도 지연 시간(L)과 일관성(C) 사이의 상충 관계가 존재한다는 것을 나타낸다.[8] 즉, PACELC는 분할이 없을 때도 성능(지연 시간)과 일관성 사이의 균형을 고려해야 함을 강조한다.일부 전문가들은 CAP 정리가 사물 인터넷(IoT) 및 모바일 앱과 같이 간헐적으로 연결이 끊기는 환경에서 특히 유용하다고 주장한다. 이러한 환경에서는 장치가 정전이나 엘리베이터와 같은 제한된 공간에 있을 때와 같이 물리적인 조건으로 인해 네트워크 분할이 발생할 수 있다. 클라우드 컴퓨팅과 같은 분산 시스템의 경우, 네트워크 분할이 없더라도 지연 시간 및 일관성 간의 상충 관계를 고려하는 PACELC 정리를 사용하는 것이 더 적절하다.[14]
5. 2. 네트워크 분할의 현실성
분산 시스템은 네트워크 장애로부터 안전하지 않으므로, 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 일관성을 가용성보다 우선시하면, 네트워크 분할로 인해 특정 정보가 최신 상태로 유지될 수 없다고 판단될 경우 시스템은 오류를 반환하거나 시간 초과를 발생시킨다. 가용성을 일관성보다 우선시하면, 시스템은 항상 쿼리를 처리하고 네트워크 분할로 인해 최신 상태를 보장할 수 없더라도 가장 최신의 사용 가능한 정보 버전을 반환하려 시도한다.분할이 없는 경우에는 가용성과 일관성 모두를 만족시킬 수 있다.[8]
전통적인 ACID 보장을 염두에 두고 설계된 RDBMS와 같은 데이터베이스 시스템은 가용성보다 일관성을 선택하는 반면, 예를 들어 NoSQL 운동에서 흔히 볼 수 있는 BASE 철학을 기반으로 설계된 시스템은 일관성보다 가용성을 선택한다.[9]
5. 3. 간헐적 연결 환경
분산 시스템은 네트워크 장애로부터 안전하지 않기 때문에 일반적으로 네트워크 분할을 허용해야 한다.[6][7] 분할이 발생하면 가용성 또는 일관성 중 하나를 선택해야 한다. 일관성을 가용성보다 우선시하면, 네트워크 분할로 인해 특정 정보가 최신 상태로 유지될 수 없다고 판단될 경우 시스템은 오류를 반환하거나 시간 초과를 발생시킨다. 가용성을 일관성보다 우선시하면, 시스템은 항상 쿼리를 처리하고 네트워크 분할로 인해 최신 상태를 보장할 수 없더라도 가장 최신의 사용 가능한 정보 버전을 반환하려 시도한다.분할이 없는 경우에는 가용성과 일관성 모두를 만족시킬 수 있다.[8]
전통적인 ACID 보장을 염두에 두고 설계된 RDBMS와 같은 데이터베이스 시스템은 가용성보다 일관성을 선택하는 반면, NoSQL 운동에서 흔히 볼 수 있는 BASE 철학을 기반으로 설계된 시스템은 일관성보다 가용성을 선택한다.[9]
마크 브루커와 같은 일부 전문가들은 CAP 정리가 사물 인터넷(IoT) 및 모바일 앱과 관련된 것과 같이 간헐적으로 연결된 환경에서 특히 관련성이 있다고 주장한다. 이러한 맥락에서 장치는 정전이나 엘리베이터와 같은 제한된 공간에 들어갈 때와 같이 어려운 물리적 조건으로 인해 분할될 수 있다.
참조
[1]
논문
Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services
Association for Computing Machinery (ACM)
[2]
웹사이트
Brewer's CAP Theorem
https://www.julianbr[...]
2009-01-11
[3]
웹사이트
Brewers CAP Theorem on distributed systems
https://www.royans.n[...]
2010-02-14
[4]
웹사이트
The confusing CAP and ACID wording
http://blog.thislong[...]
2019-02-01
[5]
서적
NoSQL For Dummies
For Dummies
[6]
보고서
A Critique of the CAP Theorem
https://www.reposito[...]
Apollo - University of Cambridge Repository
2019-11-24
[7]
웹사이트
Please stop calling databases CP or AP
https://martin.klepp[...]
2019-11-24
[8]
웹사이트
DBMS Musings: Problems with CAP, and Yahoo's little known NoSQL system
http://dbmsmusings.b[...]
2018-01-23
[9]
논문
CAP twelve years later: How the "rules" have changed
http://www.infoq.com[...]
Institute of Electrical and Electronics Engineers (IEEE)
[10]
학회발표
Harvest, Yield and Scalable Tolerant Systems
IEEE CS
[11]
웹사이트
Towards Robust Distributed Systems
http://www.cs.berkel[...]
[12]
서적
Cassandra: The Definitive Guide
https://www.oreilly.[...]
O'Reilly Media
2016-07-01
[13]
웹사이트
Trading Consistency for Availability in Distributed Systems
https://ecommons.cor[...]
1996-04-01
[14]
서적
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
O'Reilly Media
[15]
논문
Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services
http://dl.acm.org/ci[...]
[16]
웹사이트
Brewer's CAP Theorem
http://www.julianbro[...]
2010-03-02
[17]
웹사이트
Brewers CAP theorem on distributed systems
http://www.royans.ne[...]
[18]
웹사이트
Towards Robust Distributed Systems
http://www.cs.berkel[...]
[19]
웹사이트
Towards Robust Distributed Systems
http://www.cs.berkel[...]
[20]
논문
Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services
http://lpd.epfl.ch/s[...]
2008-09-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com