목록 보기
메시지 트래픽 100배에도 끄떡 없게 고객 테이블 뜯어고치기 (1)
백엔드

메시지 트래픽 100배에도 끄떡 없게 고객 테이블 뜯어고치기 (1)

채널톡
채널톡
2026년 1월 22일

두줄요약

Badge 업데이트가 User 테이블 전체를 느리게 만든 원인을 분석하고, 별도 테이블 분리 전략을 설명했습니다. 16억 건 규모를 안전하게 옮기기 위해 Export/Import와 Glue 기반 마이그레이션을 설계했습니다.

문제 상황

  • User 테이블에 고객 프로필과 Badge 상태가 함께 묶여 있어 스파이크성 Badge 업데이트가 전체 테이블 성능을 저하
  • DynamoDB 쓰기 용량 고갈과 GSI 핫 파티션으로 인한 Back-Pressure가 정상적인 User 업데이트까지 차단

원인 분석

  • Badge 업데이트가 메시지 발송 시점에 집중되며 트랜잭션과 재시도로 WCU 소모가 크게 증가
  • 모든 GSI가 channelId에 몰려 특정 파티션 병목이 발생하고, 메인 테이블 쓰기 거부로 전파

해결 방법

  • Badge를 User 테이블에서 분리해 별도 UserBadge 테이블로 설계 전환
  • 대규모 이관은 DynamoDB Export/Import와 AWS Glue를 사용해 RCU/WCU 소모 없이 진행
  • 마이그레이션 중 변경분 유실을 막기 위해 TmpUserBadge와 동기 Dual Write를 활용

댓글 0

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

댓글을 불러오는 중...