반응형
캐싱
캐싱이란 데이터의 로드를 빠르게 하기위해 적용하는 것으로, 우리 주변에서 많이 쓰이고 있는 기술이다.
캐싱이 쓰이는 조건
- 어떤 것이 자주 변하고, 어떤 것이 자주 변하지 않는지 알아두어야 한다.
캐싱을 사용하는 방법
- 읽어들어는 것이 변하지 않는 경우에 메모리에 들어있는 것을 그대로 제공
- 읽어들이는 것이 변할 때를 감지하여 메모리에 저장된(캐싱된) 항목을 변경 후 이후 변경된 항목으로 제공
실 서비스 구현 예제
지하철 현황 rest api의 경우
- 지하철 현황 정보가 null 이거나, 유효시간이 경과했다면, open api를 호출한다.
- 매번 openapi를 호출하는 것보다, 훨씬 더 효율적이고 병목현상이 적게 일어날만한 코드가 완성된다.
로컬 캐시 라이브러리
잘 만들어진 캐시 라이브러리는 없을까?
체크 항목
- 캐시 항목 만료 정책
- 캐시 제거 정책
- 기타 클러스터 캐시 동기화 및 디스크 저장 기능 등
Java Ehcache
- 어노테이션으로 함수에 표시하고, 설정만 해주면 캐싱을 적용할 수 있다.
과제
인기 상품 게시 기능 구현
- 인기 상품을 선별하는 모듈은 연산 복잡도가 매우 높아 캐싱 대상으로 선정
- 선별은 하루 2회
- 긴급 인기 상품 리스트 수정 기능 제공
- 소규모이기에 was 하나로 운영
문제 발생
WAS를 3대로 증설 후, 상품 리스트 수정 기능 비정상 작동
- redis 등과 같은 서버 캐싱 라이브러리를 사용하여 해결
- 상황에 맞는 캐싱을 실제 서비스에 활용하여 구축한다.
- 로컬 캐시와 리모트 캐시에 대한 것을 구별하여 사용한다.
반응형