DynamoDB 부하, Kafka와 Redis로 실시간 제어!

by DD
6개월 전
조회수 18

DynamoDB 쓰로틀링 문제 해결을 위해 KafkaRedis 기반의 실시간 역압력 아키텍처를 구축함

CloudWatch를 활용하여 DynamoDB 부하를 모니터링하고, SNS를 통해 알림을 전파함

읽기/쓰기 처리량 11%, 47.5% 감소 및 불필요한 Auto-Scale 비용 절감 효과를 얻음

실시간 역압력 아키텍처의 핵심 구성 요소

구체적으로 CloudWatch를 통해 DynamoDB 지표를 수집하고, SNS를 통해 알림을 전송한다. 따라서 Redis Stream을 활용하여 알림을 전파하고, Spring Kafka를 통해 컨슈머의 pause/resume을 제어한다. 결과적으로 실시간 부하에 유연하게 대응하는 시스템을 구축했다.

정적 제어 vs 실시간 제어: 트레이드오프 분석

정적 제어 방식은 DB 부하가 적을 때 자원 낭비를 초래하고, 부하가 높을 때는 장애 위험이 있다. 반면, 실시간 역압력 아키텍처DynamoDB의 부하를 실시간으로 감지하여 Kafka 컨슈머의 처리량을 동적으로 조절한다. 따라서 자원 효율성안정성을 동시에 확보한다.

실전 적용을 위한 주요 고려 사항

먼저 CloudWatch 지표 집계 주기의 한계를 인지하고, 추가적인 보조 지표를 활용해야 한다. 따라서 Pause/Resume 방식의 비효율성을 개선하기 위해 Global RateLimiter 도입을 고려한다. 결과적으로 유연한 처리량 조절을 통해 시스템의 안정성을 더욱 향상시킬 수 있다.

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