Hot Partition이란? 샤딩에서 특정 노드만 과부하 걸리는 이유

Hot Partition의 정의

샤딩(Sharding)은 대용량 데이터를 여러 노드에 나누어 저장하는 기법입니다. 이론적으로는 데이터가 고르게 분산되어 각 노드가 비슷한 부하를 받아야 하지만, 실제로는 특정 파티션(샤드)에만 트래픽이나 데이터가 몰리는 현상이 발생합니다. 이를 ‘Hot Partition’ 또는 ‘Hot Spot’이라고 부릅니다. 예를 들어 전체 서버가 10대인데 그중 1대만 CPU 사용률 90퍼센트를 넘고 나머지는 10퍼센트대에 머무는 상황이 바로 Hot Partition입니다.

왜 특정 노드만 과부하에 걸릴까

Hot Partition이 생기는 가장 흔한 원인은 샤딩 키(Shard Key) 선택이 잘못된 경우입니다. 예를 들어 사용자 데이터를 가입 날짜로 샤딩했다고 가정해봅시다. 오늘 가입한 신규 유저는 접속 빈도가 매우 높은데, 이들이 모두 ‘오늘 날짜’라는 동일한 샤드에 몰리게 되면 그 샤드 하나만 트래픽 폭탄을 맞습니다. 마치 마트에서 계산대를 여러 개 열어놨는데 손님들이 안내 없이 한 줄에만 몰리는 것과 같습니다. 다른 계산대는 텅 비어 있는데 한쪽 줄만 끝없이 길어지는 셈이죠.

이 외에도 다음과 같은 원인들이 있습니다.

  • 특정 연예인, 인기 상품처럼 소수 키에 접근이 집중되는 경우 (Celebrity Problem)
  • 시간 기반 키를 사용해 최신 데이터에만 쓰기가 몰리는 경우
  • 해시 함수의 분포가 고르지 않아 특정 샤드로 쏠리는 경우

실무에서 어떻게 대응하는가

Hot Partition을 방지하려면 샤딩 키 설계 단계에서부터 신경 써야 합니다. 대표적인 해결책은 다음과 같습니다.

  • 랜덤 접미사 추가: 키 뒤에 임의의 값을 붙여 동일 키라도 여러 샤드에 분산시키는 방식 (예: ‘user123_01’, ‘user123_02’)
  • 복합 키 사용: 단순 시간값 대신 사용자ID와 시간을 조합해 분산도를 높임
  • 일관된 해싱(Consistent Hashing) 적용: 노드 추가/삭제 시에도 데이터 재배치를 최소화하면서 균등 분산 유지

DynamoDB, Cassandra 같은 분산 데이터베이스는 이런 Hot Partition 문제를 매우 중요하게 다루며, 파티션 키 설계 가이드를 별도로 제공할 정도입니다. 결국 샤딩의 성능은 ‘몇 개로 나누었는가’보다 ‘얼마나 고르게 나누었는가’에 달려 있습니다. 시스템 설계 시 예상 트래픽 패턴을 미리 분석해 특정 키에 쏠림이 없는지 검토하는 습관이 중요합니다.

댓글 남기기