목록 보기
채널코퍼레이션의 Amazon DynamoDB와 함께한 아키텍처 현대화 여정 – 3부
백엔드

채널코퍼레이션의 Amazon DynamoDB와 함께한 아키텍처 현대화 여정 – 3부

AWS
AWS
2026년 9월 7일

두줄요약

채널코퍼레이션은 DynamoDB User 테이블의 Badge 트래픽과 GSI 병목을 분리해 해결했습니다. Export/Glue/Import 기반 마이그레이션으로 서비스 영향 없이 5.5시간 수준으로 전환했습니다.

문제 상황

  • 채널톡의 범용 User 테이블에 Badge, 프로필, 태그, 상태가 함께 있어 읽지 않은 메시지 급증 시 전체 쓰기 성능이 흔들림
  • 트랜잭션 충돌 재시도와 GSI 단일 파티션 집중으로 WCU가 소진되고, 부트 기능까지 영향 받는 구조

원인 분석

  • Badge 업데이트가 트래픽 스파이크를 일으키는 반면 기존 User 테이블은 균등 분산 쓰기 패턴과 섞여 있었음
  • channelId 기반 GSI 3개가 동일 파티션에 부하를 몰아 back pressure를 유발
  • 항목 분리만으로는 동일 테이블의 트랜잭션 충돌과 GSI 업데이트 전파를 해소할 수 없었음

해결 방법

  • Badge 기능을 UserBadge 전용 테이블로 분리하고, User 테이블과 용량 모드를 각각 다르게 운영
  • 마이그레이션은 Export to S3, AWS Glue, Import from S3와 TmpUserBadge를 활용해 프로덕션 RCU/WCU 소모 없이 진행
  • 동기식 이중 쓰기로 이전/신규 테이블을 함께 검증하며 전환 안정성을 확보

다음 읽기

#DynamoDB 주제를 다룬 다른 회사 글

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

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

채널톡
채널톡
백엔드

댓글 0

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

댓글을 불러오는 중...