Overview
CAP이론은 분산 데이터베이스의 속성을 기술하는데 사용된다. CAP 이론을 이해하다 보면 분산시스템에서 발생 할 수 있는 일들과 이에 대한 대응을 하나하나 따져보게 되는데, 이점이 분산시스템이 가지고 있는 본질적인 성능에 관해 이해하는데 도움을 준다.
Consistency (C)— 어떤 시간에서의 읽기를 하더라도 가장 최근 쓰기된 데이터가 읽힌다
Availability (A)— 어떤 상황에서도 항상 reasonable 시간안에 reasonable한 응답을 한다
Partition Tolerance(P) — network partition 발생하더라도 계속 동작한다
간단한 AP, CP 시스템
CAP이론은 간단하게 분산시스템은 CAP에서 최대 2가지의 속성만 만족할 수 있다이지만, 좀더 생각해보면 C,A,P 속성들 각각을 "어느정도"로 만족시킬 것이냐에 따라 타 속성에 대한 tradeoff를 피하기 힘들다는 것을 의미한다. 가장 일반적인 컨셉은 P를 보장한다고 할때, C와 A중에서 하나를 선택하는 간단한 상황이다(P를 희생하는것은 고려하지 않는다)
먼저 P와 C를 선택한다고 하면 네트워크가 복구될때까지 기다려야 하기 때문에 A(availability)를 희생하게 된다
P와 A를 선택하게 되면 상호간에 데이터동기화 없이 데이터 변경이 이루어지기 때문에 C를 희생하게 된다
정족수를 통해 A와 C를 어느정도는 동시에 만족시킬 수 있다
n개의 노드(=파티션) 있을때 모든 쓰기는 w개 노드에서 성공해야 쓰기가 확정되고 모든읽기는 최소한 r개의 노드에 질의해야 한다고 가정하고 아래 조건이 만족될때 어떤 일이 발생하는지 생각해보자
w + r > n
예를들어 n=3, w=2, r=2를 생각해보면 최소 2개의 노드에서 쓰기가 성공했으므로 2개의 노드에서 읽기를 하면 최소한 1개의 노드엔 최신으로 갱신된 값이 포함됨을 보장할 수 있게 된다. 또한 이상태에서 1개의 노드가 다운되더라도 시스템이 동작하는데 지장이 없을 것이라는 것도 알 수 있다.
위 공식은 consistency 를 만족하기위해 필요한 읽기,쓰기성공 노드수의 조건을 나타낸다. 또한 장애허용이 가능한 노드수도 알 수 있게된다.
참고
- https://medium.com/@gaurav.mutreja/cap-theorem-7dad16e2e160
- 책 - 데이터중심어플리케이션설계
'tech > architecture' 카테고리의 다른 글
[architecture] ASP.NET Core 서버의 Event Loop 동작 (0) | 2025.02.06 |
---|---|
Two-Phase Commit(2PC)와 SAGA 패턴에 관하여 (0) | 2024.09.18 |
캐시 구현 패턴 정리 (0) | 2024.03.29 |