csct3434
CAP 이론 : Availability와 Partition Tolerance의 차이점 본문
CAP 이론에 대해 들어봤지만, 정작 CA가 왜 불가능한지, A와 P의 차이는 무엇인지 확실하게 설명할 수 없었습니다. 그래서 이번 기회에 CAP 이론을 제대로 정리해보고자 합니다.
1. CAP 이론이란?
CAP 이론은 분산 시스템에서는 Consistency(일관성), Availability(가용성), Partition Tolerance(분할 내성) 중 최대 두 가지만 만족할 수 있다는 이론입니다. 즉, 세 가지를 동시에 만족하는 완벽한 분산 시스템은 존재할 수 없습니다.
CAP의 구성 요소
- Consistency (일관성)
- 모든 노드가 항상 동일한 최신 데이터를 반환해야 한다.
- The property that ensures all nodes in a distributed system see the same data at the same time, providing a uniform view of the system.
- 데이터가 변경되었을 경우, 즉시 모든 노드에 반영되어야 한다.
- 모든 노드가 항상 동일한 최신 데이터를 반환해야 한다.
- Availability (가용성)
- 모든 요청에 대해 반드시 응답을 반환해야 한다.
- The property that ensures every request receives a response, regardless of the state of individual nodes, meaning the system remains operational.
- 다만, 최신 데이터가 아닐 수도 있고, 다른 노드의 데이터와 불일치할 가능성이 있다.
- 모든 요청에 대해 반드시 응답을 반환해야 한다.
- Partition Tolerance (분할 허용성)
- 네트워크가 단절되더라도 시스템은 완전히 멈추지 않고, 각 노드는 독립적으로 계속 작동해야 한다.
- The ability of a distributed system to continue operating despite network partitions that prevent some nodes from communicating with others.
- 네트워크가 단절되더라도 시스템은 완전히 멈추지 않고, 각 노드는 독립적으로 계속 작동해야 한다.
2. Partition Tolerance(P)는 응답 여부와 무관하다
많은 사람들이 Partition Tolerance(P)가 있으면 응답이 보장된다고 오해합니다. 하지만 P의 핵심은 네트워크가 끊겨도 개별 시스템이 계속 동작할 수 있어야 한다는 것이지, 반드시 응답을 보장하는 것은 아닙니다.
✔ P는 네트워크 단절(Network Partition)이 발생했을 때 시스템이 개별적으로 운영될 수 있는지를 의미합니다.
✔ P를 보장한다고 해서 A(응답 보장)까지 보장되는 것은 아닙니다.
3. CAP 이론에서의 선택: CP vs. AP
CAP 이론에 따르면, 네트워크 분할(P)은 현실적으로 피할 수 없으므로 P를 기본적으로 고려해야 합니다. 그러면 A(가용성)과 C(일관성) 중 하나를 선택해야 하는 상황이 됩니다.
CP (Consistency + Partition Tolerance)
- 데이터 일관성을 유지하기 위해 일부 요청을 거부할 수 있다.
- 네트워크 단절이 발생하면 데이터의 불일치를 방지하기 위해 일부 노드가 응답하지 않을 수도 있음 (A를 포기)
- 대표적인 예: 분산 데이터베이스 (MongoDB, HBase, Zookeeper)
AP (Availability + Partition Tolerance)
- 네트워크 단절이 발생하더라도 시스템은 반드시 응답해야 한다.
- 최신 데이터가 아닐 가능성이 있지만, 시스템이 멈추지 않고 계속 응답을 반환함 (C를 포기).
- 대표적인 예: NoSQL 데이터베이스 (DynamoDB, Cassandra, CouchDB)
CA (Consistency + Availability) – 현실적으로 불가능
- 모든 노드가 항상 최신 데이터를 반환하면서, 동시에 모든 요청에 응답하는 것은 네트워크 장애가 없는 경우에만 가능함.
- 현실적으로 네트워크 장애를 피할 수 없기 때문에 CA 시스템은 분산 환경에서는 구현 불가능함.
- 단일 노드 데이터베이스(MySQL 싱글 인스턴스)에서는 가능하지만, 분산 시스템에서는 불가능함.
4. CAP 이론을 적용하는 방법
CAP 이론은 시스템의 특성과 요구사항에 따라 어떤 요소를 희생할 것인지 결정하는 가이드라인입니다.
- CP 시스템을 선택해야 하는 경우: 금융 거래 시스템, 강력한 데이터 정합성이 필요한 환경.
- AP 시스템을 선택해야 하는 경우: 글로벌 서비스, SNS, 캐시 시스템처럼 빠른 응답이 중요한 경우.
💡 핵심 정리
✔ P(Partition Tolerance)는 기본 전제이다 (네트워크 장애는 현실적으로 피할 수 없기 때문.)
✔ P를 보장한 상태에서 A(가용성)와 C(일관성) 중 하나를 선택해야 한다.
✔ AP 시스템은 빠른 응답을 보장하지만 최신 데이터가 아닐 수도 있다.
✔ CP 시스템은 최신 데이터를 보장하지만, 네트워크 장애 시 응답하지 않을 수도 있다.
✔ CA 시스템은 네트워크 장애가 없는 경우에만 가능하며, 현실적으로 분산 시스템에서는 불가능하다.
5. 마무리
CAP 이론은 분산 시스템을 설계할 때 매우 중요한 개념입니다. 이 이론을 이해하면 어떤 시스템을 구축해야 할지 명확한 방향을 잡을 수 있습니다.
📌 한 문장 요약: "분산 시스템에서는 네트워크 장애를 고려해야 하며, 일관성을 유지할 것인지, 가용성을 유지할 것인지 선택해야 한다."
'CS' 카테고리의 다른 글
URI, URL, URN의 차이점 (0) | 2025.03.12 |
---|---|
자바 네트워크 프로그래밍: ServerSocket vs ServerSocketChannel (0) | 2025.03.10 |
Fork Join Framework: CPU bounded vs I/O bounded 작업 효율성 비교 (0) | 2025.03.10 |
Redis의 낙관적 락(Optimistic Lock)과 분산 락(Distributed Lock) 비교 (0) | 2025.03.10 |
Java NIO 이벤트 기반 프로그래밍: Selector와 비동기 I/O 처리의 이해 (0) | 2025.03.02 |