티스토리 뷰
캐싱
캐싱이란 데이터의 로드를 빠르게 하기위해 적용하는 것으로, 우리 주변에서 많이 쓰이고 있는 기술이다.
캐싱이 쓰이는 조건
- 어떤 것이 자주 변하고, 어떤 것이 자주 변하지 않는지 알아두어야 한다.
캐싱을 사용하는 방법
- 읽어들어는 것이 변하지 않는 경우에 메모리에 들어있는 것을 그대로 제공
- 읽어들이는 것이 변할 때를 감지하여 메모리에 저장된(캐싱된) 항목을 변경 후 이후 변경된 항목으로 제공
실 서비스 구현 예제
지하철 현황 rest api의 경우
- 지하철 현황 정보가 null 이거나, 유효시간이 경과했다면, open api를 호출한다.
- 매번 openapi를 호출하는 것보다, 훨씬 더 효율적이고 병목현상이 적게 일어날만한 코드가 완성된다.
로컬 캐시 라이브러리
잘 만들어진 캐시 라이브러리는 없을까?
체크 항목
- 캐시 항목 만료 정책
- 캐시 제거 정책
- 기타 클러스터 캐시 동기화 및 디스크 저장 기능 등
Java Ehcache
- 어노테이션으로 함수에 표시하고, 설정만 해주면 캐싱을 적용할 수 있다.
과제
인기 상품 게시 기능 구현
- 인기 상품을 선별하는 모듈은 연산 복잡도가 매우 높아 캐싱 대상으로 선정
- 선별은 하루 2회
- 긴급 인기 상품 리스트 수정 기능 제공
- 소규모이기에 was 하나로 운영
문제 발생
WAS를 3대로 증설 후, 상품 리스트 수정 기능 비정상 작동
- redis 등과 같은 서버 캐싱 라이브러리를 사용하여 해결
- 상황에 맞는 캐싱을 실제 서비스에 활용하여 구축한다.
- 로컬 캐시와 리모트 캐시에 대한 것을 구별하여 사용한다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Config
- 커맨드객체
- 취업
- spring data JPA
- SSAFY
- JPA
- 데이터베이스 설계
- 11기
- QueryDSL
- 코딩테스트
- Java
- Python
- dto
- security
- 다대일
- @BaseEntity
- 배열
- test
- ModelAttribute
- 작업 순서정리
- 일대다
- notion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함