cache가 종류가 많았네?
에서 시작한 의문으로 시작함자주 접하는 개념인데, 시나리오 상 다른 기능으로 작동함.
Cache 란 ? 빠른 접근을 위한 임시 저장 공간
그렇다고 한다
CPU L1/L2/L3 Cache (가장 빠름)
├── L1: CPU 코어 내부 (수 나노초)
├── L2: CPU 내부 (수십 나노초)
└── L3: CPU 간 공유 (수백 나노초)
Page Cache (Kafka가 사용하는 것!)
├── 디스크 → 메모리 캐싱
├── OS가 자동 관리
└── Zero-copy 최적화
Redis/Memcached (분산 캐시)
├── 네트워크 캐시
├── 세션 저장
└── DB 쿼리 결과 캐싱
CDN, Proxy Cache
├── Cloudflare (당신이 써본 것!)
├── Nginx 캐시
└── 브라우저 캐시
프로세스 = 실행 중인 프로그램 (독립적 메모리 공간)
Cache = 데이터 저장 메커니즘/공간
하지만 런타임에 작동:
- CPU Cache: 런타임에 자동 동작
- Page Cache: OS가 런타임에 관리
- Redis Cache: 런타임에 애플리케이션이 사용
Cache = 개념/메커니즘
Library = 구현체
예시:
❌ CPU Cache: 하드웨어 (라이브러리 없음)
❌ Page Cache: OS 커널 기능 (라이브러리 아님)
⭕ Redis: redis-py 라이브러리로 접근
⭕ Memcached: 라이브러리로 사용
결론: Cache는 라이브러리가 아니지만,
라이브러리를 통해 Cache를 사용할 수 있음
악성 데이터를 캐시에 삽입 → 다른 사용자가 악성 데이터 받음
CPU Cache 타이밍 분석 → 비밀 정보 유추
(Spectre, Meltdown 같은 공격)
# Kafka가 OS Page Cache 활용
disk_write → page_cache → 메모리
consumer_read → page_cache → 빠른 응답
# 애플리케이션 레벨 캐시
failed_message → Redis → 재처리 대기
사용자 → Cloudflare Edge → Origin Server
↗️ (캐시 히트 시 Origin 안 감)