Livepack V4 이슈 — 논의 필요

작성 요령


1. IVS Chat 방송 종료 시 채팅 종료 처리

현황

IVS Chat에는 ChatRoom 전체 연결 해제 API가 없음. DisconnectUser는 userId를 지정해야 하고 한 명씩만 가능.

방안

방안 설명 장단점
A: 클라이언트 처리 플레이어가 방송 종료 감지 → WebSocket 직접 닫음 추가 API 불필요, 클라이언트 의존
B: SendEvent 신호 방송 종료 webhook에서 SendEvent("app:live:ended") 전송 → 클라이언트 수신 후 닫음 서버에서 신호, 더 확실

결정 필요


2. IVS Chat 토큰 만료 처리

현황

논의 필요


3. Flink 동시 시청자 0명 미반영

현황

DynamoDB LiveWatchesManager-V4의 동시 시청자(cvc)가 시청자 전원 이탈 시 0으로 내려가지 않음.

원인

Flink 10초 텀블링 윈도우에서 이벤트가 0건이면 DynamoDB에 쓸 데이터가 없어 업데이트가 발생하지 않음. Peak Lambda(peak_{beid})도 동일 — 이벤트 기반이라 이벤트 없으면 트리거 안 됨.

영향

방안

방안 설명 장단점
A: Flink 타이머 윈도우에 이벤트 없으면 0으로 PUT Flink 수정 필요, 가장 정확
B: CMS 클라이언트 일정 시간(30초) 값 변화 없으면 0 표시 Flink 수정 불필요, 부정확할 수 있음
C: Lambda TTL DynamoDB TTL 설정 + 조회 시 만료 확인 삭제까지 지연 있음

결정 필요


4. CF Stream 송출 끊김 시 재연결 대기 로직

현황

CF Notifications Webhook 검토 결과

방안

방안 설명 장단점
A: Workers Cron + _sync 대기 disconnected 시 disconnected_at 기록, 다음 polling에서 timeout_seconds 경과 확인 후 종료 무료, 최대 1분 지연 (polling 주기), polling 주기 < timeout이면 부정확
B: CF Notifications Webhook connected/disconnected 실시간 수신 → 정확한 timeout 대기 Pro 플랜 필요 ($20/월), 실시간

고려사항

진행 (2026-09-21~22, DEV-2266-1)

남은 확인


5. IVS 송출 끊김 시 재연결 대기 로직 (구현 완료, 테스트 필요)

확인된 사실 (2026-09-21 테스트)

구현 (Recording End 기반)

이벤트 처리
Stream End (녹화 채널) live_channel.disconnected_at = NOW()만 기록, 종료 처리 안 함
Stream End (녹화 없음) Recording End가 오지 않으므로 즉시 확정 종료 (기존 동작)
Stream Start (LIVE + 진행 중 이벤트 존재) 재연결 → 새 live_event 만들지 않고 provider_event_id를 새 stream_id로 교체, disconnected_at 초기화
Recording Start (RECORDING 녹화 존재) 병합 세션이므로 live_recording 중복 INSERT 안 함
Recording End / Recording End Failure disconnected_at이 있으면 확정 종료. end_time/edate/DynamoDB endDate = disconnected_at (대기 시간 duration 미포함)
_status 폴링 (IVS 녹화 채널, DB LIVE, 프로바이더 IDLE) 종료하지 않고 disconnected_at 기록, reconnecting: true 응답. 300초 넘게 Recording End가 안 오면 강제 종료 (안전장치)

테스트 결과

남은 확인


6. 라이브팩 알림(alarm) 설정 — livepack DB 별도 테이블 (DEV-2266-1)

현황 (2026-09-21 조사)

결정 (2026-09-22)

livepack-api 반영 (2026-09-22)

남은 작업