github twitter email
CAP 원리
Jun 5, 2017
2 minutes read

클라우드 시스템을 관리하는 기술책을 읽으며 개인적으로 정리하는 내용입니다.

CAP

Consistency, Availability, Partition resistance를 뜻한다.

CAP 원리

일관성과 가용성, 그리고 분리에 대한 저항을 모두 보장하는 분산 시스템을 구축하는 것은 불가능 하다는 것이 CAP 원리이다. 둘중 임의의 하나, 둘은 달성 할 수 잇지만 셋을 동시에 달성 할 수 없다. 따라서 시스템을 사용할 때에 무엇이 보장되고 무엇이 보장되지 않는지를 반드시 확인해야 한다.

일관성

모든 노드가 같은 시점에서 같은 자료를 본다는 뜻이다. 일관성을 보장하는 시스템은 다수의 복제본에 데이터 업데이트가 진행 되는 도중에 어떤 복제본에서 데이터를 읽는다고 해도 같은 시점에 동일하게 갱신 된 자료를 보게 된다는 것이다.

가용성

모든 요청이 성공,실패 여부에 관한 응답을 반드시 받게 된다는 뜻이다. 간단하게 가용성은 시스템이 정상적으로 가동 중이라는 뜻이다.

시스템이 장애를 보고하는 능력을 갖추고 있다는 뜻이기도 하다.

분리 저항

임의의 데이터가 유실되거나 시스템 일부가 실패해도 시스템이 계속 가동 됨을 뜻한다.

정리

  • 전통적인 관계형 데이터베이스는 가용성와 일관성에 초점을 둔다.
    • 트랜잭션, 기타 기법을 이용하여 업데이트가 원자적으로 진행 되는 것을 보장한다.
  • HBase,Redis 등은 일관성과 분리 내구성에 더 초점을 둔다.
    • 분리가 발생 했을 때 비일관적인 상황을 허락하지만 읽기전용으로 변경 되거나 혹은 모든 요청에 응답하지 않음으로써 일관성을 유지한다.
  • Cassandra,Dynamo 등은 가용성과 분리 내구성에 초점을 둔다.
    • 일부 요청에 대해 예전 데이터를 응답하는 일이 있더라도 모든 요청에 항상 응답할 수 있게 설계되어 있다는 것이다.
    • 인터넷처럼 신뢰성이 떨어지는 매체를 통해 통신하는 전역 분산 네트워크에 많이 쓰인다.

서비스의 특성에 따라 어떤 것이 중요한지 고려하여 시스템을 선택하여야 한다.

그럼 이만 :-)


Back to posts