Spring Project/Webtooniverse
[Webtooniverse] 서버 부하를 줄이기 위한 캐싱 적용
on_doing
2021. 8. 20. 16:59
728x90
0. 개요
- 자주 호출되고 하루동안 업데이트가 발생하지 않는 데이터를 반복해서 DB에 요청을 하는 과정을 캐시 서버를 도입하여 개선해보려고합니다.
1. 캐싱을 적용할 대상 탐색
- Webtooniverse 랭킹
- Naver 랭킹
- Kakao 랭킹
- 베스트 리뷰어 추천 웹툰
- 베스트 리뷰
2. 스케쥴러를 사용하여 매일 자정 Cache를 초기화
@EnableScheduling
@Configuration
@RequiredArgsConstructor
public class Scheduler {
private final RedisTemplate redisTemplate;
private final WebtoonService webtoonService;
@Scheduled(cron = "0 0 0 * * *")
public void redisConnectionTest() {
//redis cache 삭제
redisTemplate.delete("bestReviewerWebtoon");
redisTemplate.delete("WeeklyTotalRankV2");
redisTemplate.delete("naverRank");
redisTemplate.delete("kakaoRank");
//caching
BestReviewerWebtoonResponseDto bestReviewerWebtoon = webtoonService
.getBestReviewerWebtoon();
Set<RankTotalResponseDto> monthTotalRank = webtoonService.getWeeklyTotalRank();
List<PlatformRankResponseDto> monthNaverRank = webtoonService.getNaverRank();
List<PlatformRankResponseDto> monthKakaoRank = webtoonService.getKakaoRank();
}
}
서버간 캐시 데이터를 통합하여 사용하기 위해 Global Cache 전략을 사용했다.
3. 캐싱 전후 비교
- 결과 TPS약 1.5배 상승, 총 응답 시간은 약 1.6배 감소
4. RDS CPU 사용량 절반 이상 감소
728x90