반응형
CAP 이론 – 분산 시스템 설계의 첫 단추
분산 시스템을 설계할 때 반드시 고려해야 할 개념이 있습니다. 바로 CAP 이론입니다.
CAP 이론은 시스템이 어떻게 동작해야 하는지, 무엇을 우선시해야 하는지를 결정하는 설계의 방향성을 잡아주는 나침반 같은 역할을 합니다.
🔷 CAP 이론이란?
CAP 이론은 다음 세 가지 속성 중 최대 두 개만 동시에 만족할 수 있다는 이론입니다.
| 요소 | 설명 |
|---|---|
| Consistency (일관성) | 모든 클라이언트가 동일한 데이터를 읽을 수 있어야 한다. |
| Availability (가용성) | 모든 요청에 대해 항상 응답을 반환해야 한다. |
| Partition Tolerance (파티션 허용성) | 네트워크 장애(파티션)가 발생해도 시스템이 계속 동작해야 한다. |
CAP 이론의 핵심은 네트워크가 분리되었을 때 어떤 속성을 포기할 것인가에 대한 선택입니다.
💡 각 요소의 상세 개념
1. Consistency (일관성)
- 모든 노드가 항상 같은 데이터를 반환해야 함
- 예: A 사용자가 게시글을 수정하면, B 사용자도 즉시 같은 내용을 봐야 함
2. Availability (가용성)
- 시스템은 항상 응답을 반환해야 함 (에러든, 캐시된 데이터든)
- 예: 결제 시스템이 일시적으로 불안정해도, 상품 목록은 계속 응답을 해야 함
3. Partition Tolerance (파티션 허용성)
- 노드 간 통신 장애가 발생해도 시스템은 멈추지 않고 작동해야 함
- 예: 서버 간 연결이 끊겨도 서비스 일부가 계속 돌아가야 함
⚖️ 선택의 딜레마: 셋 중 둘만 선택 가능
네트워크 파티션이 발생했을 때, 시스템은 다음 중 하나를 포기해야 합니다.
| 조합 | 특징 | 적용 예시 |
|---|---|---|
| CP (Consistency + Partition Tolerance) | 일관성과 장애 대응을 우선 → 응답이 느릴 수 있음 | 금융 거래, 은행 시스템 |
| AP (Availability + Partition Tolerance) | 항상 응답을 반환하되, 일관성은 나중에 맞춤 | SNS, 캐시 서버 |
| CA (Consistency + Availability) | 이론적으로만 가능, 네트워크가 절대 끊기지 않는 환경에서만 실현 가능 | 단일 노드 서버 (이론적) |
📌 CAP 이론 적용 예시
| 시스템 | CAP 선택 | 설명 |
|---|---|---|
| MongoDB | 기본 AP, 옵션 설정 시 CP 가능 | 쓰기 우선순위 설정으로 선택 가능 |
| Cassandra | AP | 빠른 쓰기와 읽기 우선, 최종 일관성 모델 사용 |
| HBase | CP | 정합성을 중요시하는 분석용 데이터베이스 |
🔄 CAP 보완 개념: BASE 이론
CAP 이론의 실용적 한계를 보완한 개념이 BASE 이론입니다.
| 구성 요소 | 설명 |
|---|---|
| Basically Available | 대부분의 시간에 가용 |
| Soft State | 상태는 시간이 지나면서 바뀔 수 있음 |
| Eventually Consistent | 결국에는 데이터가 일관된 상태로 수렴함 |
BASE는 CAP에서 C 대신 Eventually Consistent를 택함으로써 가용성과 파티션 허용성을 우선시하는 실용적 접근입니다.
🎯 실전 시나리오 예시
A 사용자가 상품 정보를 수정했는데, 네트워크가 분리되어 B는 아직 예전 데이터를 보고 있음.
- CP 선택: B에게 응답을 거절하거나 기다리게 함 → 일관성 보장
- AP 선택: B에게 예전 데이터라도 즉시 반환 → 가용성 우선
이처럼 시스템이 어떤 선택을 하느냐에 따라 사용자 경험과 데이터 신뢰성이 갈립니다.
✅ 마무리
CAP 이론은 완벽한 시스템을 만들기 위한 도구가 아니라, 불완전한 네트워크 상황에서 무엇을 우선할지를 결정하는 지침입니다.
당신의 시스템이 무엇을 우선시해야 하는지 고민하는 순간, CAP 이론이 방향을 제시해 줄 것입니다.
🔑 핵심 키워드 요약
- CAP Theorem
- Consistency / Availability / Partition Tolerance
- CP / AP / CA 조합
- BASE 이론 (Eventually Consistent)
- 시스템 설계 전략
반응형
'프로그래밍 이론 > 시스템 디자인 설계' 카테고리의 다른 글
| CDN(Content Delivery Network) (2) | 2025.07.14 |
|---|---|
| Monolith, MSA(Microservice) 아키텍쳐 (0) | 2025.07.14 |
| 로드 밸런싱 _ Load Balancer (0) | 2025.07.12 |