[ CS / DataBase ] CAP 이론

황승환·2022년 8월 5일
0

CS

목록 보기
58/60

CAP 이론

데이터베이스에는 CAP 이론이 존재한다. CAP 이론은 일관성(Consistency), 가용성(Availability), 분단 허용성(Patition Tolerance)의 줄임말로, 이렇게 3가지 특성 중 2가지 특성만 충족 가능하다는 이론이다. 이는 구현하고자 하는 서비스에 적합한 DB를 고르는 데에 중요한 척도가 되기도 한다.

CAP

Consistency

일관성은 ACID 원칙에도 등장하는 특성으로 어떠한 환경에서도 항상 최신의 데이터가 반환되어야 한다는 특성이다. 즉, 여러 개의 장비를 통해 같은 데이터를 같은 시간에 조회한다면 모두 같은 결과 값을 반환해주어야 한다.

일관성이 보장되는 DB의 경우에는 내부적으로 트랜잭션이나 그와 비슷한 매커니즘을 가지고 있다는 뜻이기도 하다.

Availability

가용성은 서버가 가동되고 있는 동안 클라이언트로부터 들어오는 모든 요청에 대한 정상적인 응답을 반환하는 특성이다. 말 그대로 서버가 돌아가는 이상, 언제든 사용 가능한 DB의 특성이라고 할 수 있다.

이는 다른 클러스터의 노드 일부에서 장애가 발생하더라도 요청에 대한 응답은 항상 성공적으로 반환되어야 한다.

Partition Tolerance

분단 허용성은 여러 대의 클러스터가 존재할 때, 클러스터 간의 통신이 끊기더라도 시스템이 잘 동작해야 한다는 특성이다. 예를 들어 여러 개의 DB 노드 간의 통신 장애가 발생하여 통신이 끊기더라도 요청이 들어오면, 다른 인스턴스의 상태를 모르더라도 요청에 대한 응답을 반환한다.

Availability & Partition Tolerance

가용성과 분단 허용성이 비슷하게 와닿을 수 있다. 이에 대하여 둘의 특징을 집어 보면, 가용성은 노드에 장애가 발생하였을 때, 분단 허용성은 노드 간의 통신에 장애가 발생하였을 때로 생각한다면 구분할 수 있다.

RDBMS & NoSQL

RDBMS

관계형 데이터베이스는 CAP 중 어떤 특성 2가지를 충족하고 있을까? 결론부터 말하면 관계형 데이터베이스는 CA를 보장하는 시스템이다.

관계형 데이터베이스는 데이터들 간의 관계가 연결되어 있기 때문에 일관성이 매우 중요하다. 만약 관계형 데이터베이스가 다량의 서버를 운용하는 클러스터링으로 운영된다고 생각해보자. 여러 개의 서버 중 하나의 서버의 연결이 끊어졌을 때, 분단 허용성을 지킨다면 서버 간의 통신이 원활하지 않아도 Read/Write가 적용되기 때문에 서버 간의 데이터의 일관성을 깨트리게 된다. 이러한 경우, 모든 서버를 종료하여 클라이언트가 접속할 수 없도록 해야 한다.

그러나 RDBMS가 CA를 포기한다면 CP가 어느정도 보장되는 시스템을 구축할 수 있다.

NoSQL

NoSQL은 CP나 AP시스템이다. NoSQL은 대용량의 분산 시스템에 사용되기 때문에 CP보다도 AP가 더 적절하다. 만약 C, 즉 일관성이 보장되는 시스템이어야 한다면 한번의 Write 작업을 위해 모든 서버가 응답할 때까지 Lock을 걸어 일관성을 보장해야 하는데, 이럴 경우 성능 이슈가 크기 때문에 대용량의 분산 시스템에 일관성은 적절하지 않다.

그러나 DynamoDB의 경우 strongly consistent를 설정할 수 있는데, 이를 설정하면 CP로 변하게 된다.

정리

  • CAP이론은 일관성(Consistency), 가용성(Availability), 분단 허용성(Partition Tolerance) 이렇게 3가지 특성 중 2가지 특성만 보장하는 것이 최선이라는 DB 이론이다.

  • 보통 CA, CP, AP의 형태를 띈다.

  • RDBMS의 경우 다량의 서버로 운용하는 클러스터링에 적합하지 않다.

    • 데이터 간의 연결이 존재하기 때문에 일관성이 매우 중요한데, 다중 클러스터링 환경에서 데이터를 수정하거나 추가한다면, 다른 서버들의 응답 또한 기다려야 하기 때문이다.
    • 그러나 일관성은 RDBMS에서 매우 중요하기 때문에 반드시 보장되어야 한다.
    • 만약에 분단 허용성을 보장한다면 하나의 서버의 통신이 끊겼을 때에도 Write가 가능하기 때문에 통신이 되지 않는 서버와 다른 서버들 간의 데이터 일관성이 깨지게 되는 문제가 발생한다.
    • 이럴 경우 모든 서버를 종료하여 클라이언트가 접속할 수 없도록 해야 한다.
    • 결론적으로는 RDBMS는 CA 시스템이다.
  • NoSQL의 경우 대용량 분산 시스템으로 사용된다.

    • 이는 일관성을 보장하기 위한 성능 이슈가 발생함을 의미한다.
    • 여러 개의 서버가 존재할 때, Write를 수행하면 모든 서버의 응답을 기다리기 위해 Lock을 걸게 될 것이고, 이는 성능 이슈가 된다.
    • 이러한 이유로 NoSQL은 AP 시스템이 적절하다.
  • 가장 중요한 것은 CAP 이론에서 완전한 CA, CP, AP는 없고, 그 사이 어느 곳에 위치하게 된다는 것이다.

  • CAP 이론가 DB를 선택하는 데에 중요한 지표가 되는 것은 어떻게 보면 당연한 것 같다.

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글