[MSA] CAP 이론
CAP 이론
CAP 이론은 분산 시스템에서 세가지 속성인 일관성(Consistency), 가용성(Availability), 분할허용성(Partition Tolerrance)를 설명하는 이론입니다.
CAP는 이 세가지 속성 중에서 한 시스템은 최대 두 가지만 동시에 만족시킬 수 있다고 주장합니다.
아래 예시를 보면 CA, CP, AP 이렇듯 한 시스템은 두가지의 속성만 만족이 가능합니다.
1. 일관성(Consistency):
모든 노드가 동일한 순간에 동일한 데이터를 보게 되는 것을 의미합니다. 일관성이 유지되는 시스템에서는 모든 노드가 동일한 데이터 값을 반환합니다. 이는 데이터를 쓰거나 갱신할 때 모든 복제본이 동시에 갱신되는 것을 의미합니다.
즉, 어떤 클라이언트가 데이터를 쓴 후에 다른 클라이언트가 동일한 데이터를 읽을 때 항상 가장 최근의 데이터를 읽을 수 있어야 합니다.
2. 가용성(Availability):
모든 요청이 성공 또는 실패로 완료되는 것을 의미합니다. 가용성이 높은 시스템에서는 모든 요청에 대해 어떤 응답이든 받을 수 있습니다. 따라서 시스템은 항상 사용 가능한 상태를 유지하려고 노력합니다.
즉, 어떤 노드가 실패하더라도 시스템은 여전히 클라이언트의 요청에 대한 응답을 제공할 수 있어야 합니다.
3. 분할 허용성(Partition Tolerance):
네트워크 분할이 발생하거나 일부 노드 간 통신이 실패할 때도 시스템이 계속해서 동작할 수 있는지를 나타냅니다.
분할 내성을 보장하기 위해서는 네트워크의 분할을 감지하고, 각 분할 내에서 독립적으로 동작할 수 있는 메커니즘이 필요합니다.
즉, 일시적인 네트워크 문제 또는 노드 간 통신 오류가 발생해도 시스템은 정상적으로 작동할 수 있어야 합니다.
MSA환경에서는 어떠한 속성을 중점을 둘 것인지 결정하는 데 굉장한 어려움이 동반될 것으로 생각됩니다.
일반적으로 생각해본다면 MSA환경에서는 P(Partition Tolerance)가 없다면 그 의미가 희석되므로 포함되어야 하고
그러면 일관성(Consistency)이나 가용성(Availability) 둘 중 하나를 포기해야 하는 상황을 맞이하게 되는데요.
중요도가 낮은 시스템을 구축하는 데에 있어서는 많은 고민 없이 선택할 수 있는 이슈지만,
금융권이나 기타 비즈니스 중요도가 높은 시스템에서는 어느 하나라도 없으면 안 될 기능으로 보입니다.
해외에서는 어떨지 정확히 모르겠지만, IT 입장에서 어떻게 이러한 이슈를 처리할지는 지금까지 풀리지 않은 고민인 것 같습니다.
시간이 생긴다면 아직까지 계속 고민하고 있는 분산 환경에서의 데이터 정합성을 유지하기 위한 노력에 대한 글을 써보도록 하겠습니다. :)