
백엔드
알리는사람들의 서버리스 기반 현대화 여정 – DynamoDB 최적화 사례
두줄요약
DynamoDB로 메시징 서비스를 현대화하는 과정에서 발생한 핫 파티션과 쓰로틀링 문제를 다뤘습니다. 배치 쓰기, 샤딩, 셔플링, Warm Throughput으로 처리량과 안정성을 높인 사례를 정리했습니다.
문제 상황
- 메시지 발송 트래픽 스파이크에 대응하기 위해 RDB 중심 구조를 DynamoDB로 전환하는 과정에서 핫 파티션, 쓰로틀링, GSI 파티션 이슈, 단건 쓰기 비용 비효율이 발생
- 메시지 그룹과 다수 아이템의 1:N 구조를 단순 파티션 키로 매핑하자 특정 파티션에 대량 데이터가 몰리는 한계가 드러남
해결 방법
- BatchWriteItem으로 단건 쓰기를 배치 쓰기로 바꿔 네트워크 왕복과 처리 오버헤드 감소
- 그룹ID#샤드ID 형태의 샤딩과 메시지 순서 셔플링으로 쓰기 부하를 분산
- Warm Throughput 설정으로 테이블 처리량을 높여 대규모 쓰기 요청에 대응
성능/운영 포인트
- 배치 쓰기만으로는 파티션 한계에 도달해 추가적인 키 설계가 필요
- 샤딩과 셔플링 조합이 가장 안정적인 성능을 제공
- 운영 데이터 기반으로 샤드 크기와 Capacity를 동적으로 조정할 필요
