본문 바로가기
기타

로컬 캐시(Local Cache)에서 글로벌 캐시(Global Cache)로

by imsoncod 2023. 6. 4.

개요

현재 운영중인 서버에서, 전체 상품 리스트로컬 캐시에 넣어 사용하고 있다. 이 로컬 캐시는 어드민 페이지에서 상품을 수정하고, 캐시 업데이트 버튼을 누르면 갱신할 수 있다 (별도의 캐시 만료기간이 정해져 있지 않다)

그런데, 로컬 캐시 사용에 자잘한 문제점이 있다고 판단되어 글로벌 캐시로 마이그레이션하려고 한다.

판단 근거는 아래와 같다.

메모리

전체 상품 개수가 증가할수록 로컬 캐시가 차지하는 메모리의 양도 증가한다. 메모리는 서버의 스펙, 즉 비용과 직결되기 때문에 미래를 보면 글로벌 캐시를 사용하는게 더 효율적이다.

속도

로컬 캐시는 네트워크 통신을 거치지 않고 메모리에서 바로 데이터를 읽어오기 때문에 글로벌 캐시보다 처리 속도가 더 빠르다. 하지만 이미 프로젝트 내에서 사용중인 글로벌 캐시의 성능을 봤을때, 사용자들이 크게 체감하지 못하는 속도 차이라고 판단하였다.

데이터 정합성

현재 서버는 트래픽에 따라 실시간으로 스케일 아웃 되어 여러 개의 인스턴스가 동작하고 있다. 즉, 각각의 인스턴스가 독립된 로컬 캐시를 가지고 있다. 캐시되는 상품 리스트에는 가격과 같이 분산된 상황에서도 정합성을 유지해야하는 특별한 데이터가 존재하기 때문에, 모든 데이터를 하나의 영역에서 관리할 수 있는 글로벌 캐시를 사용하는게 더 안전하다.

(분산되어 있는 로컬 캐시를 업데이트하기 위해 주로 브로드캐스팅 기법을 사용하는데, 이 또한 인스턴스의 개수가 늘어나는만큼 성능이 감소할 수 있다)

반응형

'기타' 카테고리의 다른 글

nohup으로 Flask 백그라운드 실행하기  (0) 2022.03.23
Github Action이란?  (0) 2021.03.07
Bastion Host란?  (0) 2021.02.04
MSA(Microservice Architecture)란?  (0) 2021.02.01
API(Application Programming Interface)란?  (0) 2021.01.25

댓글