728x90
캐시
캐시란?
캐시는 cash(현금)이 아니라 cache라고 쓴다. 캐시에는 '숨기는 장소'라는 의미가 있다.
컴퓨터 세계에서는 사용 빈도가 높은 데이터를 고속으로 엑세스할 수 있는 위치에 두는 것을 의미한다.
CPU의 1차, 2차캐시, 저장소 캐시, OS 페이지 캐시, 데이터베이스 버퍼 캐시 등 광범위하게 일컫는다.
캐시는 임시 저장소를 의미한다.
- 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
- 데이터 재사용을 전제로 한다.
어디에 사용되는가
브라우저 캐시는 웹 브라우저가 접속한 페이지를 캐시하는 것이다.
이를 통해 웹 서버 접속을 줄이고 브라우저 표시를 고속화 할 수 있다.
웹 서버 부하를 줄이는 다른 방법으로는 웹 서버와 클라이언트 사이에 캐시서버를 배치하는 방법이 있다.
요즈음엔 CDN이라는 웹서버가 아닌 다른 웹 콘텐츠 캐시를 배치하는 구조를 이용하기도 한다. (아카마이 등)
정리
캐시는 데이터에 고속으로 액세스하고 부하를 줄일 수 있지만 데이터를 잃을 위험이 있어서 캐시 데이터가 손실돼도 괜찮은 경우에 주로 사용한다.
적합한 시스템
- 참조 빈도가 높은 데이터
몇 번이고 같은 데이터를 참조해야 할 경우 캐시에 배치하자. - 데이터가 손실돼도 문제가 없는 시스템
예를들어 스트리밍 데이터 등은 갱신이 없기 때문에 캐시에 장애가 발생해도 원 데이터를 다시 캐시에 배치하기만 하면 복원이 가능하다. 이런 읽기 전용 데이터에 적합하다.
부적합한 시스템
- 데이터 갱신 빈도가 높은 시스템
이런 경우 갱신 시 마다 캐시해야 해서 바로 엑세스 하는 것과 큰 차이가 없어 서은ㅇ 향상을 기대할 수 없다. - 대량의 데이터에 엑세스하는 시스템
데이터 엑세스 시 수백GB 이상 큰 데이터를 참조하는 경우 캐시 크기도 커지며, 배치하기에도 많은 시간이 걸린다. 예를들어 분석 시스템에서는 캐시를 두는 것은 부적합하다.
주의할 점
- 데이터가 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.
- 시스템 가동 직후에는 캐시에 데이터가 없기 때문에 원하는 성능이 안나올 수 있다.
- 캐시 계층이 늘어나기 때문에 시스템 성능 문제나 데이터 불일치 문제가 발생할 경우 문제 발생을 야기한 용의자가 늘어난다.
- 데이터가 손실되는 경우를 대비해 복구 순서를 설계 시 확립하여야 한다.
- 갱신 데이터(쓰기 데이터)를 캐시할 때 캐시가 여러개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생할 수 있다.
'IT개념 > 프로그래밍상식' 카테고리의 다른 글
인텔리제이 자주쓰는 단축키 (0) | 2022.01.07 |
---|---|
[TCP]데이터 보증과 재전송제어 (0) | 2021.08.25 |
CORS, SameSite 이슈 (0) | 2021.08.05 |
프로그래밍을 배우기 어려운 이유와 극복하는 방법 (2) | 2021.06.07 |
디버그 시 System.out.println()을 사용하지 않는 이유 (0) | 2021.04.28 |