일관성 해싱 (Consistent Hashing)

컴퓨터과학·AI
한 줄 정의: 서버가 추가되거나 빠질 때 데이터를 최소한만 재배치하도록 설계된 분산 해싱 기법입니다.

쉽게 풀면

서버 3대에 데이터를 "번호 % 서버 수" 같은 단순한 나머지 연산으로 나눠 저장했다고 해봅시다. 서버가 4대로 늘어나면 나누는 수가 바뀌면서 거의 모든 데이터의 저장 위치가 뒤바뀌어, 대부분을 다시 옮겨야 합니다. 일관성 해싱은 이 문제를 해결하기 위해 서버와 데이터를 커다란 원형 시계판(해시 링) 위에 배치합니다. 데이터는 시계 방향으로 가장 가까운 서버에 저장되도록 정하는데, 이렇게 하면 서버 한 대가 추가되거나 빠져도 그 서버 주변의 데이터만 옮기면 되고 나머지는 그대로 유지됩니다.

왜 중요한가

분산 시스템은 서버 대수를 계속 늘리거나 줄이며 운영되기 때문에, 노드가 바뀔 때마다 데이터 대부분을 다시 옮겨야 한다면 성능과 안정성에 큰 부담이 됩니다. 일관성 해싱은 이 재배치 비용을 근본적으로 줄여주기 때문에 분산 캐시, 분산 데이터베이스, 콘텐츠 전송 네트워크(CDN), 로드밸런싱 등 대규모 시스템을 설계하는 논문에서 핵심 구성 요소로 자주 등장합니다. 또한 노드 장애나 확장이 빈번한 클라우드·엣지 환경에서 시스템의 확장성과 가용성을 뒷받침하는 기본 원리로 다뤄집니다.

논문에서는 이렇게 쓰입니다

"제안 시스템은 일관성 해싱을 적용하여 노드 추가 시 재분배되는 데이터의 비율을 전체의 1/N 수준으로 낮추었다."

이 문장은 서버(노드) 수가 N개일 때, 새 서버가 추가돼도 전체 데이터 중 극히 일부만 이동하면 되도록 설계했다는 뜻입니다. 분산 캐시, 분산 데이터베이스, 로드밸런싱 시스템에서 널리 쓰이는 기법입니다.

"본 연구에서 제안한 분산 캐시 계층은 일관성 해싱과 가상 노드 기법을 결합하여, 특정 캐시 서버에 요청이 쏠리는 현상을 완화하고 노드 간 부하를 고르게 분산시켰다."

대규모 웹 서비스의 캐시 계층에서 일관성 해싱을 응용한 사례입니다. 단순히 데이터를 재배치 없이 유지하는 것을 넘어, 가상 노드를 함께 사용해 서버 간 부하 편차까지 줄이려는 목적을 보여줍니다.

"블록체인 기반 P2P 네트워크에서는 일관성 해싱을 활용해 피어 노드가 임의로 참여·탈퇴하는 상황에서도 데이터 조회 경로의 안정성을 유지하도록 설계하였다."

P2P·블록체인 분야에서는 노드가 예고 없이 네트워크를 드나드는 일이 흔한데, 이런 환경에서도 데이터 위치 정보가 크게 흔들리지 않도록 일관성 해싱이 쓰인다는 점을 보여주는 예문입니다.

조금 더 깊게 보면

실제 구현에서는 서버 하나당 해시 링 위에 여러 개의 가상 노드(virtual node)를 배치하는 방식이 흔히 쓰입니다. 실제 서버 수가 적을 때 해시 링 위 위치가 불균등하게 흩어져 특정 서버에 데이터가 쏠릴 수 있는데, 가상 노드를 늘리면 이런 불균형이 완화되어 데이터가 서버들 사이에 더 고르게 분산됩니다. 논문에서는 이 균형 정도를 부하 분산(load balancing) 성능이나 노드 간 데이터 분포의 표준편차 같은 지표로 평가하는 경우가 많습니다. 또한 일관성 해싱과 함께 샤딩, 레플리케이션(복제) 전략을 같이 다루는 논문도 많은데, 이는 데이터 위치 결정과 데이터 내결함성 확보가 서로 밀접하게 연결된 문제이기 때문입니다.

주의할 점

일관성 해싱은 해시테이블과 이름은 비슷하지만 목적이 다릅니다. 해시 테이블이 한 컴퓨터 안에서 값을 빠르게 찾기 위한 자료구조라면, 일관성 해싱은 여러 대의 서버에 데이터를 어떻게 분산 배치할지 정하는 분산 시스템 설계 기법입니다. 서버 수가 적을 때는 데이터가 특정 서버에 쏠릴 수 있어, 실제 구현에서는 서버마다 가상 노드를 여러 개 두어 이를 보완합니다.

관련 용어