목록 보기
DynamoDB 핫 파티션을 해결하는 3가지 방법 (4): 쓰기 샤딩
백엔드

DynamoDB 핫 파티션을 해결하는 3가지 방법 (4): 쓰기 샤딩

채널톡
채널톡
2026년 8월 31일

두줄요약

member GSI의 핫 파티션을 쓰기 샤딩으로 분산한 과정을 다뤘습니다. 공통 프레임워크와 단계적 마이그레이션, 백필 중 Rolling Hot Partition 대응까지 설명했습니다.

문제 상황

  • User 테이블의 member GSI가 channelId 단위로 쓰기가 집중되어 핫 파티션과 쓰로틀링이 발생하는 구조
  • Back-Pressure로 인해 User 테이블 쓰기까지 거부되어 Boot 요청 실패로 이어질 위험

원인 분석

  • 단일 channelId 로 쓰기가 모여 DynamoDB 물리 파티션의 1,000 WCU 한계에 먼저 도달
  • 기존 조회 패턴은 channelId 와 memberId 가 모두 있어 단건 조회가 가능했지만, 쓰기 분산은 되지 않음
  • 백필에서는 Export 파일의 순서가 비슷한 키를 연속 처리하게 만들어 Rolling Hot Partition 발생

해결 방법

  • memberId 로 suffix를 계산해 channelId 와 조합하는 결정적 쓰기 샤딩 적용
  • 공통 프레임워크로 저장, 조회, 백필의 샤드 계산 규칙을 통일
  • DynamoDB Export + AWS Glue 백필에 Rate Limit과 Shuffle을 함께 적용
  • 기존 GSI에서 신규 샤드 GSI로 단계적으로 전환하고 검증 후 제거

적용해볼 점

  • 조회 입력만으로 대상 샤드를 재현할 수 있는지 먼저 확인
  • 쓰기량뿐 아니라 읽기 비용과 백필 운영 비용까지 함께 고려
  • 대규모 백필에서는 처리량 제한과 처리 순서 섞기를 같이 설계

다음 읽기

#DynamoDB 주제를 이어서 읽기

DynamoDB 핫 파티션을 해결하는 3가지 방법 (1): 인덱스 테이블로 GSI 떼어내기 설계편

DynamoDB managed GSI의 핫 파티션이 Boot 트래픽까지 막는 구조를 분석했습니다. 이를 해결하기 위해 인덱스 테이블과 쓰기 전파 파이프라인을 설계했습니다.

채널톡
채널톡
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...