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. 앞으로의 계획

  • 세션 관리 고도화
  • 동시 접근 제한 구현
  • 성능 최적화 및 모니터링 강화