
[database] ElastiCache
같은 질문을 DB에 매번 다시 묻지 않기. 자주 쓰는 데이터를 메모리에 얹어 응답을 확 당기는 캐싱.
DB 선택 큰 그림·캐시 3형제(DAX/ElastiCache/RDS Proxy) 비교는 database-overview.
One-Line Summary
Amazon ElastiCache는 Redis OSS·Valkey·Memcached를 관리형으로 제공하는 인메모리 캐시다. 자주 조회되는 데이터를 메모리에 두어 DB 부하를 줄이고 지연을 마이크로초~밀리초로 낮춘다. 시험 핵심은 캐시로 DB 읽기 offload / 세션 스토어 / Redis vs Memcached 선택 / 캐싱 전략(lazy loading vs write-through) 이다.
뭔지 (What / Why)
같은 쿼리를 DB가 반복해서 처리하면 느리고 비싸다. 자주 읽는 결과를 메모리에 캐시해 두면 DB를 거치지 않고 즉시 응답한다. ElastiCache는 이 인메모리 계층을 관리형으로 준다(패치·복제·failover 대행).
앱 ─▶ (캐시 히트?) ─▶ ElastiCache(메모리) ─── 있으면 즉시 반환
└─(미스)──▶ RDS/DynamoDB ─▶ 결과를 캐시에 저장 후 반환
"자주 조회되는 데이터/쿼리 결과를 빠르게, DB 부하 감소" = ElastiCache. 관계형 DB 자체의 읽기 확장은 Read Replica, DynamoDB 전용 캐시는 DAX.
엔진 선택 — Redis/Valkey vs Memcached (빈출)
| Redis OSS / Valkey | Memcached | |
|---|---|---|
| 데이터 구조 | 풍부(string·list·set·sorted set·hash·pub/sub) | 단순 key-value |
| 고급 기능 | 복제·Multi-AZ 자동 failover·백업/스냅샷·영속성·트랜잭션·pub/sub | 없음(순수 캐시) |
| 확장 | 클러스터 모드로 샤딩 | 멀티스레드·수평 확장이 단순 |
| 적합 | 세션·리더보드·pub/sub·HA 필요·복잡 캐시 | 단순 캐시를 쉽게 스케일아웃 |
HA·영속성·복잡한 자료구조가 필요하면 Redis/Valkey, 단순 캐시를 멀티스레드로 쉽게 확장하려면 Memcached. 시험 정답은 대부분 Redis 계열(기능이 많아서).
캐싱 전략 (SAA 레벨)
| 전략 | 방식 | 특징 |
|---|---|---|
| Lazy Loading (cache-aside) | 미스일 때만 DB 조회 후 캐시 적재 | 실제 읽는 데이터만 캐시. 첫 접근은 느리고, 데이터가 오래될(stale) 수 있음 |
| Write-Through | 쓸 때 캐시도 같이 갱신 | 캐시가 항상 최신. 안 읽는 데이터까지 캐시(쓰기 부하) |
| TTL | 항목에 만료 시간 | staleness를 시간으로 제어(두 전략과 병행) |
"오래된 값이 보일 수 있다" = Lazy Loading 특성. "항상 최신 캐시" = Write-Through. 보통 Lazy Loading + TTL 조합.
대표 사용 사례
| 사례 | 이유 |
|---|---|
| DB 읽기 offload | 반복 쿼리 결과 캐시 → RDS 부하·지연 감소 |
| 세션 스토어 | 무상태 웹서버들이 세션을 공유(Redis) |
| 리더보드·순위 | Redis sorted set으로 실시간 순위 |
| 속도 제한·카운터 | 원자적 증감 연산 |
| pub/sub 메시징 | Redis pub/sub |
실무 활용 사례
- 읽기 폭주 완화: 인기 상품/피드를 캐시해 DB 히트 감소.
- 수평 확장 웹앱 세션: ALB 뒤 여러 EC2가 Redis에 세션 공유 → 특정 서버에 묶이지 않음(sticky session 대체).
- 실시간 게임 순위: Redis sorted set.
Common Wrong Directions
| 오답 방향 | 왜 부족한가 |
|---|---|
| DynamoDB 캐시에 ElastiCache | DynamoDB 전용은 DAX |
| 관계형 읽기 확장을 캐시로만 | 근본 읽기 확장은 Read Replica, 캐시는 보완 |
| HA·영속성 필요한데 Memcached | 복제·failover·백업은 Redis/Valkey |
| 세션 공유를 sticky session으로만 | ElastiCache(Redis) 세션 스토어가 더 견고 |
| "오래된 값" 문제를 무시 | Lazy Loading은 stale 가능 → TTL/Write-Through |
Exam Triggers
| 문제에서 이런 표현이 나오면 | 떠올릴 것 |
|---|---|
| "cache frequently accessed data / reduce DB load" | ElastiCache |
| "session store for stateless web servers" | ElastiCache (Redis) |
| "leaderboard / real-time ranking" | Redis sorted set |
| "pub/sub, replication, automatic failover" | Redis/Valkey |
| "simple cache, multi-threaded, easy scale-out" | Memcached |
| "microsecond reads for DynamoDB" | DAX(ElastiCache 아님) |
Memory Sentence
ElastiCache는 Redis/Valkey·Memcached 관리형 인메모리 캐시로, 반복 조회를 캐시해 DB 부하·지연을 줄인다. HA·영속성·자료구조(세션·리더보드·pub/sub)면 Redis/Valkey, 단순 캐시 스케일아웃이면 Memcached. 전략은 Lazy Loading(+TTL)·Write-Through. DynamoDB 전용 캐시는 DAX, 관계형 읽기 확장은 Read Replica.
References
댓글
아직 댓글이 없습니다.