Gossip Protocol의 정의
Gossip Protocol(가십 프로토콜)은 분산 시스템에서 노드들이 서로의 상태 정보를 주고받을 때, 마치 사람들 사이에 소문이 퍼지듯 무작위로 정보를 전파하는 통신 방식입니다. 중앙 서버가 모든 노드에게 일일이 알리는 대신, 각 노드가 임의로 선택한 몇 개의 이웃 노드에게만 정보를 전달하고, 그 노드가 또 다른 노드에게 전달하는 식으로 정보가 네트워크 전체에 퍼져나갑니다. 이런 특성 때문에 Epidemic Protocol(전염병 프로토콜)이라고 불리기도 합니다.
동작 원리와 예시
가십 프로토콜의 핵심은 ‘주기적, 무작위, 반복적 전파’입니다. 동작 방식을 단순화하면 다음과 같습니다.
- 각 노드는 일정 주기마다(예: 1초마다) 자신이 알고 있는 상태 정보를 몇 개의 무작위 노드에게 전송
- 정보를 받은 노드는 자신의 상태와 비교해 더 최신 정보라면 갱신하고, 다시 다른 노드에게 전파
- 이 과정이 반복되면서 결국 클러스터의 모든 노드가 동일한 정보를 갖게 됨(Eventually Consistent)
비유하자면, 회사에서 중요한 공지를 전 직원에게 이메일로 한 번에 보내는 대신, ‘너는 옆자리 동료 두 명에게만 이야기해줘’라고 하는 것과 비슷합니다. 처음엔 느려 보이지만, 각자가 계속 옆 사람에게 전달하다 보면 순식간에 회사 전체에 소문이 퍼지는 원리와 같습니다. 실제 구현에서는 각 노드가 node_id, state, version 같은 정보를 담은 메시지를 주고받으며, 버전이 더 높은 정보로만 갱신하는 방식으로 충돌을 방지합니다.
실무에서 왜 사용하는가
가십 프로토콜은 대규모 분산 시스템에서 노드 수가 늘어나도 확장성이 뛰어나다는 장점이 있습니다. 중앙 서버 없이도 정보가 퍼지기 때문에 단일 장애점(SPOF)이 없고, 일부 노드가 죽거나 네트워크가 끊겨도 전체 시스템에 미치는 영향이 적습니다. 대표적으로 Cassandra, Consul, Redis Cluster 같은 분산 데이터베이스와 서비스 디스커버리 도구들이 노드의 생존 여부(Failure Detection)나 클러스터 멤버십 정보를 공유할 때 가십 프로토콜을 활용합니다. 정확한 실시간성이 필요한 곳보다는, 결국엔 모두가 같은 상태로 수렴하기만 하면 되는 상황에서 특히 효과적입니다.