Redis Cache 성능 비교
문제상황
사용자에게 경로를 제공하기 위해 Kakao, Naver, Tmap Open API를 사용한다. 위 API 제공에 있어 호출까지의 시간이 소요되고 비용 낭비가 발생
- 이미 반환된 경로를 사용자가 재사용하는 경우가 많기 때문에 경로를 임시 메모리에 저장하는 로직 필요
- ‘경로’라는 데이터 특성 상 한번 참조된 값에 대해 변경이 자주 일어나지 않음
접근
- Redis Cache를 이용하여 Open API의 반환값을 일부 저장하여 사용자에게 제공
적용
- @CacheEvict와 @Cacheable Annotation을 사용하여 API에 레디스 캐시 적용
시퀀스 다이어그램
시나리오
Redis Cache를 적용하였을 때 성능 분석을 위해 다음과 같은 시나리오를 세우고 테스트 진행
- 회원가입 수행
- 보행자 경로 API를 요청하여 수행
결론
평균 Latency 4.12배 향상
- 추가로, 매번 OpenAPI를 호출하지 않기 때문에 네트워크 비용을 아끼는 효과도 있음
동기 처리 [평균 Latency 91.88ms]
비동기 처리 [평균 Latency 22.26ms]
분석
- Redis Cache를 사용할 경우 사용하지 않은 경우에 비해 4.12배의 속도 성능 향상
- Open API를 중복 요청하지 않아 네트워크 비용 절감
- CacheEvict를 통해 사용자의 요청 경로가 변경된 경우 기존 Cache값을 삭제하고 변경된 경로를 저장하고 제공하여 서비스상 유연성 향상