529
13
장
확장
13.413.4
캐싱 캐싱
캐싱
caching
은 흔히 사용되는 성능 최적화 방법으로, 특정 작업의 이전 결과를 저장해 후속 요청
에서 값을 다시 계산하는 데 시간과 자원을 소비하지 않고 저장된 값을 사용할 수 있게 해준다.
예를 들어, 상품을 추천하기 전에 재고 수준을 확인해야 하는 추천(
Recommendation
) 마이크
로서비스를 생각해보자. 재고가 없는 상품을 추천하는 것은 아무런 의미가 없다! 하지만 우리
는 연산의 지연 시간을 개선하고자 추천 서비스에서 재고 수준의 복사본을 보관하기로 정하고
무언가를 추천해야 할 때마다 재고 수준을 확인할 필요가 없게 했다. 신뢰할 수 있는 재고 수준
의 원천은 재고 (
Inventory
) 마이크로서비스며, 이 마이크로서비스는 추천 마이크로서비스에
서 클라이언트 캐시의 원천으로 간주된다. 추천 서비스가 재고 수준을 조회해야 하는 경우 먼
저 로컬 캐시에서 조회할 수 있다. 필요한 항목이 발견되면 캐시 히트
cache
hit
로 간주하고, 데이
터를 찾지 못하면 캐시 미스
cache
miss
이므로 다운스트림 재고 마이크로서비스에서 정보를 가져
와야 한다. 원본 데이터는 당연히 변경될 수 있으므로, 추천 서비스의 캐시를 무효화할 수 있는
방법이 필요하다. 이를 통해 로컬에 캐싱된 데이터가 너무 오래돼 더 이상 사용되지 못하게 할
수 있다.
캐시는 이 예제에서와 같이 간단한 조회 결과를 저장할 수 있지만, 실제로는 복잡한 계산 결과
와 같이 어떤 종류의 데이터도 저장할 수 있다. 캐시는 지연