EHCache (1. 선택 및 특징)

0

CACHE

목록 보기
1/4
post-thumbnail

현재 회사에서 EHCache를 적용한 경험이 있어서 관련해서 포스팅을 하려고 합니다.

캐시를 적용한 이유?

현재 저는 기존에 운영하던 API를 신규 개발을 하였습니다.
우선 제가 맡고 있는 API와 아키텍쳐에 대해서 간단히 말씀 드리겠습니다.

앱 클라이언트 부분을 제외하고 현재 제가 담당하고 있는 서비스 아키텍쳐의 일부입니다.
이 중에서 API 1, API 2를 신규 개발하는 작업을 진행하였고 API 1에서 EHCache를 적용하여 개발을 진행했습니다.

우선 개발을 진행하기 전 목표들 중 일부는 다음과 같았습니다.

  • 동일 데이터를 반복 조회(SELECT)하는 경우를 위해 개선 작업 진행
  • 첫 번째 목표를 달성한 뒤 DB Connection 최소화
  • 추가적인 서버 증설은 힘드니 현재 운영 중인 서버 자원 내에서 개발 진행

API 1의 경우 mariaDB로부터 변경 주기가 한달에 한번? 정도 있을까 말까한 데이터를 지속적으로 조회하였습니다. (2), (3) 부분입니다.
UPDATE, DELETE 등을 제외하고 오로지 SELECT만 하여 데이터를 가공한 뒤에 앱 클라이언트에 제공하는 API 1의 경우 동일 데이터를 지속적으로 조회하는데 있어서 매 요청마다 db connection을 맺고 MariaDB에서 데이터 조회를 읽기 위해 디스크를 읽고 하는 과정이 불필요하다고 생각하여 이번 신규 개발 진행 과정에서 (2), (3) 부분에 캐시를 적용하기로 결정하였습니다.

왜 EHCache를 선택하였나?

Redis 혹을 Memcached를 선택하지 않는 이유는 둘의 경우 별도의 데몬을 실행시켜야 하며 애플리케이션과 생명주기를 동일하게 가지는 로컬 캐시인 EHCache를 사용하는 편이 유지보수 상에서 더욱 편리함을 가져다 줄 것으로 생각하여 EHCache를 선택하였습니다.

EHCache 특징

EHCahe의 경우 대략적으로 아래와 같은 특징이 있습니다.

  • JSR 107 호환성 제공, 즉 표준 기반
  • Heap, Off-heap, Disk 모두 데이터 적재 가능
  • Spring에서 간단하게 사용할 수 있는 Java 기반 오픈소스
  • Redis, memcached와 다르게 별도의 데몬이 없어도 Spring 내부적으로 동작

JSR 107

EHCache 특징 중 JSR 107이라는 스펙이 있습니다.
간단히 알아보도록 하겠습니다.
Java Temporary Caching API(JSR 107)은 JCache라고도 불리며 javax.cache API 스펙을 준수하였습니다.
해당 스펙의 경우 Java Community Process 산하에 개발되었으며 표준 캐싱 개념과 자바 애플리케이션을 위한 매카니즘 제공을 목표로 하고 있습니다.
API는 사용하기 간단하며 표준 캐싱을 지원하고 벤더사에 중립적으로 디자인되어 있습니다.
이러한 특징 덕분에 특정 벤더사의 환경에서 개발하다가 다른 벤더사로 개발 환경을 변경해도 단 한줄의 코드 변경없이 사용 가능하도록 하였습니다.
즉, 우리가 선택한 벤더사의 환경에서 JCache 캐싱 라이브러리만 사용하면 됩니다.
애플리케이션에서 JCache API 호출하여 사용하려면 아래와 같은 jar 파일이 필요합니다.

  • JCache APIs를 정의한 JCache jar 파일
  • JCache API를 구현하는 캐싱 제공 jar 인 Ehcache jar입니다. JCache API 호출을 해당 Ehcache API로 변환합니다.

따라서, EHCache는 JCache(JSR 107 표준)을 지원합니다. 그 외 표준 인터페이스를 구현하는 구현체들은 Hacelcast, Oracle, Coherence, Infinispan 등이 있습니다.


Spring Cache Abstraction

스프링 환경에서 캐시를 사용하기 위해선 Spring Cache Abstraction 개념도 필요하다고 생각합니다.
관련해서는
1. 스프링 공식 문서(https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/cache.html)
2. 읽기 좋은 해석본 (https://blog.outsider.ne.kr/1094)

위 두 가지 중 원하시는 문서를 확인하시는 것을 추천 드립니다.

profile
컴퓨터공학과 + 실무 = 4 + N = 모르는거 ∞ ...

0개의 댓글