✔️ 캐시(Cache)
캐시는 자주 사용하는 데이터를 빠르게 접근할 수 있도록 메모리에 저장하는 기술이다. 데이터베이스에서 직접 조회하는 대신 캐시에서 데이터를 가져오면 응답 속도가 개선되고 데이터베이스 부하가 줄
✔️ 캐시 동작
- 캐시 히트(Cache Hit): 요청한 데이터가 캐시에
- 캐시 미스(Cache Miss): 요청한 데이터
✔️ 장점
- 쿼리 결과 저장: 데이터베이스에 대한 반복적인 조회 요청을 방지
- 사용자 세션 관리: 로그인 정보를 캐시에 저장하여 지속적인 인증 제공
- API 응답 캐싱: 외부 API 호출 결과를 저장하여 성능 개선
2. AWS ElasticCache
AWS의 ElasticCache는 완전 관리형 캐시 서비스로 Redis와 Memcached를 지원하며, 높은 성능과 확장성을 제공한다.
✔️ ElasticCache 특징
- 멀티 AZ 지원 (Redis): 장애 조치(failover)를 통해 고가용성 제공
- 읽기 복제본(Read Replica) 지원: 읽기 성능을 확장할 수 있음
- 자동 스케일링: 워크로드 증가에 따른 확장 가능
- 보안 및 암호화 지원: VPC 내에서 배포 가능하며 데이터 암호화 기능 제공
3. Redis vs. Memcached 비교
비교 항목 | Redis | Memcached |
---|
데이터 구조 | 문자열, 리스트, 해시, 셋, 정렬된 셋 등 다양한 자료형 지원 | 단순한 key-value 저장 |
지속성 | 디스크 기반 저장(RDB, AOF 지원) | 메모리 기반(데이터 영구 저장 불가) |
멀티 스레드 지원 | 단일 스레드(하지만 I/O 멀티플렉싱으로 높은 성능 제공) | 멀티 스레드 |
복제 및 클러스터링 | 마스터-슬레이브 복제, 클러스터링 지원 | 기본 제공하지 않음 |
트랜잭션 | 지원 (MULTI/EXEC) | 지원하지 않음 |
메모리 관리 | LRU 기반 자동 삭제 가능 | LRU 기반 캐시 삭제 |
주요 활용 사례 | 세션 관리, 랭킹 시스템, 메시지 큐 | 단순 캐싱, 짧은 TTL이 필요한 데이터 저장 |
4. 캐시 아키텍처
✔️ 기본 캐시 아키텍처
- 클라이언트가 데이터를 요청
- 캐시에 데이터가 있으면 바로 반환 (Cache Hit)
- 캐시에 데이터가 없으면 데이터베이스에서 조회 후 캐시에 저장 (Cache Miss)
✔️ 고급 캐시 전략
- Write-through: 데이터를 캐시와 데이터베이스에 동시에 기록
- Lazy-loading: 필요할 때만 캐시에 데이터를 저장
- TTL(Time-to-Live) 설정: 특정 시간이 지나면 캐시에서 데이터 삭제