Redis 캐싱했는데도 느렸던 이유, RTT가 숨은 범인이었다
·
트러블슈팅
TL;DR거래대금 상위 50개 기업 조회 API가 임시 테이블 정렬로 인해 10초 이상 걸리자 redis에 캐싱해 3초까지 줄였지만 실시간 주가 50회 개별 조회가 RTT 70 ms씩 추가돼 병목이 남았다. redis 파이프라인을 활용한 벌크 조회로 redis 요청을 50→1회로 줄여 최종 응답을 200 ms 이하로 단축했고, 병목은 항상 ‘가장 느린 부분’을 찾아야 한다. 최근 신규 서비스를 준비하며 신규 API를 개발하는 일이 많았는데, 그중 API 성능을 높이기 위해 Redis 캐시를 도입하여 성능 개선을 시도했으나 기대한 만큼 개선 효과를 보지 못한 일이 발생하였습니다. 이번 글에서는 해당 성능 이슈의 원인을 알아보고, 병목 지점을 분석하여 API 성능을 개선한 해결방안을 정리해보려고 합니다. 문..
[Redis] Redis 캐시(Cache)를 적용해 조회 성능 개선하기
·
Database
저번 포스팅에서 Spring에 redis를 연동하여 redis에 데이터를 저장하는 방법을 알아보았다. redis 연동 연습 코드는 아래 github에서 볼 수 있다. https://github.com/seungjjun/CodingLife/tree/main/230216 이번에는 KiCK-OFF 프로젝트에 redis cache를 적용해서 프로젝트의 성능을 개선해보려고 한다. 캐시(Cache)? 그러면 캐시가 뭔데 성능을 향상할 수 있다는 것인지 알아보자. 캐시를 간단하게 말하면 DB에 자주 접근해서 가져오는 데이터를 임시로 저장해 둔 뒤, 이후 동일한 데이터 요청이 들어왔을 때 DB에 접근하지 않고 아까 저장해 둔 데이터를 주는 방식이다. 이러한 캐시를 이용한 서비스는 성능적인 측면에서 많은 이점을 얻을 수..
[Redis] SpringBoot Redis 적용기
·
Database
기존 KiCK OFF 프로젝트에 Redis를 적용하기 위해 Spring Boot에 Redis를 적용하는 방법을 간단한 프로젝트를 만들어서 공부해 보았다. Redis 설정 build.gradle 우선 build.gradle에 redis를 사용하기 위해 의존성을 추가하고 빌드를 해준다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' Redis 사용을 위한 Config 클래스 설정 @Configuration @EnableRedisRepositories public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${sprin..