<aside> 📌
| 용어 | 설명 |
|---|---|
| MediaMTX Paths | 스트림 리소스를 식별하는 체계로, 고유 식별자를 사용하여 오디오와 비디오를 스트리밍 인프라 전반에 라우팅합니다. |
| Main Path | 고유한 UUID로 식별되는 공개용 스트림입니다. 시청자가 HLS 또는 WebRTC로 소비하는 믹싱된 최종 결과물입니다. |
| Member Path | -m{index} 접미사가 붙는 비공개 경로입니다(예: uuid-m0). 개별 방송자(Owner 또는 Co-Host)가 원본 오디오를 발행하는 경로입니다. |
| Mixer (GStreamer) | 해당 스트림의 모든 활성 Member Path를 구독하여 오디오 트랙을 하나로 믹싱한 뒤 Main Path로 다시 발행하는 Python 서비스입니다. 고정된 인증 토큰을 사용합니다. |
| mixerToken | Mixer 서비스가 MediaMTX에 접근하고 스트림을 발행하기 위해 사용하는 정적 인증 자격 증명입니다. |
| BandMemberProfile | 음악 씬 안에서의 페르소나(정체성)를 나타냅니다(예: "기타리스트 J"). 한 명의 User는 여러 프로필을 가질 수 있지만 동시에 활성화되는 프로필은 하나뿐입니다. |
| UserMode | FAN 또는 BAND 값을 갖는 enum으로, 애플리케이션 내 사용자의 현재 컨텍스트를 결정합니다. 홈 화면 레이아웃과 사용 가능한 기능에 영향을 줍니다. |
| BandMemberStatus | 관계의 생명주기를 추적하는 상태값입니다. INVITED(초대되었으나 미수락), ACCEPTED(정식 멤버십), BAND_ACCEPTED(세션 모집에서 밴드가 지원자를 수락했으나 지원자 확인이 남은 상태)를 포함합니다. |
| Live Session (AudioStream) | 라이브 방송의 루트 엔티티입니다. path, 상태(OPEN, SCHEDULED, CLOSED 등), 시간 정보 같은 메타데이터를 포함합니다. |
| Co-Host (StreamMember) | 라이브 스트림 중 발행 권한을 부여받도록 승격된 BandMember입니다. |
| Recruitment Notice (SessionRecruitment) | 밴드가 새로운 세션 연주자를 모집하기 위해 작성하는 게시글이며, 파트·장르·지역 필터 등을 포함합니다. |
| Follower Presence (ViewerSsePresence) | SSE 하트비트를 사용하여 라이브 룸의 실시간 시청자 수를 추적하는 Redis 기반 레지스트리입니다. |
| Hexagonal Port-Adapter Pattern | Port(인터페이스)와 Adapter(구현체)를 사용하여 도메인 로직을 인프라로부터 엄격히 분리하는 아키텍처 접근 방식입니다. |
| Cursor-Based Pagination | 대부분의 목록 조회 API가 성능을 위해 사용하는 CursorPage 방식입니다. offset 대신 마지막 항목의 id(다가오는 라이브의 경우 scheduledAt)를 사용해 다음 목록을 조회합니다. |
| Soft Delete | 레코드를 물리적으로 삭제하지 않고 상태(status)로 표시하는 방식입니다. |
| Abandoned Stream | SCHEDULED 상태였으나 임계 시간 안에 시작되지 않은 스트림으로, StreamCleanupScheduler가 자동으로 정리합니다. |
| Presigned URL | MediaService가 생성하는 임시 S3 URL로, 클라이언트가 백엔드 서버를 거치지 않고 AWS에 직접 미디어를 업로드할 수 있게 합니다. |
| Nori | Elasticsearch에서 정확한 한국어 텍스트 검색을 위해 사용하는 한국어 형태소 분석기 플러그인입니다. |