목록 보기
DynamoDB Limit 설정으로 RCU 97% 절감한 이야기
백엔드

DynamoDB Limit 설정으로 RCU 97% 절감한 이야기

버즈빌
버즈빌
2026년 1월 23일

두줄요약

DynamoDB Query의 무제한 스캔과 Strong Consistent Read로 급증한 RCU 원인을 분석했습니다. SearchLimit과 Eventually Consistent Read 적용으로 RCU를 최대 97% 절감했습니다.

문제 상황

  • 특정 서비스 배포와 트래픽 증가 이후 DynamoDB RCU 사용량 1k/s에서 최대 130k/s로 급증
  • 최근 기록 조회 API에서 파티션당 평균 약 300개 아이템 전체 스캔과 Strong Consistent Read 사용

원인 분석

  • guregu/dynamo의 Iter()가 첫 Next() 호출에서 페이지 전체를 조회하는 구조
  • 필터 사용 시 Limit()이 DynamoDB API의 Limit으로 전달되지 않아 추가 페이지 반복 가능성
  • Eventually Consistent Read 대비 2배 RCU를 소비하는 Strong Consistent Read

해결 방법

  • 세션당 요청 수 P99 분석을 근거로 33~66 범위의 SearchLimit 적용
  • 조회 요구사항과 클라이언트 재시도 로직을 검토해 Eventually Consistent Read 전환
  • ConsumedCapacity 로깅과 Query returned Item count 지표를 통한 RCU 소비 모니터링

성능/운영 포인트

  • A 테이블 RCU 60k/s에서 8k/s로 87% 절감, C 테이블 70k/s에서 2k/s로 97% 절감
  • API 성공률 유지와 p95 응답 시간 97% 감소
  • 병렬 조회 취소로 발생하는 context.Canceled를 정상 동작으로 분류해 모니터링 예외 처리

다음 읽기

#DynamoDB 주제를 이어서 읽기

DynamoDB Limit 설정으로 RCU 97% 절감한 이야기

DynamoDB 조회에서 Limit 미설정과 Strong Consistent Read가 RCU 급증의 원인이었습니다. SearchLimit 적용과 일관성 수준 조정으로 RCU를 최대 97% 절감했습니다.

버즈빌
버즈빌
백엔드

댓글 0개

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

댓글을 불러오는 중...