[DB] 분산 데이터베이스 결정 (CAP, PACELC)

Loopy·2021년 8월 1일
3

Database

목록 보기
3/3
post-thumbnail

🧐 서론

CAP 이론은 분산 데이터베이스 시스템에서 의미있는 이론이다.

분산 데이터베이스의 세 가지 속성인 일관성(Consistency), 가용성(Availability), 네트워크 파티션 허용(Partition tolerance)을 나타낸다.

처음 CAP 이론이 발표된 후, 시간이 지나면서 이론의 허점이 발견되었고 이를 보완하는 PACELC 이론이 나오게 된다.

보통 분산 데이터베이스를 보면, 기본적으로 Replication과 Sharding을 지원하고 있다.

Replication 기능 덕분에 특정 DB 노드에 장애가 발생해도 다른 노드에 복제된 데이터가 존재해서 안정성을 높인다.

또는 Read DB, Write DB로 역할을 나누어 부하 분산 효과를 얻기도 한다. 그리고 Sharding을 통해서 데이터를 각 DB 노드에 나눠서 저장하면 이 또한 분산, 안정성 등의 효과를 얻을 수 있다.

🔎 Replication : 두 개의 이상의 DBMS 시스템을 
		Mater / Slave로 나눠서 동일한 데이터를 저장하는 방법
        
🔎 Sharding : 같은 테이블 스키마를 가진 데이터를 
		다수의 데이터베이스에 분산하여 저장하는 방법
        

✍ CAP 이론


CAP 이론은 분산 시스템에서 CAP 3가지 속성을 모두 만족하는 것은 불가능하며 오직 2가지만 만족할 수 있다는 이론이다.

💡 주의해야 될 것은 2가지 속성만을 지원한다는 것이 아니라 
2가지 속성을 지원하기 위해서는 1가지 속성을 희생해야 된다는 것이다.

1가지 속성을 포기한다는 뜻이 극단적으로 그 속성을 포기하는 것이 아닌 
1~100까지의 수치가 있을 때 일관성과 가용성을 100% 지원하던 것에서 
수치를 60%로 낮춘다고 생각을 하면 된다.

RDBMS, NOSQL등 어떤 데이터베이스를 사용해야 하는지 선택할 때 해당 시스템의 특성에 따라 CAP 필요성에 대해 분석하고 그에 맞는 데이터베이스를 선택할 수 있다.

⭐ 일관성(Consistency)

동시성, 동일성이라고도 하며 어떤 데이터에 대해서 일관적인 데이터를 보증한다는 것을 의미한다.

일관적인 데이터를 보증한다는 것은 어떤 특정 시점에 데이터를 요청, 조회할때 그 데이터는 항상 동일하다는 것을 의미한다.

RDBMS에서 클라이언트 1이 특정 컬럼에 저장된 값 300을 500으로 변경했다면, 클라이언트 2가 그 데이터를 조회하면 그 값은 항상 500이어야 한다는 조건이다.

일관성은 RDBMS가 지원 하는 가장 기본적인 기능이지만 NoSQL에서는 빠른 분산 처리를 위해 일관성을 희생하기도 한다.

⭐ 가용성(Availability)

모든 클라이언트의 Read와 Write에 대해 항상 응답이 가능(성공)해야 함을 말한다. 내고장성이라고도 하며, 내고장성을 가진 어떤 클러스터 내에 몇 개의 노드가 망가지더라도 정상적인 서비스가 가능하다.

DB가 A, B, C 노드로 분산되어 있는 환경에서 B 노드에 장애가 발생해서 서비스를 할 수 없게 되었다. 하지만, A, C 노드는 살아 있어서 A, C 노드로 계속해서 유저에게 서비스를 한다면, 가용성 있는 시스템이라고 할 수 있다.

몇몇 NOSQL은 가용성을 보장하기 위해 데이터 복제를 사용한다.

⭐ 네트워크 파티션 허용(Partition tolerance)

노드 간 통신이 실패하는 경우라도 시스템은 정상 동작한다.

네트워크 장애로 B 노드가 A, C 노드와 연결이 되지 않아 Replication이 제대로 이루어지지 않을 때, A, C 노드와 B 노드는 데이터가 서로 다를 것이다.

그럼에도 서비스를 계속 한다면, 이는 가용성이 있는 시스템이라고 할 수 있다. 하지만 일관성은 깨진 시스템이다. 그렇다고 일관성을 유지하기 위해 네트워크 장애가 해소될때까지 기다린다면 가용성이 떨어지게 된다.

⭐ CAP 이론의 허점

CP 시스템
완벽한 일관성을 갖는 분산 시스템에서 데이터 변경은 존재하는 모든 노느에 복제되어야 완료된다. 이는 가용성과 성능에 크나큰 악영향을 끼친다. 만약 하나의 노드라고 문제가 있으면 트랜잭션은 실패한다. 그리고 노드가 늘어날 수록 지연시간은 길어진다.

AP 시스템
완벽한 가용성을 갖는 분산 시스템에서는 모든 노드가 어떤 상황에서도 응답할 수 있어야 한다. 네트워크 문제가 발생해서 어떤 노드에 Replication이 제대로 이루어지지 않아도 가용성을 위해서 해당 노드에 접근한 사용자에게 데이터를 반환한다고 생각해보자. 일관성이 깨진 것은 당연하고 사용자는 문제가 발생한 것을 인지도 못할 것이다.

CA 시스템
일관성과 가용성을 동시에 완벽히 만족하려면, 네트워크 장애를 허용하지 않아야 한다. 네트워크 장애가 절대 일어나지 않는 네트워크 구성이 가능할까? 그런 것은 이 세상에 존재하지 않는다. 결국 CAP 이론은 네트워크 파티션 허용은 기본적으로 깔고 시작해야 한다. 무조건 P를 선택하고, C와 A 중 하나를 골라야 한다. 하지만, 앞서 설명한 CP, AP 시스템도 뭔가 답답하다. 어느 한쪽을 완벽히 만족하는 시스템을 구축하는 것이 아니라 일관성과 가용성을 서비스 목적에 맞게 균형잡힌 시스템을 가져야 할 필요성이 있다.


✍ PACELC 이론


PACELC 이론은 CAP 이론으로 부족한 부분을 보완하기위해 네트워크 장애 상황과 정상 상황으로 나누어서 설명하는 이론이다. P(네트워크 파티션)상황에서 A(가용성)과 C(일관성)의 상충 관계와 E(else, 정상)상황에서 L(지연 시간)과 C(일관성)의 상충 관계를 설명한다.

PACELC 이론에서는 장애 상황, 정상 상황에서 어떻게 동작하는지에 따라 시스템을 PC/EC, PC/EL, PA/EC, PA/EL로 나눌 수 있다.


🙏 참고 자료

https://geunyang93.tistory.com/41
https://dongwooklee96.github.io/post/2021/03/26/cap-%EC%9D%B4%EB%A1%A0%EC%9D%B4%EB%9E%80/
https://ohjongsung.io/2019/05/01/cap-%EC%9D%B4%EB%A1%A0%EA%B3%BC-pacelc-%EC%9D%B4%EB%A1%A0

profile
공부 쫌 해!!!😂

0개의 댓글