Quorum이란? 분산 시스템에서 합의를 이루는 최소 조건

Quorum의 정의

분산 시스템은 하나의 데이터를 여러 대의 서버(노드)에 나누어 저장합니다. 이때 문제는 ‘몇 대의 서버가 응답해야 그 결과를 신뢰할 수 있는가’입니다. 이 최소한의 동의 인원 수를 Quorum(정족수)이라고 부릅니다. 국회에서 법안을 통과시키려면 재적 의원의 과반수가 출석해야 하는 것처럼, 분산 시스템에서도 전체 노드 중 일정 수 이상이 동의해야 그 데이터를 ‘확정된 값’으로 인정합니다.

보통 전체 노드 수를 N이라 하면, Quorum은 N/2 + 1로 계산되는 경우가 많습니다. 예를 들어 노드가 5대라면 최소 3대의 동의가 있어야 합의가 성립됩니다.

동작 원리와 예시: R + W > N

Quorum은 읽기(Read)와 쓰기(Write)에도 각각 적용됩니다. 대표적인 공식이 ‘R + W > N’입니다. 여기서 N은 전체 복제본 수, W는 쓰기에 성공해야 하는 노드 수, R은 읽기 시 확인해야 하는 노드 수입니다.

예를 들어 N=3인 시스템에서 W=2, R=2로 설정했다고 가정해봅시다. 데이터를 쓸 때 3대 중 2대에만 저장되어도 성공으로 처리됩니다. 이후 데이터를 읽을 때도 2대에게 물어보는데, 쓰기에 참여한 노드와 읽기에 참여한 노드는 최소 1대 이상 겹치게 됩니다(2+2 > 3이므로). 즉 아무리 노드를 다르게 선택해도 최신 데이터를 가진 노드가 반드시 포함되어, 오래된 값을 읽는 상황을 방지할 수 있습니다.

만약 R=1처럼 정족수보다 낮게 설정하면 속도는 빨라지지만, 아직 갱신되지 않은 노드의 값을 읽어 데이터 불일치가 발생할 위험이 커집니다.

실무에서 Quorum이 중요한 이유

Quorum은 네트워크 장애나 노드 다운 상황에서도 시스템이 잘못된 결정을 내리지 않도록 막아주는 안전장치입니다. 특히 노드 간 네트워크가 끊겨 두 그룹으로 나뉘는 ‘스플릿 브레인’ 상황에서, 과반수를 확보한 그룹만 정상 동작하도록 하여 데이터가 두 갈래로 갈리는 것을 방지합니다.

  • Cassandra, DynamoDB 같은 NoSQL: Quorum 옵션으로 읽기/쓰기 일관성 수준을 조절
  • Raft, Paxos 같은 합의 알고리즘: 리더 선출 시 과반수 투표로 Quorum 확보
  • Zookeeper, etcd: 클러스터 구성 시 홀수 개 노드를 권장하는 이유도 Quorum 계산 때문

결국 Quorum은 ‘얼마나 많은 노드가 동의해야 믿을 수 있는가’에 대한 수학적 기준이며, 성능(속도)과 일관성(정확성) 사이의 균형을 조절하는 핵심 파라미터라고 할 수 있습니다.

관련 글

댓글 남기기