어디선가 많이 들어본듯 한 cache에 대해 오늘은 정리해 보려고 한다.
이 cache는 db효율과 속도를 따져서 사용한다고 얼핏 알고 있었는데 좀더 제대로 알고싶어 찾아보았다.
캐시 cache
자주 사용되는 데이터를 복사해 두는 임시 저장소이다.
왜 사용할까?
먼저 메모리와 cpu사이의 속도 차이가 너무 크다.
데이터의 비용이나 속도같은 성능 효율적인 측면을 생각해서 사용하며,
서버장애가 발생해도 서비스가 완전히 이용 불가 상태가 아니라, 일부 기능은 지원이 가능하다는 점 또한 매력적이다.
또 모든 데이터를 db에 요청하지 않다 보니 서버의 리소스도 효과적으로 활용이 가능하다.
언제 사용할까?
자주 사용되는 즉 반복적이고 동일한 (이미지 같이 정적 자원도 포함.) 동일한 결과를 돌려주는 경우,
데이터를 접근하는 시간이 오래 걸리는 경우에도 사용하는게 좋을 것 같다.
간단한 개념
cache Hit 원하는 데이터가 캐시에 있을 경우 캐시에서 가져오는 것
cache Miss 원하는 데이터가 캐시에 없을 경우 db에 달라고 요청해서 가져오는 것.
왜 cache 여야만 하는가.? 다른 기술은 없나?
문득 이런 궁금증이 들었다.
정말 다양한 기술들이 있는데, 왜 많은 사람들은 cache라는 기술을 사용할까.?
어떤 부분때문에 여전히 많이 사용되고 있는걸까?
찾다보니 비슷해 보이는 애로 클라이언트 사이드 스토리지 라는게 있었다.
클라이언트 사이드 스토리지
얘는 로컬스토리지나 세션 스토리지에 데이터를 저장할 수 있다.
그러나 많은 단점을 가지고 있었다.
- 일단 저장 용량이 작고,
- 로컬 스토리지에 들어온 데이터를 사용자가 삭제하기 전까지 영원히 남아있다는 점.
- 또 데이터를 키 벨류로 저장하는 불편함 + 복잡한 데이터 구조를 지원하지 않는 부분이 있었다.
따라서 이 클라이언트 사이드 스토리지 는 데이터를 지속적으로 저장해야 하는 경우 사용되는걸 추천하는 것이였다.
다른 기술들도 살펴보았지만, 비용적(진짜 돈)인 문제가 꽤 있어서,
아직 완전히 대치하기에는 캐시의 이점이 너무 큰것 같다.
성능 최적화와 네트워크 트레픽 관리에 짱인 친구 캐시!!!
'TIL' 카테고리의 다른 글
24/01/11 TIL __ 트렐로 만들기 회고 (0) | 2024.01.11 |
---|---|
24/01/05 TIL __ nestjs에서 에러처리 HttpExceptionFilter (0) | 2024.01.05 |
24/01/03 TIL __ nest js에서 passport (local) (1) | 2024.01.03 |
24/01/02 TIL __ nest에서 swagger 사용하기 (0) | 2024.01.02 |
24/01/01 TIL __ createParamDecorator() 에 대해서. (0) | 2024.01.01 |