티스토리 뷰
로컬 캐싱이란?
로컬 캐싱이란 자주 사용되는 데이터를 컴퓨터의 메모리에 저장하는 것을 말한다.
이렇게 하면 데이터에 엑세스하는 시간이 단축되고 성능이 향상된다.
로컬 캐싱은 웹 브라우저, 운영 체제, 어플리케이션 등에서 사용된다.
로컬 캐싱의 장점
- 데이터 엑세스 시간 단축
- 시스템의 부하 감소
- 성능 향상
로컬 캐싱의 단점
- 캐시가 손상되거나 손실될 수 있다.
- 캐스의 크기가 커지면 메모리 사용량이 증가할 수 있다.
캐시를 적용하기에 적합한 데이터
- 반복적이고 동일한 결과가 나오는 기능의 반환값
- 업데이트가 자주 발생하지 않는 데이터
- 자주 조회되는 데이터
- 입력값과 출력값이 일정한 데이터
- [적합하지 않은 데이터] 캐싱된 데이터는 데이터 갱신으로 인해 DB와 불일치가 발생할 수 있다. 그렇기 때문에 데이터 Update가 잦게 일어나거나 데이터 불일치 시 비즈니스 로직 상 문제가 발생할 수 있는 기능은 캐싱 대상으로 적합하지 않다.
💻 Local Cache vs Global Cache
로컬 캐시
- 서버마다 캐시를 따로 저장
- 다르 서버의 캐시를 참조하기 어려움
- 서버 내에서 작동하기 때문에 속도 빠름
- 로컬 서버 장비의 Resource 이용 (메모리, 디스크)
- 캐시에 저장된 데이터가 변경되는 경우:
- 해당 서버를 제외한 모든 peer에 변경 사항 전달
- All-to-All Replication
- WAS 인스턴스가 늘어나고, 캐시 저장 데이터 크기가 커지면 성능이 저하되는 이유는 이 떄문이다.
글로벌 캐시
- 여러 서버에서 캐시 서버에 접근하여 참조 가능
- 별도의 캐시 서버를 이용하기 때문에 서버 간 데이터 공유가 쉬움
- 네트워크 트래픽을 사용해야해서 로컬 캐시보다 느리다.
- 데이터를 분산하여 저장가능
- Replication: 두 개 이상의 DBMS 시스템을 Master / Slave 로 나누어 동일한 데이터를 저장하는 방식
- Sharding: 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
- 캐시에 저장된 데이터가 변경되는 경우:
- 추가적인 작업 필요 x
- 서비스 확장으로 WAS 인스턴스가 늘어나고, Cache 데이터의 크기가 커질수록 효과적인 이유
로컬 캐시 상세
자주 접근하는 데이터를 저장하는 임시 저장소이다.
이 데이터는 컴퓨터의 메모리에 저장되므로 디스크에서 가져와야하는 것보다 훨씬 빠르게 엑세스가 가능하다.
종종 웹 어플리케이션에서 자주 접근하는 페이지를 저장하는데 사용된다. => 어플리케이션 성능 향상(페이지를 서버에서 매번 요청할 필요가 없기 때문)
또한, 여러 어플리케이션에서 사용하는 데이터를 저장하는데 사용될 수 있다. 이렇게하면 시스템의 전체 성능이 향상된다.(데이터는 매번 디스크에서 가져올 필요가 없기 때문)
로컬 캐시의 두 가지 주요 유형
- 메모리 캐시: 데이터를 컴퓨터의 메모리에 저장, 가장 빠른 유형의 캐시이지만 가장 불안정하다. 컴퓨터의 전원이 끊어지면 메모리 캐시의 데이터가 손실된다. => 손실되어도 괜찮은 정보만 저장하는 식으로 사용하면 될 듯
- 디스크 캐시: 데이터를 디스크에 저장, 메모리 캐싱보다 느리지만 더 지속된다. 컴퓨터의 전원이 끊어지더라도 디스크 캐시의 데이터는 손실되지 않는다.
검색 기능에 로컬 캐싱 적용하기
- 검색어를 입력 받고, 검색 결과를 얻는다. (api 요청)
- 검색 결과를 로컬 캐시에 저장
- 사용자의 검색어와 일치하는 검색 결과를 로컬 캐시에서 조회
- 로컬 캐시에서 검색 결과를 찾을 수 없는 경우, 원본 DB에서 검색 결과를 가져온다.
=> 로컬 캐시를 사용하면 원본 DB에서 검색 결과를 가져오는 대신 로컬 캐시에서 검색 결과를 가져오기 때문에 검색 기능의 성능을 향상시킬 수 있다. 또한, 원본 DB에서 검색 결과를 가져오는 데 걸리는 시간을 단축시킬 수 있다.
구현 방법
가장 심플한 방법은 검색 결과를 리스트로 저장하는 것 => 검색 결과를 리스트로 저장하면 검색어와 일치하는 검색 결과를 쉽게 찾을 수 있다.
로컬 캐싱 구현 시 고려 사항
- 캐시의 크기: 캐시의 크기가 너무 크면 메모리 사용량이 증가할 수 있다.
- 캐시의 유효 시간: 캐시의 유효 시간이 지나면 캐시를 삭제해야 한다.
- 캐시의 조정: 캐시의 크기와 유효 시간은 필요에 따라 조정해야 한다.
'프로그래밍 > CS 지식' 카테고리의 다른 글
[정처기 실기| 프로그래밍 문제] 2023 2회차 문제풀이 (0) | 2023.09.29 |
---|---|
[프로그래밍 언어 활용 | 정처기 실기] C 언어, 표준함수와 포인터 (0) | 2023.06.19 |
Authentication(인증) vs Authorization(인가, 권한부여) with JWT (0) | 2023.05.14 |
[Network] HTTPS와 SSL 핸드셰이크 과정 (0) | 2023.03.29 |
[Network | HTTP] HTTP(http 메서드, 공통/응답/요청/캐시 헤더) (0) | 2023.03.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- float 레이아웃
- 틸드와 캐럿
- 형제 요소 선택자
- ~ ^
- 타입스크립트 장점
- 원티드 3월 프론트엔드 챌린지
- D 플래그
- text input pattern
- Prittier
- aspect-ratio
- fs모듈 넥스트
- grid flex
- 부트캠프항해
- nvm 설치순서
- 프리온보딩 프론트엔드 챌린지 3월
- 원티드 프리온보딩 FE 챌린지
- 원티드 FE 프리온보딩 챌린지
- getStaticPaths
- 항해99추천비추천
- reactAPI
- 항해99프론트
- 항해99프론트후기
- && 셸 명령어
- 프리렌더링확인법
- 타입스크립트 DT
- is()
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- getServerSideProps
- nvm경로 오류
- tilde caret
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함