[Study] 기술 부채 - CAP

1 분 소요

Study : 내가 부족한 기술(CAP)에 대해 정리한다.

CAP

“적절한 응답 시간 내 세 가지 속성을 모두 만족시키는 분산 시스템을 구성할 수 없다”

CAP은 분산 데이터 베이스 속성에 관한 이론이다.

Consistency(일관성)

  • 서로 다른 DB가 동일한 데이터를 보관하는 것에 대한 보장
  • 어딜 찌르든 같은 데이터 반환 (완벽한 즉각적 동기화는 없음. 그저 사용성이 떨어지지 않는 선에서의 동기화일뿐)

Availability(가용성)

  • 언제든지 이용 가능할 것에 대한 보장
  • 무중단
  • 모든 요청의 데이터가 반드시 일치하지 않아도 됨

Partition Tolerance(분할 허용성)

  • 노드간 통신이 안되더라도 여전히 동작하는것에 대한 보장
  • 분할 = (네트워크, 서버 장애 등의 이유로)노드간 연결 끊김 현상
  • 한 쪽이 장애 시 다른 쪽의 운영은 계속 유지 되나 데이터가 다를 수도 또는 복구될 때 까지 기다려야 할 수 있음.

다시 CAP

  • CAP : 분산 데이터베이스 시스템은 분할이 생겼을 시 일관성가용성 중 하나를 희생해야 한다는 것을 의미.

분산 데이터베이스는 반드시 분할이 발생할 수 밖에 없으므로 P는 가지고 가야 한다.

그럼 CA 중 선택을 해야 하는 것인데,

AP 선택 시, 분할이 발생하면 일관성은 포기하고 다른 노드로 데이터를 제공하는 가용성을 선택한 방식이 될 것 이고

CP 선택 시, 분할이 발생하면 가용성을 포기하고 잠시 서버를 중단한 뒤 데이터 복구를 통한 일관성을 보장할 수 있을 것이다.

그래서 NoSQL 은 AP, CP 로 나뉜다.

CA는 모놀리식 데이터 베이스 시스템을 의미한다.

예제

MongoDB (CP)

image

  • 여러개 혹은 하나의 프라이머리에 이진 JSON 데이터를 저장
  • 각 프라이머리는 로그를 통해 비동기적으로 업데이트 되는 복제본을 가진 여러개의 세컨더리 노드를 가짐
  • 각 노드는 다른 모든 노드와 통신을 통해 서로의 상태를 확인
  • 통신 불가 시 접근 불가능 상태로 지정
  • 프라이머리 노드 중단 시 세컨더리 중 하나가 프라이머리로 승격
  • 선출 전까지 모든 쓰기 작업 중단(가용성 X)

Cassandra (AP)

image

  • 카산드라는 Peer-to-peer 시스템 > 프라이머리 없이 모든 노드가 읽기/쓰기 작업을 수행. 복제본을 다른 노드에 저장
  • 프라이머리 노드 없이 모든 노드가 같은 작업을 수행하므로 SPF가 없음.(장점)
  • 지정된 복제 수만큼 시계방향으로 인접한 노드에 복제
  • 한 노드가 노드간 통신이 끊긴 상황
    • 다른 노드와 통신이 불가능 하더라도 여전히 읽기/쓰기작업은 가능한 상태
    • 그러나 다른 노드와 데이터가 일치하지는 않음(일관성 깨짐)
    • 최종적 일관성을 통해 추후 복구

참고

댓글남기기