목록 보기
DynamoDB야 진정해! Kafka와 Redis로 구현하는 실시간 역압력 아키텍처 구축기
백엔드

DynamoDB야 진정해! Kafka와 Redis로 구현하는 실시간 역압력 아키텍처 구축기

롯데ON
롯데ON
2025년 12월 2일

두줄요약

DynamoDB 부하를 실시간으로 감지해 Kafka 컨슈머를 pause/resume하는 역압력 아키텍처를 구축했습니다. 운영 적용 후 처리량을 낮추고 실시간 API 안정성과 비용 절감을 확인했습니다.

문제 상황

  • DynamoDB를 공유 자원으로 쓰는 환경에서 새벽 배치 작업이 실시간 API 자원을 잠식하는 처리량 경쟁
  • 배치 컨슈머의 대량 조회·업데이트로 DynamoDB throttling과 API 에러 발생

원인 분석

  • 실시간 작업과 배치 작업이 동일한 DB 자원을 두고 경쟁하는 구조
  • 고정 동시성, Bulkhead, RateLimiter 같은 정적 제어는 한가할 때 자원 낭비와 바쁠 때 과부하 대응 실패를 유발
  • DynamoDB는 RCU/WCU와 Provisioned 처리량 비율로 부하를 판단할 필요

해결 방법

  • CloudWatch 지표와 SNS 알람으로 DynamoDB 부하를 감지하고 Redis Stream으로 제어 신호 전파
  • Spring Kafka에서 pause/resume으로 배치 컨슈머 소비 속도를 동적으로 조절
  • ConsumerRebalanceListener의 onPartitionsAssigned 재구현으로 리밸런싱 이후에도 역압력 상태 유지

성능/운영 포인트

  • CloudWatch 1분 집계와 Provisioned 지표 5분 집계 차이를 LAST 함수로 보정
  • 운영 적용 후 읽기·쓰기 처리량 각각 11%, 47.5% 감소
  • 향후 고해상도 지표, 보조 메트릭, Global RateLimiter 도입 검토

댓글 0

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

댓글을 불러오는 중...