Skip to content

Issue: Post 조회 Redis 캐시 추가 #81

@yunrry

Description

@yunrry

🎯 Summary
게시물 조회 성능 향상을 위해 Redis 캐시를 도입하여 데이터베이스 부하를 줄이고 응답 속도를 개선합니다.
📊 Background
조회 빈도가 높은 게시물에 대한 최적화 필요

🎨 Requirements
Functional Requirements

게시물 상세 조회 API에 Redis 캐시 적용
게시물 목록 조회 API에 Redis 캐시 적용
캐시 키 전략 정의 및 구현
캐시 만료 정책 설정
게시물 수정/삭제 시 캐시 무효화 처리

Non-Functional Requirements

조회 응답 시간 50% 이상 개선
데이터베이스 조회 쿼리 30% 이상 감소
캐시 히트율 80% 이상 달성
메모리 사용량 모니터링 대시보드 구성

🛠 Technical Specifications
캐시 전략

GET /api/v1/posts/{postId} - 게시물 상세 조회
GET /api/v1/posts - 게시물 목록 조회 (페이징)

구현 범위

Redis 설정 및 연결
PostReadUseCase에 캐시 로직 추가
PostWriteUseCase에 캐시 무효화 로직 추가
캐시 성능 메트릭 수집
단위 테스트 및 통합 테스트 작성

📋 Implementation Tasks
@Cacheable 어노테이션을 활용한 조회 캐시 적용
@CacheEvict 어노테이션을 활용한 캐시 무효화

Phase 3: 최적화 및 모니터링

캐시 히트/미스 메트릭 수집
Redis 메모리 사용량 모니터링
성능 테스트 및 튜닝
장애 상황 대응 전략 수립

🧪 Testing Strategy
Unit Tests

캐시 적중 시나리오 테스트
캐시 미스 시나리오 테스트
캐시 무효화 테스트
캐시 TTL 테스트

Integration Tests

Redis 연결 테스트
전체 플로우 테스트 (조회 → 수정 → 캐시 무효화)
동시성 테스트

Performance Tests

캐시 적용 전/후 응답 시간 비교
부하 테스트를 통한 처리량 측정
메모리 사용량 테스트

📊 Success Metrics
Performance KPIs

응답 시간: 평균 200ms → 100ms 이하
처리량: 초당 요청 처리 개수 2배 증가
데이터베이스 부하: 조회 쿼리 30% 감소

Cache KPIs

캐시 히트율: 80% 이상
메모리 사용량: 예상 사용량 이하 유지
캐시 응답 시간: 10ms 이하

⚠️ Risks & Considerations
Technical Risks

Redis 서버 장애 시 fallback 전략 필요
캐시 데이터 불일치 가능성
메모리 사용량 급증 위험

Mitigation Strategies

Circuit Breaker 패턴 적용
캐시 무효화 전략 정교화
메모리 사용량 알림 설정

🔗 Dependencies

Spring Boot Data Redis
Redis Server (버전 6.0 이상)
Micrometer (메트릭 수집)

📚 References

Spring Cache Abstraction
Redis Best Practices
Cache-Aside Pattern

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions