1. 캐시란??
캐시는 데이터를 임시로 저장하여 빠르게 제공하는 하드웨어 또는 소프트웨어 구성 요소이다. 주로 성능 최적화와 시스템 부하 감소를 위해 사용되며, 데이터베이스 조회나 네트워크 요청과 같은 반복적인 작업의 속도를 개선하는 역할을 한다. 예를 들어, 웹 애플리케이션에서 자주 조회되는 데이터를 캐시에 저장하면, 동일한 요청이 발생할 때 데이터베이스를 거치지 않고 빠르게 응답할 수 있다.
- 웹 캐시: 웹 페이지나 API 응답을 저장하여 속도를 향상시키고 서버 부하를 줄인다.
- 데이터베이스 캐시: 자주 사용되는 쿼리 결과를 저장하여 성능을 최적화한다.
- 파일 시스템 캐시: 파일 읽기 및 쓰기 작업을 가속화한다.
- CPU 캐시: 프로세서 내에서 자주 사용하는 명령어나 데이터를 저장하여 실행 속도를 높인다.
2. 캐시 사례
(1) CPU Cache
CPU 캐시는 프로세서 내부에 위치한 초고속 메모리로, 자주 사용하는 명령어 및 데이터를 저장하여 성능을 극대화한다. CPU는 데이터를 처리할 때 RAM에서 직접 가져오는 대신, 캐시에 저장된 데이터를 우선적으로 활용하여 지연 시간을 줄인다.
- L1 캐시 : 가장 빠르고 용량이 작은 캐시로, CPU 코어 내부에서 직접 접근 가능
- L2 캐시 : L1 캐시보다 용량이 크지만 약간 느린 캐시
- L3 캐시 : 여러 CPU 코어가 공유하는 캐시로, 대용량 데이터 처리를 지원


(2) DNS Cache

DNS(Domain Name System) 캐시는 도메인 이름과 IP 주소 매핑 정보를 저장하여 네트워크 성능을 향상시킨다. 브라우저나 운영 체제는 도메인 정보를 캐시에 저장하여 동일한 도메인에 대한 반복적인 요청을 줄이고 빠르게 응답할 수 있도록 한다.
- 클라이언트 캐시: 사용자의 브라우저나 운영 체제에서 저장하여 빠른 도메인 해석 가능
- 재귀 DNS 서버 캐시: 클라이언트의 요청을 캐싱하여 반복적인 DNS 조회를 줄임
- DNS 계층 구조: 루트 DNS 서버, TLD 서버, 권한 있는 DNS 서버, 재귀 DNS 서버로 구성됨
(3) 메모리 캐시 전략
- 캐시 읽기 전략(Read Cache Strategy)
- Look Aside pattern - 애플리케이션이 캐시를 먼저 확인하고 없을 경우 데이터베이스에서 조회하여 캐시에 저장
- Read Through pattern - 캐시 시스템이 데이터 조회를 담당하며, 캐시에 데이터가 없을 경우 자동으로 데이터베이스에서 가져와 캐싱
- 캐시 쓰기 전략 (Write Cache Strategy)
- Write Through pattern - 데이터를 변경할 때 캐시와 데이터베이스에 동시에 저장하여 데이터 정합성을 유지
- Write Back pattern - 데이터를 캐시에 먼저 저장하고, 일정 주기로 데이터베이스에 반영하여 성능 최적화
Look Aside pattern

Read Through pattern

Write Through pattern

Write Back pattern

(4) 캐시 스탬피드
- 캐시 스탬피드??
- 여러 클라이언트가 동시에 동일한 캐시 데이터를 요청할 때, 해당 데이터가 만료되면 모든 요청이 한꺼번에 백엔드(DB 또는 원본 서버)로 몰리는 현상을 말한다.
- 백엔드 서버에 급작스런 과부하는 성능 저하, 응답 지연, 서버 다운까지 발생할 수 있다.
- 캐시 스팸피드 발생 과정
- 다수의 클라이언트가 동일한 캐시 키에 대해 요청을 보냄.
- 해당 캐시 데이터가 만료됨 (예: TTL(Time-To-Live) 초과).
- 캐시된 데이터가 없으므로 모든 클라이언트가 백엔드로 직접 요청을 보냄.
- 갑작스러운 요청 폭증으로 인해 백엔드 서버에 과부하가 발생.
- 서버 성능 저하 또는 장애 발생.
- 해결 방법
- Early Revalidation : 미리 캐시 갱신
- Mutex Lock : 캐시 미스를 하나의 요청만 처리 (단일 요청에서만 분산락으로 처리하고 다시 캐시)
- 확률적 갱신 : 일부 요청에서 미리 갱신
- 비동기 갱신 : 캐시 만료 시 기존 데이터 제공 후 갱신

