Anti-Entropy란? 분산 시스템에서 데이터 불일치를 복구하는 원리

Anti-Entropy의 정의

분산 시스템에서는 같은 데이터를 여러 노드에 복제해서 저장한다. 그런데 네트워크 장애, 노드 다운, 지연 등의 이유로 노드 간 데이터가 서로 달라지는 상황이 발생하는데, 이를 ‘엔트로피(entropy)’가 증가한다고 표현한다. Anti-Entropy는 이렇게 벌어진 데이터 불일치를 주기적으로 감지하고 복구해서 노드 간 데이터를 다시 동일하게 맞추는 메커니즘을 말한다. Cassandra, DynamoDB 같은 NoSQL 분산 데이터베이스에서 널리 사용되는 개념이다.

동작 원리와 예시

Anti-Entropy는 보통 백그라운드에서 주기적으로 실행되며, 노드끼리 데이터 상태를 비교한 뒤 차이가 있는 부분만 동기화한다. 이때 전체 데이터를 다 비교하면 비효율적이므로 ‘머클 트리(Merkle Tree)’라는 자료구조를 활용하는 경우가 많다.

머클 트리는 데이터를 잘게 나눠 각 조각의 해시값을 구하고, 이를 계속 묶어서 상위 해시를 만드는 트리 구조다. 두 노드가 최상위 해시값만 비교해서 같으면 데이터가 동일하다고 판단하고, 다르면 트리를 타고 내려가면서 어느 부분이 다른지 빠르게 찾아낸다.

이를 도서관 두 곳의 장서를 비교하는 상황에 비유할 수 있다. 책 한 권씩 전부 대조하려면 시간이 오래 걸리지만, 서가별로 ‘요약 체크리스트’를 만들어 두면 체크리스트만 비교해서 다른 서가만 골라 자세히 확인하면 된다. 머클 트리가 바로 이 체크리스트 역할을 한다.

실무에서 Anti-Entropy를 쓰는 이유

분산 시스템은 가용성을 위해 데이터를 여러 노드에 복제하지만, 복제 과정에서 일시적인 장애나 지연으로 인해 노드 간 데이터가 어긋나는 것을 완전히 막을 수는 없다. Anti-Entropy는 이런 불일치를 사람이 개입하지 않아도 시스템이 스스로 복구하게 만들어 준다.

  • 서비스 중단 없이 백그라운드에서 데이터 정합성을 유지할 수 있다
  • 머클 트리 기반 비교로 네트워크 트래픽과 연산 비용을 줄일 수 있다
  • 장애 복구 이후에도 데이터가 자동으로 다시 맞춰져 운영 부담이 줄어든다

결국 Anti-Entropy는 ‘완벽하게 일관된 상태’를 강제하기보다, 시간이 지나면 자연스럽게 데이터가 수렴하도록 설계된 실용적인 복구 전략이라고 이해하면 된다.

댓글 남기기