Notice
Recent Posts
Recent Comments
Link
DevKim
[Webtooniverse] 서버 부하를 줄이기 위한 캐싱 적용 본문
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
'Spring Project > Webtooniverse' 카테고리의 다른 글
i/o bound 부하 예측하는 명령어 (0) | 2021.08.31 |
---|---|
[Refactor] Querydsl Result Aggregation 사용하여 query 개수 감소 및 코드 단순화 (0) | 2021.08.19 |
[webtooniverse] 내가 만든 서비스의 성능을 개선해보자 (1) - Scale out (0) | 2021.08.17 |
[ webtooniverse ] 내가 만든 서비스는 얼마만큼의 사용자를 견딜 수 있을까? - 서버 스트레스 테스트 (1) (0) | 2021.08.17 |
[ webtooniverse ] 프로젝트 구조 변경 - 무중단 배포 도입 (0) | 2021.08.16 |
Comments