본문 바로가기
IT 지식/데이터베이스

CAP 이론

by 다빈치코딩 2023. 12. 14.

목차

    반응형

    앞서 NoSQL은 비정형 데이터를 효율적으로 처리하기 위해 분산 DBMS를 사용한다고 하였습니다. 이렇게 분산 DB를 사용하다보면 선택과 집중이 필요한 순간이 오게 됩니다. 성능과 효율의 Trade-Off가 필요한 CAP 이론에 대해 알아보겠습니다.

    CAP 이론이란?

    Brewer 이론이라고도 알려진 CAP 이론에 대해 알아보겠습니다. CAP은 세가지 속성의 약자로 각각 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance)이라 불립니다. CAP 이론은 적절한 응답 시간 내에서 이 세가지를 모두 만족하는 분산 시스템을 구성할 수 없다는 이론 입니다. 그럼 먼저 일관성, 가용성, 분할 허용성이 무엇인지부터 알아보겠습니다.

    일관성(Consistency)

    일관성은 분산 DB에서 같은 시간에 조회할 때 조회되는 데이터는 항상 일관된 데이터임을 보장하는 것입니다. 기존의 관계형 데이터베이스에서는 가장 기본적인 기능이지만 NoSQL에서는 아닐수도 있습니다. DB가 분산되어 있기 때문에 한쪽 DB에 변경된 데이터가 다른쪽에서는 아직 변경이 안되어 있을수도 있기 때문 입니다. 분산 DB에서도 이것을 보장하는 것을 일관성이라고 합니다.

    가용성(Availability)

    가용성을 언제나 서비스가 가능한 상태를 뜻합니다. 우리는 네이버나 구글같은 사이트는 항상 정상 동작할 것이라 믿고 있습니다. 간혹 이런 사이트가 동작을 안하면 뉴스에 나올 정도로 이슈화 되곤 합니다. 그만큼 우리는 웹 서비스가 가용성을 제공하는 것을 당연시 하게 생각하고 있습니다.

    분할 허용성(Partition Tolerance)

    용어가 어렵지만 뜻을 알면 그렇게 어렵지 않습니다. 우리가 회사에서 일할 때 여러사람이 일하지만 파티션(Partition)을 나누어 서로 방해되지 않도록 합니다. 이렇게 구역을 나누어 놓은 네트워크가 끊기더라도 각각의 시스템은 정상적으로 동작해야 함을 의미합니다.

    예로 알아보기

    CAP 이론은 위에서 알아본 세가지를 모두 만족할 수 없다고 하였습니다. 하나의 예로 생각해 보겠습니다. A, B, C 세 지역에 네트워크로 DB가 구성되어 있습니다. 이 때 A와 B 지역은 연결되어 있지만 C 지역은 연결이 끊겼습니다. 분할 허용성을 지원하기 위해 네트워크가 끊겨 있지만 서비스가 되도록 하였습니다.

     

    이 때 A지역의 DB에 업데이트가 발생 하였습니다. A와 B는 연결되어 있기 때문에 같이 업데이트 되었지만 C는 끊겨있어 업데이트가 되지 않았습니다. C 지역의 DB에서 이 값을 조회하려 한다면 A, B와 같은 값을 조회할 수 없을 것입니다. 여기서 일관성을 유지하기 위해서는 더 이상 DB 조회가 되면 안됩니다. C 지역의 DB도 A, B와 마찬가지 값으로 업데이트 될 때까지 서비스를 멈춰야 일관성이 유지되는 것이고, 이것은 결국 가용성을 잃는 것입니다. 반대로 일단 가용성을 위해 C지역의 DB를 조회한다면 업데이트 된 A, B 지역과는 다른 결과를 얻기 때문에 일관성이 떨어지게 됩니다. 일관성과 가용성을 모두 가진 DB는 기존에 우리가 알던 RDBMS입니다. 이는 NoSQL에서 말했듯이 효율이 떨어집니다. 저렴한 분산 DB로 구성할 때에는 분할 허용성을 밑에 깔고 일관성과 가용성중 하나를 선택해야 합니다.

     

    세 가지중 두가지를 선택하는 CA, CP, AP 시스템에 대해 좀 더 알아보겠습니다.

    CA 시스템

    일관성과 가용성을 만족하는 DB는 네트워크 장애가 절대 없어야 합니다. 네트워크 장애가 없는 네트워크 구성은 없습니다. 결국 분산 DB를 사용하지 않는다는 뜻이고 기존의 RDBMS라 생각하면 됩니다.

    CP 시스템

    일관성을 중요하게 생각하는 DB는 변경이 일어나면 모든 DB에 업데이트를 해야 합니다. 그리고 네트워크의 문제가 생길 경우 트랜잭션이 실패하게 됩니다. 트랜잭션이 실패하면 가용성이 떨어지게 됩니다. 대표적인 DB로 MongoDB가 있습니다. 

    AP 시스템

    일관성을 포기하고 가용성을 택한 대표적인 DB는 Cassandra 입니다.네트워크가 끊기더라도 일단 작업 수행이 가능합니다. 그러다보니 다른 네트워크의 데이터와 맞지 않는 경우가 발생합니다. 즉 일관성이 깨진 상태가 되고, 네트워크가 복구될 때 모든 노드의 데이터가 동기화 됩니다. 동기화 이전에는 각각이 다른 버전의 데이터를 가질 수 있습니다.

     

    정리

    분산 DB를 사용하는 NoSQL은 일관성, 가용성, 분할 허용성을 모두 가질 수는 없습니다. CA 시스템은 기존의 RDBMS 입니다. 하지만 우리는 분산 DB를 구성하기 때문에 분할 허용성을 가지고 일관성이 더 중요한지, 가용성이 중요한지에 따라 CP, AP 시스템으로 나누어지게 됩니다. CP의 대표적인 DB는 MongoDB, AP의 대표적인 DB는 Cassandra가 있습니다.

     

    CAP 이론의 한계를 극복하기 위해 PACELC 이론이 등장하게 됩니다. PACELC에 대해서는 다음시간에 알아보도록 하겠습니다.

     

    반응형

    'IT 지식 > 데이터베이스' 카테고리의 다른 글

    릴레이션(Relation)  (1) 2023.12.19
    PACELC 이론  (0) 2023.12.15
    NoSQL(Not Only SQL)  (0) 2023.12.13
    LOD(Linked Open Data)  (0) 2023.12.12
    데이터베이스 정규화  (0) 2023.12.10