
12
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
Req-Saver(현 req-shield)로 Thundering Herd 문제 해결
이 게시물은 대량 트래픽 처리 시 캐시의 Thundering Herd 문제를 해결하기 위해 LINE+에서 개발한 오픈소스 라이브러리 req-shield의 배경과 기능, 구현 방법을 소개합니다.핵심 아이디어
- 캐시에 데이터가 없을 때 로컬 또는 글로벌 락을 사용해 단일 요청만 백엔드에 전달
- 캐시에 데이터가 있을 때 TTL 임박 시 비동기 갱신으로 캐시 연속성 유지
구현 및 모듈 구성
- 락 메커니즘은 로컬 락(세마포어)과 글로벌 락(사용자 주입 함수) 지원
- 코어 모듈과 Spring 모듈(@ReqShieldCacheable 애너테이션)으로 제공
- 지원 모듈에는 테스트 환경 및 유틸 포함
성능 및 이슈
- 부하 테스트 결과 Spring MVC, WebFlux, Kotlin Coroutine 환경 모두에서 기존 방식 대비 35%~103% TPS 향상
- Spring @Cacheable sync 옵션 사용 시 발생하는 성능 저하 문제와 req-shield의 개선점 설명
적용 권장 케이스
- 대량 트래픽 및 공통 데이터 조회 시스템
- 캐시 TTL이 짧고 백엔드 부하가 큰 환경