-
1.개요
캐시(Cache)라는 동일한 개념이 컴퓨터 시스템의 여러 계층(CPU, 데이터베이스, 웹 애플리케이션)에서 어떻게 적용되고 작동하는지 비교하여 설명해 드리겠습니다.
2.캐시의 공통 원칙
세 가지 유형의 캐시 모두 속도 차이가 나는 두 계층 사이에서 자주 사용되는 데이터의 사본을 더 빠른 쪽에 임시 저장하여 접근 속도를 향상시키고 느린 접근 횟수를 줄이는 목적을 가집니다.
3.계층별 캐시
1)CPU 캐시
가장 빠르고 낮은 계층에 위치한 캐시입니다.
목적
CPU의 처리 속도와 메인 메모리(RAM)의 접근 속도 차이를 줄입니다.
위치
CPU 칩 내부 (L1, L2) 또는 근처 (L3)의 매우 빠른 SRAM에 위치합니다.
저장 데이터
CPU가 곧 필요로 할 데이터(명령어, 값)를 메인 메모리에서 가져와 저장합니다.
관리 주체
하드웨어 (CPU 내부의 캐시 컨트롤러)와 운영체제가 관리합니다.
2)데이터베이스 캐시
데이터베이스의 I/O 병목 현상을 해결하기 위해 사용되는 캐시입니다.
목적
메인 메모리의 접근 속도와 디스크의 I/O 속도 차이를 줄입니다.
위치
메인 메모리 공간 중 데이터베이스 엔진(InnoDB)이 할당받은 영역에 위치합니다.
저장 데이터
디스크에 있는 테이블 데이터와 인덱스를 페이지 단위로 저장합니다.
관리 주체
데이터베이스 스토리지(InnoDB) 엔진이 직접 관리합니다.
3)웹/애플리케이션 캐시
웹 서비스의 응답 속도를 높이고 서버 부하를 줄이기 위해 사용되는 캐시입니다.
목적
최종 사용자에게 빠른 응답을 제공하고, 웹 서버의 반복 작업 부하를 줄입니다.
위치
브라우저(클라이언트 측) - 사용자 컴퓨터의 디스크
1. 최초 접근 시 (캐시 생성)
- 요청: 브라우저가 웹 서버에 JS 파일, CSS 파일, 이미지 파일 등을 요청합니다.
- 응답: 서버는 해당 파일을 보내주면서, 이 파일들을 얼마나 오랫동안 저장(캐시)해 두어야 하는지에 대한 정보(예: Cache-Control 헤더의 max-age)를 함께 보냅니다.
- 저장: 브라우저는 이 파일을 받아 사용자에게 보여주는 동시에, 이 파일들을 사용자 컴퓨터의 로컬 디스크에 저장합니다.
2. 재접근 시 (캐시 사용)
- 사용자가 해당 웹사이트를 다시 방문하면, 브라우저는 먼저 서버에 요청을 보내기 전에 로컬 디스크에 저장된 캐시를 확인합니다.
- 유효성 검사: 서버에서 정해준 유효 기간이 지나지 않았다면, 브라우저는 디스크에 저장된 파일을 즉시 사용하고 서버에 다시 요청하지 않습니다.
- 효과: 이 과정 덕분에 데이터를 네트워크로 다시 전송할 필요가 없어 웹 페이지 로딩 속도가 훨씬 빨라지고 서버의 부하도 줄어듭니다.
웹서버
서버의 RAM 또는 별도 인메모리 DB (Redis)
저장 데이터
프론트:이미지, CSS, JS 파일
백엔드:자주 요청되는 API 응답 결과
관리 주체
웹 서버, 캐시 서버, 애플리케이션 코드, 브라우저가 분담하여 관리합니다.
4.세 가지 캐시 비교 요약
구분 CPU 캐시 DB 캐시 (버퍼 풀) 웹/애플리케이션 캐시 해결하는 병목 CPU vs RAM RAM vs Disk 서버 부하 vs 네트워크 속도 데이터 단위 명령어/값 (Byte) DB 페이지 (KB) API 응답/파일 (KB/MB) 속도 가장 빠름 (나노초) 빠름 (마이크로초) 보통 (밀리초 ~ 초) 관리 주체 하드웨어/OS 스토리지 엔진 (SW) 애플리케이션/서버 (SW)