티스토리 뷰

로컬 캐싱이란?

로컬 캐싱이란 자주 사용되는 데이터를 컴퓨터의 메모리에 저장하는 것을 말한다. 

이렇게 하면 데이터에 엑세스하는 시간이 단축되고 성능이 향상된다. 

로컬 캐싱은 웹 브라우저, 운영 체제, 어플리케이션 등에서 사용된다.

 

로컬 캐싱의 장점

  • 데이터 엑세스 시간 단축
  • 시스템의 부하 감소
  • 성능 향상

로컬 캐싱의 단점

  • 캐시가 손상되거나 손실될 수 있다.
  • 캐스의 크기가 커지면 메모리 사용량이 증가할 수 있다. 

캐시를 적용하기에 적합한 데이터

  • 반복적이고 동일한 결과가 나오는 기능의 반환값
  • 업데이트가 자주 발생하지 않는 데이터
  • 자주 조회되는 데이터
  • 입력값과 출력값이 일정한 데이터
  • [적합하지 않은 데이터] 캐싱된 데이터는 데이터 갱신으로 인해 DB와 불일치가 발생할 수 있다. 그렇기 때문에 데이터 Update가 잦게 일어나거나 데이터 불일치 시 비즈니스 로직 상 문제가 발생할 수 있는 기능은 캐싱 대상으로 적합하지 않다. 

💻 Local Cache vs Global Cache

로컬 캐시

  • 서버마다 캐시를 따로 저장
  • 다르 서버의 캐시를 참조하기 어려움
  • 서버 내에서 작동하기 때문에 속도 빠름 
  • 로컬 서버 장비의 Resource 이용 (메모리, 디스크)
  • 캐시에 저장된 데이터가 변경되는 경우:
    • 해당 서버를 제외한 모든 peer에 변경 사항 전달
    • All-to-All Replication
    • WAS 인스턴스가 늘어나고, 캐시 저장 데이터 크기가 커지면 성능이 저하되는 이유는 이 떄문이다. 

글로벌 캐시

  • 여러 서버에서 캐시 서버에 접근하여 참조 가능
  • 별도의 캐시 서버를 이용하기 때문에 서버 간 데이터 공유가 쉬움
  • 네트워크 트래픽을 사용해야해서 로컬 캐시보다 느리다.
  • 데이터를 분산하여 저장가능
    • Replication: 두 개 이상의 DBMS 시스템을 Master / Slave 로 나누어 동일한 데이터를 저장하는 방식
    • Sharding: 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
  • 캐시에 저장된 데이터가 변경되는 경우:
    • 추가적인 작업 필요 x 
    • 서비스 확장으로 WAS 인스턴스가 늘어나고, Cache 데이터의 크기가 커질수록 효과적인 이유

로컬 캐시 상세

자주 접근하는 데이터를 저장하는 임시 저장소이다. 

이 데이터는 컴퓨터의 메모리에 저장되므로 디스크에서 가져와야하는 것보다 훨씬 빠르게 엑세스가 가능하다. 

종종 웹 어플리케이션에서 자주 접근하는 페이지를 저장하는데 사용된다. => 어플리케이션 성능 향상(페이지를 서버에서 매번 요청할 필요가 없기 때문)

 

또한, 여러 어플리케이션에서 사용하는 데이터를 저장하는데 사용될 수 있다. 이렇게하면 시스템의 전체 성능이 향상된다.(데이터는 매번 디스크에서 가져올 필요가 없기 때문)

로컬 캐시의 두 가지 주요 유형

  • 메모리 캐시: 데이터를 컴퓨터의 메모리에 저장, 가장 빠른 유형의 캐시이지만 가장 불안정하다. 컴퓨터의 전원이 끊어지면 메모리 캐시의 데이터가 손실된다. => 손실되어도 괜찮은 정보만 저장하는 식으로 사용하면 될 듯
  • 디스크 캐시: 데이터를 디스크에 저장, 메모리 캐싱보다 느리지만 더 지속된다. 컴퓨터의 전원이 끊어지더라도 디스크 캐시의 데이터는 손실되지 않는다. 

검색 기능에 로컬 캐싱 적용하기 

  1. 검색어를 입력 받고, 검색 결과를 얻는다. (api 요청)
  2. 검색 결과를 로컬 캐시에 저장 
  3. 사용자의 검색어와 일치하는 검색 결과를 로컬 캐시에서 조회
  4. 로컬 캐시에서 검색 결과를 찾을 수 없는 경우, 원본 DB에서 검색 결과를 가져온다.

=> 로컬 캐시를 사용하면 원본 DB에서 검색 결과를 가져오는 대신 로컬 캐시에서 검색 결과를 가져오기 때문에 검색 기능의 성능을 향상시킬 수 있다. 또한, 원본 DB에서 검색 결과를 가져오는 데 걸리는 시간을 단축시킬 수 있다. 

 

구현 방법

가장 심플한 방법은 검색 결과를 리스트로 저장하는 것 => 검색 결과를 리스트로 저장하면 검색어와 일치하는 검색 결과를 쉽게 찾을 수 있다. 

 

로컬 캐싱 구현 시 고려 사항

  • 캐시의 크기: 캐시의 크기가 너무 크면 메모리 사용량이 증가할 수 있다.
  • 캐시의 유효 시간: 캐시의 유효 시간이 지나면 캐시를 삭제해야 한다.
  • 캐시의 조정: 캐시의 크기와 유효 시간은 필요에 따라 조정해야 한다.

 

 

댓글