cleanUrl: /posts/spring-boot-with-caffeine-cache/

부제: 어떻게 하면 일을 조금이라도 안할까?

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/035804be-ed2d-4bee-a1ed-4ff608a21f1f/caffeine-cache-logo-spring-boot.png

<script async src="<https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js>"></script>
<ins class="adsbygoogle"
     style="display:block; width: 100%;"
     data-ad-format="fluid"
     data-ad-layout-key="-fb+5w+4e-db+86"
     data-ad-client="pub-8946038251809377"
     data-ad-slot="5490836264"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>

회사에서 AWS를 사용하면서 EC2, RDS에 많은 요청이 오는것이 걱정되었다

인스턴스를 켜둔 시간만큼 돈도 내고, 요청에 따라서도 과금이 되는데 어떻게 하면 비용을 줄일까?

결국 캐시를 생각하게 되었다.

API를 근 2년간 여러개 만들어봤지만, 캐시를 사용해볼 기회는 없었다.

프로젝트 요구사항을 검토해봐도 딱히 cache를 적용할 영역이 없었고, 데이터가 준 실시간으로 변경되었지만

이번 프로젝트는 하루에 1번~5번 꼴로 데이터가 변경되서 캐시를 설정하면 상당히 유용하리라 판단했다.

개요

  1. 스프링부트에 적용할 캐시 종류
  2. caffeine 을 선택한 이유
  3. spring boot에 cache 설정하기
  4. API에 cache 적용하기
  5. API마다 다르게 cache 적용하기

콕 찝어서 Spring boot 라고 말했지만, 그냥 스프링에 적용해도 상관없다 spring boot 문서에 보면 9개의 캐시가 있다

그 중에서 나름 관심있는 3가지만 언급하자면 아래와 같다

  1. EhCache 2.X
  2. Redis