-
Notifications
You must be signed in to change notification settings - Fork 3
Tech Redis
moon edited this page Jul 23, 2025
·
3 revisions
📌 기술 스택 - Redis (Docker + AWS ElastiCache 하이브리드)
- JWT 토큰 저장소: 액세스 토큰과 리프레시 토큰의 안전한 임시 저장
- 세션 관리: 사용자 로그인 상태 및 인증 정보 관리
- 캐싱 시스템: Hot Topic 조회 결과 및 빈번한 검색 결과 캐싱으로 응답 속도 향상
- 이중화 구조: Primary + Backup Redis로 장애 상황 대응
- Memcached: 단순 캐싱에는 적합하지만 데이터 타입 제한 및 영속성 부족
- Hazelcast: 분산 캐시 기능은 우수하지만 프로젝트 규모 대비 과도함
- DB 세션 저장: 매번 DB 조회로 인한 성능 저하
- In-Memory 저장: 서버 재시작 시 데이터 손실 위험
| 구분 | 내용 |
|---|---|
| ✅ 장점 | • 메모리 기반으로 매우 빠른 읽기/쓰기 성능 • TTL(Time To Live) 지원으로 자동 만료 관리 • 다양한 데이터 타입 지원 (String, Hash, List, Set) • 이중화로 고가용성 확보 |
| • 메모리 기반으로 인한 데이터 휘발성 • 메모리 사용량에 따른 비용 증가 • 복잡한 쿼리나 조인 연산 불가 |
JWT 토큰 저장 (Docker Redis)
├── redis-session1 (Primary) : 6380포트
├── redis-session2 (Backup) : 6381포트
└── 이중화로 안정성 확보
캐싱 시스템 (AWS ElastiCache)
└── news-deliver-cache : Valkey 엔진 사용
// 토큰 저장 (16분 TTL)
redisTemplate.opsForValue().set("access_token:" + kakaoId, token, 16, TimeUnit.MINUTES);
// 토큰 조회 (Failover 지원)
String token = redisSession1Template.opsForValue().get(key);
if (token == null) {
token = redisSession2Template.opsForValue().get(key); // Backup에서 조회
}// 캐시 저장 (1시간 TTL)
cacheTemplate.opsForValue().set("hottopic:today", hotTopicList, 1, TimeUnit.HOURS);
// 캐시 조회
List<HotTopic> cached = cacheTemplate.opsForValue().get("hottopic:today");# Docker Redis (JWT 토큰용)
redis-session1:
maxmemory: 128mb
maxmemory-policy: allkeys-lru
appendonly: yes
# ElastiCache (캐싱용)
Cache Type: Valkey
Node: cache.t4g.micro
Network: VPC 내부 배치- 역할 분리: JWT 토큰(중요)은 안전한 Docker Redis, 캐싱(일시적)은 관리형 ElastiCache
- 비용 최적화: 중요도에 따른 차별화된 인프라 운영
- 안정성: JWT 토큰 이중화로 사용자 인증 연속성 보장
- 복잡성: 두 개의 Redis 시스템 관리 필요
- 네트워크 지연: ElastiCache는 VPC 내부 통신으로 약간의 지연 발생
- 메모리 관리: 적절한 TTL 설정 및 메모리 사용량 모니터링 필요
- Redis Cluster: 트래픽 증가 시 샤딩을 통한 수평 확장
- 모니터링 강화: CloudWatch를 통한 메모리 사용률, 히트율 모니터링
-
캐시 전략 최적화:
- Write-Through: 중요한 데이터
- Write-Behind: 로그성 데이터
- Cache-Aside: 조회 중심 데이터
- ElastiCache 완전 이전: 안정성이 검증되면 JWT 토큰도 ElastiCache로 이전 고려
JWT 토큰 조회: < 1ms
Hot Topic 캐시 히트율: > 90%
메모리 사용률: < 80%
가용성: 99.9% (이중화 구조)
JWT 토큰:
- access_token:{kakaoId}
- refresh_token:{kakaoId}
캐싱:
- hottopic:today
- news:search:{keyword}:{page}
- user:settings:{userId}