TIL

24/01/04 TIL __ cache

GABOJOK 2024. 1. 5. 00:35

 

 

어디선가 많이 들어본듯 한 cache에 대해 오늘은 정리해 보려고 한다. 

이 cache는 db효율과 속도를 따져서 사용한다고 얼핏 알고 있었는데 좀더 제대로 알고싶어 찾아보았다. 

 

 

캐시 cache

자주 사용되는 데이터를 복사해 두는 임시 저장소이다. 

 

왜 사용할까? 

 

먼저 메모리와 cpu사이의 속도 차이가 너무 크다. 

데이터의 비용이나 속도같은 성능 효율적인 측면을 생각해서 사용하며,

서버장애가 발생해도 서비스가 완전히 이용 불가 상태가 아니라, 일부 기능은 지원이 가능하다는 점 또한 매력적이다. 

또 모든 데이터를 db에 요청하지 않다 보니 서버의 리소스도 효과적으로 활용이 가능하다. 

 

언제 사용할까? 

 

자주 사용되는 즉 반복적이고 동일한 (이미지 같이 정적 자원도 포함.) 동일한 결과를 돌려주는 경우,

데이터를 접근하는 시간이 오래 걸리는 경우에도 사용하는게 좋을 것 같다. 

 

 

간단한 개념

 

cache Hit  원하는 데이터가 캐시에 있을 경우 캐시에서 가져오는 것

cache Miss  원하는 데이터가 캐시에 없을 경우 db에 달라고 요청해서 가져오는 것.

 

 

왜 cache 여야만 하는가.?  다른 기술은 없나? 

 

문득 이런 궁금증이 들었다. 

정말 다양한 기술들이 있는데, 왜 많은 사람들은 cache라는 기술을 사용할까.?  

어떤 부분때문에 여전히 많이 사용되고 있는걸까? 

 

찾다보니 비슷해 보이는 애로 클라이언트 사이드 스토리지 라는게 있었다. 

 

클라이언트 사이드 스토리지

 

얘는 로컬스토리지나 세션 스토리지에 데이터를 저장할 수 있다.

그러나 많은 단점을 가지고 있었다. 

  • 일단 저장 용량이 작고,
  • 로컬 스토리지에 들어온 데이터를 사용자가 삭제하기 전까지 영원히 남아있다는 점. 
  • 또 데이터를 키 벨류로 저장하는 불편함 + 복잡한 데이터 구조를 지원하지 않는 부분이 있었다. 

따라서 이 클라이언트 사이드 스토리지 는 데이터를 지속적으로 저장해야 하는 경우 사용되는걸 추천하는 것이였다. 

 

다른 기술들도 살펴보았지만, 비용적(진짜 돈)인 문제가 꽤 있어서,

아직 완전히 대치하기에는 캐시의 이점이 너무 큰것 같다. 

성능 최적화와 네트워크 트레픽 관리에 짱인 친구 캐시!!!