Gossip Protocol이란? 노드들이 소문내듯 정보를 퍼뜨리는 방식

Gossip Protocol의 정의

Gossip Protocol은 분산 시스템에서 노드들이 서로 정보를 주고받을 때, 중앙 서버 없이 임의의 상대에게 무작위로 데이터를 전달하며 전체 네트워크에 정보를 퍼뜨리는 통신 방식입니다. 이름 그대로 사람들 사이에 소문이 퍼지는 방식을 본떠 만들어졌습니다. 한 사람이 친구 몇 명에게 소식을 전하면, 그 친구들이 또 다른 친구에게 전하면서 결국 모두가 알게 되는 과정과 동일한 원리로 동작합니다.

동작 원리와 예시

Gossip Protocol의 동작 방식은 대체로 다음과 같습니다.

  • 각 노드는 주기적으로 자신이 알고 있는 정보를 임의의 다른 노드 몇 개에게 전달합니다.
  • 정보를 전달받은 노드는 다시 다른 임의의 노드에게 이를 전파합니다.
  • 이 과정이 반복되면서 정보는 지수적으로 빠르게 네트워크 전체에 퍼집니다.

예를 들어 100개의 노드로 구성된 클러스터에서 노드 A의 상태 변화가 발생했다고 가정해봅시다. A는 임의의 3개 노드에게 상태를 알리고, 그 노드들이 또 다른 3개씩에게 전달하는 방식으로 몇 번의 라운드만 지나도 전체 노드가 최신 상태를 공유하게 됩니다. 이는 중앙 서버가 모든 노드에게 일일이 알리는 방식보다 훨씬 유연하고, 일부 노드가 다운되어도 다른 경로를 통해 정보가 계속 전파된다는 장점이 있습니다.

실무에서 왜 쓰는지

Gossip Protocol은 대규모 분산 시스템에서 노드 간 상태를 동기화하거나 장애를 감지하는 데 널리 사용됩니다. Amazon의 DynamoDB, Apache의 Cassandra, Consul과 같은 시스템은 각 노드의 생존 여부와 클러스터 멤버십 정보를 Gossip 방식으로 주고받습니다. 중앙 관리자가 없어도 시스템이 스스로 상태를 파악할 수 있어 확장성이 뛰어나고, 특정 노드나 서버가 장애를 일으켜도 전체 통신이 마비되지 않는 강한 내결함성을 갖습니다. 다만 정보가 모든 노드에 도달하기까지 약간의 지연이 발생할 수 있다는 점은 감안해야 합니다. 결국 Gossip Protocol은 ‘느슨하지만 견고하게’ 정보를 퍼뜨리는 전략이라 할 수 있습니다.

댓글 남기기