
게시글전체목록조회의 api를 Ngrinder로 부하테스트를 했을 때 평균 TPS가 106로 나오고 있으며 테스트 구간에서 TPS가 많이 튀지 않은 것으로 보아 서버 자체는 안정적으로 TPS를 받지만 성능상의 한계로 106의 TPS가 나오는 것으로 보인다.
분산캐시 대비 더 좋은 성능을 가지고 있고 설정이 간소하여 초기 캐싱으로는 Caffenine 로컬 캐시를 선택
캐싱전략
캐싱적용
CaffeineCacheManager 설정
@Configuration
public class CacheConfig {
@Bean
public CacheManager cacheManager(){
SimpleCacheManager cacheManager = new SimpleCacheManager();
CaffeineCache articlesCache = new CaffeineCache("articles",
Caffeine.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.SECONDS)
.recordStats()
.build());
cacheManager.setCaches(Arrays.asList(articlesCache));
return cacheManager;
};
}
캐시적용
// 전체 게시글 목록조회
// 페이지 번호별로 게시글 조회저장
@Cacheable(value = "articles", key="#pageable.getPageNumber()")
public Page<ArticleResponse> getArticles(Pageable pageable){
return articleRepository.findAllCustom(pageable);
}
결과

캐싱적용 결과 평균 TPS가 105 → 315로 **300%**가 증가하였다.
로컬캐시 적용으로 확실한 성능향상이 일어났다 하지만 시스템의 설계적인 측면에서 다음과 같은 로컬캐시의 단점으로 분산 캐시인 Redis를 적용하였다.