2025-04-05
Flix 프로젝트: 개발 기록 - 8
FlixSpring BootRedisStreamingSession Management
1. 오늘의 진행 상황 & 구현 내용
스트리밍 서비스의 핵심 API를 구현하고, 동시 사용자 처리를 위한 세션 관리에 집중했습니다.
스트리밍 세션 관리 API
세 가지 주요 엔드포인트를 구현했습니다.
스트리밍 시작 (/api/v1/history/start): 스트리밍을 시작하고, 이어보기를 하고, 재생 위치를 업데이트할 수 있습니다. 사용자는 이메일, 사용자 ID, 비디오 ID를 기반으로 세션을 시작하거나 기존 세션을 재사용합니다.
스트리밍 재개 (/api/v1/history/resume): 세션 헤더를 사용하여 저장된 재생 위치를 조회하고, 이어보기를 위한 위치 데이터를 반환합니다.
위치 업데이트 (/api/v1/history/position): 현재 재생 위치를 기록하고 타임스탬프 추적과 함께 세션 데이터를 업데이트합니다.
2. 문제 있었던 점 & 해결 과정
문제: 다수의 동시 사용자에 대한 세션 관리와 동시 접근 처리가 어려웠습니다.
해결: Redis 기반 세션 시스템을 구현하여 해결했습니다:
- 30분 TTL을 통한 자동 만료
- UUID 기반 세션 식별자
- Set을 활용한 사용자별 세션 추적
- 활동 모니터링을 위한 마지막 접근 타임스탬프 관리
SessionServiceImpl 클래스가 Redis 작업을 통해 세션 생성, 조회, 위치 업데이트를 처리하여, 데이터베이스 부하 없이 분산 세션 처리를 가능하게 했습니다.
3. 앞으로의 계획
- 세션 관리 고도화
- 동시 접근 제한 구현
- 성능 최적화 및 모니터링 강화