무료정보

[시스템 디자인] CAP 이론 정리

✝. . .☪ 2022. 1. 31. 15:13
반응형

CAP 정리(Theorem) 중요성

데이터를 보관할 장소로 고전적으로 사용하던 RDBMS SQL 데이터베이스나 요즘 많이 사용되는 카산드라, 몽고 DB 같은 No-SQL 저장소를 사용하게 된다.

 

문제는 분산환경에서 현재 해결해야 하는 비즈니스적 문제에 최대한 잘 맞고 어울리는 것을 선택해야 한다는 것이다. 그러기 위해선 유행이나 대세에 따라서 요즘 뜨는 기술을 선택하는 것보다는 검증된 원칙에 따라서 고를 수 있으면 좋을 것이다.

 

면접이나 실무에서 자신이 선택한 데이터베이스가 문제해결에 도움이 되는지를 설명하는 것은 거의 필수적이다. "왜 MySql을 도입했나요?" 혹은 "왜 카산드라를 선택하였나요?"와 같은 뻔한 질문에 말문이 막히지 않고 기술적으로 신뢰를 주기 위해서 CAP 정리에 따라서 설명하면 된다.

 

 

CAP 이론 이란?

간단하게 설명하자면 CAP 정리는 분산 소프트웨어서 다음 세게의 조건을 모두 만족하는 시스템은 존재하지 않음을 증명한 정리이다. 최대 2가지를 만족하는 시스템만 존재하며 조합의 경우의 수마다 발생하는 CAP 간의 트레이드오프가 가장 먼저 고려되어야 할 사항이다.

 

  • 일관성(Consistency): 모든 노드는 동일한 데이터를 동시에 본다. 추가 읽기를 허용하기 전에 여러 노드를 업데이트하여 일관성을 확보한다.

 

  • 가용성(Availability): 모든 요청은 성공이나 실패에 대한 응답을 받아야 한다. 가용성은 서로 다른 서버에 데이터를 복제함으로써 달성된다.

 

  • 분할 내성(Partition tolerance): 메시지 손실 또는 부분 장애에도 불구하고 시스템은 계속 작동한다. 분할 내성이 있는 시스템은 전체 네트워크 내의 장애수와 상관없이 계속해서 얼마든지 지속할 수 있다. 노드와 네트워크의 조합에 걸쳐 데이터가 충분히 복제되어 간헐적인 가동 중단을 통해 시스템을 유지할 수 있다.

 

 

이 정리를 세 가지 조건의 앞글자를 따서 CAP 정리라고 부른다. 위 사진에서 볼 수 있듯이 세 가지를 만족하는 것은 존재하지 않는다. 굳이 비유를 하자면 물이 끓는듯한 온도의 아이스 아메리카노 같이 서로 반대 지점에 있는 조합은 존재하지 않기 때문이다.

 

따라서 지속적으로 사용 가능하고 순차적으로 일관되며 어떠한 파티션 장애에도 내성이 있는 데이터 저장소는 구축할 수 없다. 왜냐하면 일관성을 유지하려면 모든 노드가 동일한 순서로 업데이트된 데이터를 보아야하기 때문이다.

 

그러나 네트워크 내에서 공포의 파티션 현상이 발생하면, 한 파티션에는 업데이트가 되었지만 다른 파티션에는 업데이트가 이루어지지 않았을 가능성이 충분히 있다. 그렇다면 다른 파티션에 업데이트가 이루어지기 전에 클라이언트가 먼저 업데이트된 것을 보았지만 업데이트가 이루어지지 않은 파티션에서 다시 데이터를 받으면 업데이트 이전의 데이터를 볼게 되는 상황이 있을 수 있다.

 

이러한 상황에서 대처하기 위해 할 수 있는 유일한 방법은 업데이트가 되지 않은 파티션의 서비스 요청을 중비 하는 것이다. 하지만 그렇게 되면 그 서비스는 더 이상 100% 가용성 지원이 불가능하게 된다.

 

네트워크는 항상 신뢰할 수 없다. 따라서 분할 내성(Partition tolerance)는 많은 경우 반드시 필요로 한다. 따라서 대부분 시스팀 설계를 할때에는 일관성과 가용성의 트레이드 오프를 고민하고 둘 중의 하나에서 선택을 해야하는 경우가 많다.

 

일관성 vs 가용성

CP (Consistency & Partition tolerance) - 일관성과 분할내성 조합

 

분할된 노드에서 응답을 기다리는 경우에 시간 초과 오류 (timeout error)가 발생할 수 있다.

CP는 원자성 읽기와 쓰기를 필요로 하는 비즈니스 로직에 좋은 선택이 될 것이다.

 

AP (Availability & Partition tolerance) - 가용성과 분할 내성 조합

 

응답 요청은 어떤 노드에서도 받을 수 있고 그 노드에서 준비되어있는 버전의 데이터를 반환한다. 이 뜻은 반환된 데이터는 최신 버전이 아닐 수 있다는 뜻이다. 모든 파티션에 새로운 데이터나 업데이트가 전파되는데 다소 시간이 걸릴 수 있다.

 

AP는 외부 장애에도 시스템을 유지해야 하고 데이터가 궁극적으로 일관성이 있기만 하면 되는 비즈니스 모델에 좋은 선택이다.

 

반응형