
542
2
부
구현
대
1
분까지 뒤처질 수 있다. 이제 추천 (
Recommendation
) 마이크로서비스 내부의 클라이언트
측 캐싱이 이뤄지고 있으며, 여기서도
TTL
을
1
분으로 사용하고 있다. 클라이언트 측 캐시의
항목이 만료되면 추천 마이크로서비스에서 재고 마이크로서비스로 최신 재고 수준을 가져오려
고 요청을 한다. 하지만 우리가 모르는 사이에 요청이 서버 측 캐시에 도달하게 되고, 이 시점
에서 캐시는 최대
1
분 전일 수 있다. 따라서 클라이언트 측 캐시에는 처음으로부터 최대
1
분이
나 지난 레코드가 저장될 수 있다. 즉, 추천 마이크로서비스의 관점에서 재고 수준은 최대
1
분
밖에 되지 않는다고 생각하지만, 실제로 사용하는 재고 수준은 최대
2
분까지 오래될 가능성이
있다.
이와 같은 문제를 방지하기 위한 여러 방법이 있다. 처음에는 타임스탬프 기반으로 만료하는
것이
TTL
보다 낫겠지만, 이 문제는 캐싱이 실제로 중첩될 때 어떤 문제가 발생하는지 보여주
는 예시이기도 하다. 캐싱된 입력을 기반으로 하는 작업의 결과를 캐싱하는 경우, 최종 결과가
어느 정도나 최신 상태인지 얼마나 명확하게 알 수 있을까?
앞서 소개한 크누스의 유명한 말처럼, 조기 최적화는 문제를 일으킬 수 있다. 캐싱은 복잡성을
증가시키므로 가능한 한 복잡성을 최소화하고자 하며, 캐싱 장소의 ...