캐시는 cash가 아니라 cache라고 쓴다. 캐시는 '숨기는 장소'라는 의미를 가지고 있다. 쉽게 말해서 캐시는 임시 저장소를 의미한다.
✍🏻 캐시의 특징
- 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
- 데이터 재사용을 전제로 한다.
브라우저 캐시는 웹 브라우저가 접속한 페이지를 캐시하는 것이다. 이를 통해 웹 서버 접속을 줄이고 브라우저 표시를 고속화할 수 있다.
웹서버와 클라이언트 서버 사이에 캐시 서버를 배치 할 수 있다. 이런 식에 배치를 통해서 웹서버 접속을 줄일 수 있다. 클라이언트에 어떤 작업을 요청을 하면 캐시 서버를 먼저 확인하고 만약에 없으면 그때 웹서버에 접속해서 요청 한다.
- 데이터를 고속으로 엑세스 할 수 있다.
- 실제 데이터에 대한 엑세스 부하를 줄일 수 있다.
몇 번이고 같은 데이터를 참조한다면 캐시에 배치해서 고속으로 데이터에 액세스할 수 있다.
스트리밍 데이터 등은 갱신이 없기 때문에 캐시에 장애가 발생해도 원 데이터를 다시 캐시에 배치하기만 하면 복원이 가능하다. 이런 읽기 전용 데이터에 적합하다.
데이터 갱신이 빈번하게 발생하는 경우는 갱신 시마다 캐시해야 해서 바로 액세스하는 경우와 차이가 없다. 따라서 성능 향상을 기대할 수 없다.
데이터 액세스 시에 수백 GB 이상의 큰 데이터를 참조하는 경우는 캐시 크기도 커지며, 캐시에 배치하기까지도 많은 시간이 걸린다. 예를 들어, 분석 시스템에서는 캐시에 데이터를 두는 것은 적합하지 않다.
- 실제 데이터와 캐시라는 이중 구조로 저장 되기 때문에 리소스 소비가 늘어난다.
- 시스템 가동 직후에는 캐시가 없기 때문에 원하는 성능이 나오지 않을 수 있다.
- 캐시 계층이 늘어나기 때문에 시스템 성능 문제나 데이터 불일치가 문제가 발생한 경우 문제 발생을 야기한 용의자가 늘어난다.
- 갱신 데이터를 캐시할 때 캐시가 여러개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야 한다.
그림으로 공부하는 IT인프라를 참고해서 작성했습니다.