CAP 정리에 대해서 알고 계신가요?
백엔드와 관련된 질문이에요.
CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만을 제공할 수 있다는 이론입니다. CAP 정리에 따르자면, 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance) 등 3가지 속성을 모두 만족하는 분산 데이터베이스 시스템은 존재하지 않습니다.
각 속성에 대해서 설명해주시겠어요? 🤔
- 일관성(Consistency) 은 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있음을 의미합니다.
- 가용성(Availability) 은 노드 일부에 문제가 발생하여도 시스템은 클라이언트의 모든 요청에 유효한 응답을 전해줄 수 있어야 함을 의미합니다.
- 분할 내성(Partition Tolerance) 은 노드 사이에 통신이 불가능한 상황(파티션)에서도 시스템이 계속 동작한다는 것을 의미합니다.
각 속성의 조합을 예시와 함께 설명해 주실 수 있나요? 🤓
3개의 분산된 데이터베이스가 존재한다고 가정해 보겠습니다. 해당 분산 데이터베이스 시스템에서는 특정 서버에 쓰기 작업이 발생하면 나머지 서버에 데이터가 전파됩니다. 이때, 만약 A 파티션(1대의 노드), B 파티션(2대의 노드)으로 네트워크가 분할되었다면 이때 파티션 간 노드들은 서로 통신할 수 없기 때문에 데이터 전파가 불가능합니다.
CA 시스템은 일관성과 가용성을 지원하며 분할 내성을 희생합니다. 하지만, 통상적으로 네트워크 장애는 피할 수 없는 일로 여겨지므로 분산 시스템에서 분할 내성은 희생하기 어렵습니다. 따라서 실세계에 CA 시스템은 존재하지 않습니다.
그러면 CP 혹은 AP 시스템이 현실적인 대안이 될 수 있는데요. 파티션이 발생한 상황에서 CP 시스템은 파티션이 해결되기 전까지 다른 데이터베이스의 연산을 중단시켜 일관성을 지키고 가용성을 희생합니다.
반면, AP 시스템은 파티션 문제가 발생해도 읽기 및 쓰기 작업을 중단하지 않습니다. 이 경우 일관성은 희생되지만 파티션 문제가 해결되는 경우 동기화 작업을 수행하여 최종적인 일관성을 보장할 수 있습니다.
추가 학습 자료를 공유합니다.
공유하기
컨텐츠 피드백