노드 한 대를 늘렸을 뿐인데 94%가 움직였다 — 안정 해시 설계 (가상 면접 사례로 배우는 대규모 시스템 설계 기초 4편)
·
시스템 설계/가상면접 사례로 배우는 대규모 시스템 설계
데이터를 여러 서버에 나눠 담을 때 가장 먼저 떠오르는 방법은 나머지 연산이다. 키를 해시하고 서버 수로 나눈 나머지를 쓴다. 서버가 네 대면 hash(key) % 4, 여덟 대면 % 8이다. 코드로는 한 줄이고 계산도 빠르다. 문제는 서버 수가 바뀔 때다. 나누는 수가 바뀌면 나머지도 바뀌니까 키가 다른 서버로 이동한다. 여기까지는 예상할 수 있는데, 실제로 얼마나 움직이는지를 재 보고 나서 생각이 달라졌다. 서버를 여덟 대에서 아홉 대로 늘리는 것만으로 89%가, 열여섯 대에서 열일곱 대로 늘릴 때는 94%가 자리를 옮겼다. 5장은 이 문제를 다룬다. 안정 해시(consistent hashing)는 노드 집합이 바뀔 때 재배치되는 키를 최소로 만드는 해시 방식이고, 1997년 Karger 등의 논문에..