본문 바로가기

IT개념/프로그래밍상식

캐시에 대하여

728x90

캐시

캐시란?

캐시는 cash(현금)이 아니라 cache라고 쓴다. 캐시에는 '숨기는 장소'라는 의미가 있다.

컴퓨터 세계에서는 사용 빈도가 높은 데이터를 고속으로 엑세스할 수 있는 위치에 두는 것을 의미한다.

CPU의 1차, 2차캐시, 저장소 캐시, OS 페이지 캐시, 데이터베이스 버퍼 캐시 등 광범위하게 일컫는다.

캐시는 임시 저장소를 의미한다.

  • 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
  • 데이터 재사용을 전제로 한다.

어디에 사용되는가

브라우저 캐시는 웹 브라우저가 접속한 페이지를 캐시하는 것이다.

이를 통해 웹 서버 접속을 줄이고 브라우저 표시를 고속화 할 수 있다.

웹 서버 부하를 줄이는 다른 방법으로는 웹 서버와 클라이언트 사이에 캐시서버를 배치하는 방법이 있다.

요즈음엔 CDN이라는 웹서버가 아닌 다른 웹 콘텐츠 캐시를 배치하는 구조를 이용하기도 한다. (아카마이 등)

정리

캐시는 데이터에 고속으로 액세스하고 부하를 줄일 수 있지만 데이터를 잃을 위험이 있어서 캐시 데이터가 손실돼도 괜찮은 경우에 주로 사용한다.

적합한 시스템

  1. 참조 빈도가 높은 데이터
    몇 번이고 같은 데이터를 참조해야 할 경우 캐시에 배치하자.
  2. 데이터가 손실돼도 문제가 없는 시스템
    예를들어 스트리밍 데이터 등은 갱신이 없기 때문에 캐시에 장애가 발생해도 원 데이터를 다시 캐시에 배치하기만 하면 복원이 가능하다. 이런 읽기 전용 데이터에 적합하다.

부적합한 시스템

  1. 데이터 갱신 빈도가 높은 시스템
    이런 경우 갱신 시 마다 캐시해야 해서 바로 엑세스 하는 것과 큰 차이가 없어 서은ㅇ 향상을 기대할 수 없다.
  2. 대량의 데이터에 엑세스하는 시스템
    데이터 엑세스 시 수백GB 이상 큰 데이터를 참조하는 경우 캐시 크기도 커지며, 배치하기에도 많은 시간이 걸린다. 예를들어 분석 시스템에서는 캐시를 두는 것은 부적합하다.

주의할 점

  • 데이터가 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.
  • 시스템 가동 직후에는 캐시에 데이터가 없기 때문에 원하는 성능이 안나올 수 있다.
  • 캐시 계층이 늘어나기 때문에 시스템 성능 문제나 데이터 불일치 문제가 발생할 경우 문제 발생을 야기한 용의자가 늘어난다.
  • 데이터가 손실되는 경우를 대비해 복구 순서를 설계 시 확립하여야 한다.
  • 갱신 데이터(쓰기 데이터)를 캐시할 때 캐시가 여러개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생할 수 있다.