Spring Boot 4 / Java 21 기반의 실시간 DJing·음악 공유 백엔드다.
src/main/java/queuing/coreglobal공통 설정, 예외, 보안, 응답, Redis/JPA 인프라room방/큐/실시간 재생 도메인user사용자 조회/인증/프로필 도메인follow팔로우 관계 도메인friend상호 팔로우 기반 친구 목록 API
src/main/resourcesconfig프로필별 설정templates,static,scripts런타임 리소스
src/test/java- 현재 room 중심 회귀/통합 테스트
docsfrontend-room-websocket-guide.md프론트 연동 가이드queue-feature-execution-plan.md큐 저장 구조 정리 문서youtube-queue-integration.mdYouTube 메타데이터 연동 메모
container- 로컬 MariaDB/Redis 컨테이너 리소스
- room queue의 source of truth는 Redis가 아니라 RDB 다.
- Redis는 참가자 / 세션 / playback / track-end scheduling / delayed room auto-delete reservation 같은 세션성 최신 상태만 담당한다.
- room 도메인은
application / domain / infrastructure / presentation계층으로 분리한다.
- 참가자:
room:{slug}:participants - playback:
room:{slug}:playback - 세션 역인덱스:
room:{slug}:sessions - user/session 매핑:
room:user_session:{userId},room:session:{sessionId} - track-end scheduling:
room:track_end:zset,room:{slug}:track_end:member - auto-delete scheduling:
room:auto_delete:zset,room:{slug}:auto_delete:member
track-end cleanup 과 auto-delete cleanup 은 모두 room delete 이후 Redis runtime state 정리 단계에서 멱등하게 실행되도록 설계되어, 이미 사라진 key 를 다시 지워도 실패로 취급하지 않는다.
./gradlew test
./gradlew build
./gradlew test --tests '*RoomQueueCommandServicePersistenceTest'
./gradlew test --tests '*RoomSocketServiceTest'