'cs' 카테고리의 다른 글
해시 테이블(Hash Table) (0) | 2024.02.19 |
---|---|
Multi Programming, Processing, Tasking, Threading (1) | 2024.02.16 |
thread type & model (1) | 2024.02.15 |
가상 메모리 (Virtual Memory) (0) | 2024.01.26 |
1. 캐시란??
캐시는 데이터를 임시로 저장하여 빠르게 제공하는 하드웨어 또는 소프트웨어 구성 요소이다. 주로 성능 최적화와 시스템 부하 감소를 위해 사용되며, 데이터베이스 조회나 네트워크 요청과 같은 반복적인 작업의 속도를 개선하는 역할을 한다. 예를 들어, 웹 애플리케이션에서 자주 조회되는 데이터를 캐시에 저장하면, 동일한 요청이 발생할 때 데이터베이스를 거치지 않고 빠르게 응답할 수 있다.
- 웹 캐시: 웹 페이지나 API 응답을 저장하여 속도를 향상시키고 서버 부하를 줄인다.
- 데이터베이스 캐시: 자주 사용되는 쿼리 결과를 저장하여 성능을 최적화한다.
- 파일 시스템 캐시: 파일 읽기 및 쓰기 작업을 가속화한다.
- CPU 캐시: 프로세서 내에서 자주 사용하는 명령어나 데이터를 저장하여 실행 속도를 높인다.
2. 캐시 사례
(1) CPU Cache
CPU 캐시는 프로세서 내부에 위치한 초고속 메모리로, 자주 사용하는 명령어 및 데이터를 저장하여 성능을 극대화한다. CPU는 데이터를 처리할 때 RAM에서 직접 가져오는 대신, 캐시에 저장된 데이터를 우선적으로 활용하여 지연 시간을 줄인다.
- L1 캐시 : 가장 빠르고 용량이 작은 캐시로, CPU 코어 내부에서 직접 접근 가능
- L2 캐시 : L1 캐시보다 용량이 크지만 약간 느린 캐시
- L3 캐시 : 여러 CPU 코어가 공유하는 캐시로, 대용량 데이터 처리를 지원


(2) DNS Cache

DNS(Domain Name System) 캐시는 도메인 이름과 IP 주소 매핑 정보를 저장하여 네트워크 성능을 향상시킨다. 브라우저나 운영 체제는 도메인 정보를 캐시에 저장하여 동일한 도메인에 대한 반복적인 요청을 줄이고 빠르게 응답할 수 있도록 한다.
- 클라이언트 캐시: 사용자의 브라우저나 운영 체제에서 저장하여 빠른 도메인 해석 가능
- 재귀 DNS 서버 캐시: 클라이언트의 요청을 캐싱하여 반복적인 DNS 조회를 줄임
- DNS 계층 구조: 루트 DNS 서버, TLD 서버, 권한 있는 DNS 서버, 재귀 DNS 서버로 구성됨
(3) 메모리 캐시 전략
- 캐시 읽기 전략(Read Cache Strategy)
- Look Aside pattern - 애플리케이션이 캐시를 먼저 확인하고 없을 경우 데이터베이스에서 조회하여 캐시에 저장
- Read Through pattern - 캐시 시스템이 데이터 조회를 담당하며, 캐시에 데이터가 없을 경우 자동으로 데이터베이스에서 가져와 캐싱
- 캐시 쓰기 전략 (Write Cache Strategy)
- Write Through pattern - 데이터를 변경할 때 캐시와 데이터베이스에 동시에 저장하여 데이터 정합성을 유지
- Write Back pattern - 데이터를 캐시에 먼저 저장하고, 일정 주기로 데이터베이스에 반영하여 성능 최적화
Look Aside pattern

Read Through pattern

Write Through pattern

Write Back pattern

(4) 캐시 스탬피드
- 캐시 스탬피드??
- 여러 클라이언트가 동시에 동일한 캐시 데이터를 요청할 때, 해당 데이터가 만료되면 모든 요청이 한꺼번에 백엔드(DB 또는 원본 서버)로 몰리는 현상을 말한다.
- 백엔드 서버에 급작스런 과부하는 성능 저하, 응답 지연, 서버 다운까지 발생할 수 있다.
- 캐시 스팸피드 발생 과정
- 다수의 클라이언트가 동일한 캐시 키에 대해 요청을 보냄.
- 해당 캐시 데이터가 만료됨 (예: TTL(Time-To-Live) 초과).
- 캐시된 데이터가 없으므로 모든 클라이언트가 백엔드로 직접 요청을 보냄.
- 갑작스러운 요청 폭증으로 인해 백엔드 서버에 과부하가 발생.
- 서버 성능 저하 또는 장애 발생.
- 해결 방법
- Early Revalidation : 미리 캐시 갱신
- Mutex Lock : 캐시 미스를 하나의 요청만 처리 (단일 요청에서만 분산락으로 처리하고 다시 캐시)
- 확률적 갱신 : 일부 요청에서 미리 갱신
- 비동기 갱신 : 캐시 만료 시 기존 데이터 제공 후 갱신

'cs' 카테고리의 다른 글
해시 테이블(Hash Table) (0) | 2024.02.19 |
---|---|
Multi Programming, Processing, Tasking, Threading (1) | 2024.02.16 |
thread type & model (1) | 2024.02.15 |
가상 메모리 (Virtual Memory) (0) | 2024.01.26 |