CAP 이론이란?
분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition tolerance) 3가지중 최대 2가지만 만족할 수 있다는 이론이다.
시스템 특성에 따라 RDBMS,NoSQL 등 어떤 데이터베이스를 사용해야하는지 CAP 필요성에 따라 분석하고 데이터베이스를 선택해야합니다.
분산 시스템이란
일반적으로 웹 서버와 DB서버를 동일한 시스템에 설치하지는 않을 것입니다. 이와 같이 "단일 시스템"이 아닌 다중 시스템 환경에서 서버가 여러 곳으로 분산되어 소프트웨어가 동작하는 것을 분산 컴퓨터(팅)이라고 한다.
용어정리
일관성(Consistency)
일관성은 동시성, 동일성이라고도 하며 어떤 데이터에 대해서 일관적인 데이터를 보증한다는 것을 의미한다.
일관적인 데이터를 보증한다는 것은 어떤 특정 시점에 데이터를 요청, 조회할때 그 데이터는 항상 동일하다는 것을 의미한다. RDBMS에서 클라이언트 1이 특정 컬럼에 저장된 값 300을 500으로 변경했다면, 클라이언트 2가 그 데이터를 조회하면 그 값은 항상 500이어야 한다는 조건이다.
일관성은 RDBMS가 지원 하는 가장 기본적인 기능이지만 NoSQL에서는 빠른 분산 처리를 위해 일관성을 희생하기도 한다.
가용성(Availability)
가용성이란 모든 클라이언트의 Read와 Write에 대해 항상 응답이 가능(성공)해야 함을 말한다. 내고장성이라고도 하며, 내고장성을 가진 어떤 클러스터 내에 몇 개의 노드가 망가지더라도 정상적인 서비스가 가능하다. 이는 시스템 아키텍처 설계에서 말하는 고가용성(High Availability)와 유사한 개념으로 볼 수 있다.
몇몇 NoSQL은 가용성을 보장하기 위해 데이터 복제를 사용한다.
가용성을 설명하면 빠지지 않는 단어가 단일 고장점(SPOF, Single Point Failure)이다. 단일 고장점이란 시스템을 구성하는 개별 요소 중에서 어떤 하나의 요소가 망가졌을 때 시스템 전체를 멈추게 만드는 요소를 말한다. 단일 고장점을 가진 시스템은 이를 지원하기 위해 별도의 솔루션을 같이 사용하기도 한다.
분할 내구성(=분할 허용성, Partition Tolerance)
분할 내구성은 두 지역간의 네트워크가 단절되거나 네트워크의 데이터가 유실되더라도 각 지역의 시스템은 정상적으로 동작해야 한다는 것이다.
CAP 분류
- CP DB
CP 데이터베이스는 가용성을 희생하면서 Consistency과 Partition Tolerance를 제공한다. 두 nodes 사이에 파티션이 발생하면 시스템은 파티션이 해결될 때까지 일관되지 않은 노드를 종료해야 한다(즉, 사용할 수 없게 만들어야 함).
- AP DB
AP 데이터베이스는 일관성을 희생하면서 Availability와 Partition Tolerance를 제공한다. 파티션이 발생하면 모든 노드를 계속 사용할 수 있지만 파티션에 의해 특정 node는 이전 버전의 데이터를 반환할 수 있다. 파티션이 해결되면 AP 데이터베이스는 일반적으로 node를 다시 동기화하여 시스템의 모든 불일치를 복구한다.
- CA DB
CA는 네트워크 파티션이 없을 때 Consistency와 availability를 제공한다. 종종 single node의 DB 서버는 CA 시스템으로 분류된다. single node DB 서버는 Partition Tolerance를 처리할 필요가 없으므로 CA 시스템으로 간주된다.
구분 | 특성 | 예 |
C + A | - 시스템이 죽더라도 메시지 손실은 방지하는 강한 신뢰형 - 트랜잭션이 필요한 경우 필수적 |
- 일반 RDBMS |
C + P | - 모든 노드가 함께 퍼포먼스를 내야하는 성능형 | - Redis, MongoDB |
A + P | - 비 동기화된 서비스 스토어에 적합 | - Dynamo, Apache Cassandra, CouchDB, Oracle Coherence |
PACELC 이론
PACELC 이론은 CAP 이론으로 부족한 부분을 보완하기위해 네트워크 장애 상황과 정상 상황으로 나누어서 설명하는 이론이다.
아래의 그림을 보자. P(네트워크 파티션)상황에서 A(가용성)과 C(일관성)의 상충 관계와 E(else, 정상)상황에서 L(지연 시간)과 C(일관성)의 상충 관계를 설명한다.
PACELC 이론에서는 장애 상황, 정상 상황에서 어떻게 동작하는지에 따라 시스템을 PC/EC, PC/EL, PA/EC, PA/EL로 나눌 수 있다.
MySQL을 예로 들자면, 마스터-슬레이브로 구성된 MySQL 서버는 기본적으로 PA/EL이다.
MySQL에 쓰기 작업을 끝내자 마자 읽으려고 했다가 데이터가 없어서 당황했던 적이 있다.
즉 E(else, 정상)상황에서 L(지연 시간)을 C(일관성)보다 집중해서 일어난 케이스이다. 알고보니 MySQL은 따로 설정하지 않으면 마스터에 트랜잭션 발생시 비동기적으로 슬레이브에 데이터를 복제(async replication)한다고 한다. 그래서 복제될 때까지 딜레이를 주고 접근하게 코드를 수정했었다.
결론
DBMS는 모든 것을 만족할 수 없기 때문에 사이트에 맞는 속성(데이터 일관성, 가용성, 분할 내구성)을 선택하여 적용한다.
- ref
https://needjarvis.tistory.com/425
https://deveric.tistory.com/90
https://itpenote.tistory.com/511
'데이터베이스 공부' 카테고리의 다른 글
인덱스의 단점 (0) | 2022.02.10 |
---|---|
SQL 조인(JOIN)의 개념과 종류 (0) | 2021.11.07 |
DBMS 키의 개념 및 종류 (0) | 2021.11.07 |
NoSQL 저장방식에 따른 분류 (0) | 2021.11.07 |