CAP 이론은 분산 컴퓨팅 시스템에 바탕으로, 성능과 안정성 간의 tradeoff를 설명하는 이론이다.
먼저,CAP 이론을 설명하기 전! 각각 CAP 약자를 설명하겠다!
Consistency(일관성) : 모든 클라이언트가 같은 시간에 같은 데이터를 볼 수 있도록 하는 속성이다. 즉, 하나의 클라이언트가 데이터를 변경하면, 변경된 데이터를 다른 모든 클라이언트가 동일하게 볼 수 있어야한다.
Availability(가용성) : 죽지 않은 상태의 모든 노드는 클라이언트에게 항상 정상 처리 응답을 보애주어야 한다는 것을 의미한다. 모든 클라이언트 요청에 대해 언제나 응답할 수 있는 속성이다. 즉, 시스템이 언제든지 사용가능해야하고 작동해야한다. 시스템에 문제가 생겨 올바른 처리 응답을 하지 못한다면 그건 가용성을 보장 하지 못한다는 의미이다.
Partition Tolerance(분할 허용) : 네트워크 분할 또는 일시적인 통신 오류가 발생하더라도 시스템은 계속해서 작동할 수 있는 속성이다. 분할 허용은 시스템의 안정성과 관련있다. 이것은 마치 클러스터가 여러 대 동작하고 있을 때, 해당 클러스터 사이에 접속이 끊어져 서로 통신을 할 수 없는 상황에서도 시스템이 잘 동작해야 한다는 것이다.
CAP 이론은 이런 세가지 속성 중에 두 가지만 동시에 만족시킬 수 있다는 것이다.
즉 분할 허용성은 모든 분산 시스템에 필요한 속성인데, CP 또는 AP만 만족 할수 밖에 없다.
장점 : 데이터의 가용성이 높아져서 시스템이 언제나 사용이 가능하다. 데이터 변경이 한 노드에 일어날 경우 모든 노드에 반영되기 때문에, 데이터의 정합성과 신뢰성을 보장할 수 있다.
단점 : 네트워크 지연이 발생할 때 일관성을 유지하기 위해서 모든 노드간의 데이터 동기화 시간이 필요하여 성능에 영향이 미친다. 일부 노드가 장애가 발생할 경우엔 시스템 가용성이 떨어지거나 데이터 일관성에 문제가 발생할 수 있다.
주로 금융 업무, 거래 처리같은 일관성과 정확성이 중요한 서비스에 적합하다.
장점 : 데이터의 일관성을 유지하기 때문에, 데이터 정합성은 높다. 일관성을 유지하기 위해 노드간의 통신이 빈번하게 일어나므로 데이터 손실이 일어날 가능성이 작다.
단점 : 어떤 노드에서 문제가 발생하면, 해당 노드를 제외해야하므로 가용성이 떨어진다.데이터 일관성을 위해 추가적인 리소스가 필요므로 시스템 성능이 저하될 가능성이 크다.
장점 : 시스템이 언제나 가용하며, 장애 상황이 와도 시스템이 계속 작동이 가능하다. 네트워크 상황이 불안정해도 시스템이 작동 가능하다.
단점 : 데이터의 일관성이 보장되지 않으므로 일부 사용자는 다른 사용자와 다른 데이터를 볼 수 있다. 여러 노드 간의 데이터 동기화 시간이 필요하지 않으므로 빠른 응답 시간을 보장할 수 있지만, 데이터 일관성에는 손실이 발생 할 수 있다.
주로 AP는 SNS, 채팅, 게임 등 빠른 응답이 필요한 서비스에 사용한다.
결론 : CAP이란 "Consistency, Availability, Partition Tolerance"의 약어로, 분산 시스템에서 중요한 세 가지 특성을 나타내는 이론이다. 이 세 가지 특성은 분산 시스템의 설계와 운영에서 상호 배타적인 관계에 있다, 어떤 분산 시스템에서 두 개 이상의 특성을 모두 만족시키는 것은 불가능하다. 따라서 분산 시스템을 설계할 때는 이러한 특성을 적절히 조절하여 시스템의 요구사항에 맞게 선택해야 한다.
PACELC 이론은 분산 시스템에서 데이터 일관성과 가용성 간의 상충 관계를 설명하는 이론이다. 이 이론에 따르면, 분산 시스템은 다음과 같은 상황에서 선택을 해야 한다.
PACELC 이론은 이러한 상황에서, 분산 시스템이 어느 한 가지에 더 중점을 둬야 하는지를 선택하도록 안내한다. 예를 들어 P와 L에 더 중점을 둔다면, 시스템이 네트워크 분리 상황에서도 동작 가능하면서, 각 노드들 간의 통신 지연 시간을 최소화하는 방향으로 시스템을 설계할 수 있다.
CAP이론의 관점에서는 블록체인은 가용성과 분할 허용을 충족하는 AP 시스템이다.
PACELC이론의 관점에서는 블록체인은 지연시간과 가용성을 중시한 분산 시스템이다.