LivePack V4 세부 작업 계획

Phase 0: 기술 검증 (PoC) — 2주 완료 (2026-08-12~13)

# 작업 결과
0-1 IVS PoC: 채널 생성 → RTMP 송출 → HLS 재생 E2E ✅ RTMPS/RTMP 모두 동작 (insecureIngest)
0-2 Cloudflare PoC: Live Input 생성 → RTMP 송출 → 재생 E2E ✅ RTMPS 동작, CDN 내장
0-3 IVS EventBridge 이벤트 수신 ✅ Session Created/Stream Start/Session Ended/Stream End 4개 이벤트 실시간 수신
0-4 CF Webhook 수신 ✅ 녹화 완료(ready)만 수신, connected/disconnected 이벤트 없음 → Polling 필요
0-5 IVS 녹화 (S3 자동 저장) ✅ HLS + 썸네일(10초 간격) + latest_thumbnail 자동 갱신
0-6 CF 녹화 (자동) ✅ 세션별 분리, timeoutSeconds로 재연결 유예 동작 확인
0-7 재연결 유예 ✅ IVS: recordingReconnectWindowSeconds / CF: timeoutSeconds — 둘 다 동작
0-8 라이브 썸네일 ✅ IVS: S3 latest_thumbnail 30초 갱신 / CF: 퍼블릭 URL 30초 갱신
0-9 Stream Key 재발급 ✅ IVS: 가능 / CF: 불가 (삭제→재생성)
0-10 RTMP Pull ❌ 둘 다 미지원 (Push만)
0-11 DVR (라이브 되감기) ❌ 둘 다 미지원
0-12 TS 암호화/DRM ❌ 둘 다 미지원 (토큰 기반 접근 제어만)

산출물: 설계 문서, 프로바이더 비교 검토, 테스트 페이지


Phase 1: 상품 사양 정의 — 1주

과금·등급·제한을 확정한다. DB 스키마와 콘솔 UI의 기반.

# 작업 산출물 우선순위
1-1 등급별 채널 수 제한 정의 (Free/Starter/Business/Enterprise) 상품 사양표 P0
1-2 등급별 동시 시청자 수 제한 정의 상품 사양표 P0
1-3 등급별 화질 제한 (SD/HD/FHD) 상품 사양표 P0
1-4 녹화 용량·보관 기간 정책 상품 사양표 P1
1-5 프로바이더 선택 정책 (기본값 CF, IVS 선택 가능 등급) 상품 사양표 P1
1-6 기존 LivePack 고객 마이그레이션 정책 (채널 이전 여부) 마이그레이션 문서 P2

Phase 1 완료 기준: 상품 사양표 확정, 이해관계자 승인


Phase 2: DB 스키마 & 과금 정책 — 2주

2-A. DB 스키마 (1주)

# 작업 우선순위
2-1 live_channel_v4 테이블 생성 (설계 문서 기반) P0
2-2 live_recording_v4 테이블 생성 P0
2-3 live_broadcast_v4 테이블 추가 (방송 세션 이력: 시작·종료 시각, 시청자 수 피크) P0
2-4 채널 수 제한 체크용 인덱스 (gid + status) P1
2-5 기존 livepack DB와의 관계 정리 (참조만 할지, 조인 필요한지) P1

2-B. 과금 정책 (1주)

# 작업 우선순위
2-6 과금 단위 결정: 방송 시간 기반 vs 채널 수 기반 vs 시청 트래픽 기반 P0
2-7 과금 데이터 수집 설계: 방송 시작/종료 시각 기록 → 월별 집계 P0
2-8 추가 사용량 과금 연동 설계 (payment-api 기존 구조 활용) P1
2-9 무료 체험 정책 (Free 등급 월 N시간 등) P1
2-10 과금 집계 배치 설계 (월말 정산 or 실시간 누적) P2

Phase 2 완료 기준: DDL 확정, 과금 모델 확정


Phase 3: API 서버 개발 — 2주 (8일)

기존 V4 프로젝트 구조(Fastify, wecandeo-db, Lambda, config) 복사 + PoC 코드 재활용.

3-A. 프로젝트 셋업 & Provider 구현 (3일)

# 작업 예상 우선순위
3-1 프로젝트 초기화 (기존 videopack-api 구조 복사) 반나절 P0
3-2 LiveProvider base class 구현 2~3시간 P0
3-3 IvsProvider 구현 (AWS SDK, PoC 코드 재활용) 1일 P0
3-4 CloudflareProvider 구현 (REST API, PoC 코드 재활용) 1일 P0
3-5 ProviderFactory 구현 (providerType → 인스턴스) 1~2시간 P0

3-B. 채널 & 방송 API (3일)

# 작업 예상 우선순위
3-6 채널 CRUD API (POST/GET/PUT/DELETE /channels) 1일 P0
3-7 채널 수 제한 검증 미들웨어 (등급별 max 체크) 2~3시간 P0
3-8 방송 상태 조회 API (GET /channels/:id/status) 반나절 P0
3-9 이벤트 수신 (IVS EventBridge→Lambda + CF Webhook→Worker) 1일 P0
3-10 BroadcastService: 상태 머신 (IDLE↔LIVE, RECONNECTING 제거) 반나절 P0

3-C. 녹화 & Polling (2일)

# 작업 예상 우선순위
3-11 녹화 설정 API (채널별 녹화 on/off, 채널 수정 API에 포함 가능) 반나절 P1
3-12 녹화 파일 목록 조회 API 반나절 P1
3-13 Worker Cron Polling (CF 채널 상태 감지, PoC Worker 재활용) 1일 P0
3-14 방송 이력 기록 (broadcast 세션 시작/종료 저장) 반나절 P0

3-D. 누락 기능 API (추가)

# 작업 예상 우선순위
3-15 IP 접속 제한 API (CRUD) 반나절 P0
3-16 계정/권한 관리 API (매니저 추가/삭제/권한 설정) 1일 P0
3-17 알람 이메일 관리 API 반나절 P0
3-18 인코딩 타입/프로파일 설정 API 1일 P0
3-19 라이브 썸네일 설정 API (간격 조정) 2~3시간 P0
3-20 CDN 커스텀 도메인 관리 API - 제거 (프로바이더 CDN 자동 제공, 필요 시 Admin에서 처리)
3-21 녹화 파일 다운로드 API (CF: MP4 자동 제공, IVS: HLS 원본) 반나절 P0
3-22 녹화→VOD(videopack) 연동 API 1일 P2

Phase 3 완료 기준: 채널 생성→RTMP 송출→상태 반영→종료 전체 플로우 동작


Phase 4: 콘솔 개발 — 1주

UI 설계: renewal 베이스(색상만 변경), 별도 디자인 불필요. 개발: renewal 컴포넌트 복사 + 에이전트 활용.

# 작업 예상 우선순위
4-1 채널 목록 페이지 (상태 뱃지, 시청자 수, 프로바이더 표시) 반나절 P0
4-2 채널 생성/수정/삭제 폼 반나절 P0
4-3 채널 상세: RTMP 정보 표시 + 복사 기능 2~3시간 P0
4-4 채널 상세: HLS 미리보기 플레이어 (기존 라이브팩 플레이어 코드 재활용) 2~3시간 P0
4-5 실시간 상태 업데이트 (Polling) 2~3시간 P1
4-6 녹화 관리 페이지 (목록 + 재생) 반나절 P2
4-7 사용량 대시보드 별도 P2
4-8 IP 접속 제한 관리 UI 반나절 P0
4-9 계정/권한 관리 UI 반나절 P0
4-10 알람 설정 UI 2~3시간 P0
4-11 플레이어 커스터마이징 UI 1일 P0
4-12 인코딩 타입 설정 UI 반나절 P0
4-13 분석/리포팅 (트래픽, 채널 성과, 환경, 스토리지, 시간대) 3~5일 P1

Phase 4 완료 기준: 채널 생성~방송 상태 확인까지 콘솔에서 가능


Phase 5: Admin & 통합 — 1주

API 연동 작업. payment-api 과금은 직접 과금 방식으로 별도 검토.

# 작업 예상 우선순위
5-1 Admin: LivePack V4 채널 조회/관리 페이지 2~3일 P0
5-2 Admin: 고객별 프로바이더·채널 수 설정 1~2일 P0
5-3 모니터링: 채널 상태 이상 알림 (Slack/이메일) 1일 P2

Phase 6: 테스트 & 배포 — 2주

# 작업 우선순위
6-1 API 단위 테스트 (Provider mock) P0
6-2 통합 테스트: 채널 생성→방송→종료→녹화 E2E P0
6-3 부하 테스트: 동시 채널 N개 Polling 성능 P1
6-4 테스트 환경 배포 (Lambda or ECS) P0
6-5 프로덕션 배포 + 모니터링 셋업 P0
6-6 기존 고객 마이그레이션 실행 (해당 시) P2

전체 타임라인 (병행 작업 기준, P0 6주)

주차 Track A (API/백엔드) Track B (콘솔/프론트)
1주 Phase 1: 상품 사양 정의 Phase 2-A: DB 기본 테이블 (상품 사양 무관한 부분)
2주 Phase 2 나머지 + 3-A: Provider 구현 Phase 4: CMS 레이아웃/공통 컴포넌트
3주 Phase 3-B: 채널 API + 이벤트 수신 Phase 4: 채널 목록/생성/상세 + 미리보기 플레이어
4주 Phase 3-C,D: 녹화/Polling/누락 API Phase 4: IP제한/계정/알람/인코딩/플레이어 UI
5주 Phase 5: Admin Phase 6: 통합 테스트 시작
6주 Phase 6: 테스트 + 배포 Phase 6: 테스트 + 배포

총 6주 (1.5개월) — P0 기준, 병행 작업

Phase 0: ✅ 완료 livepack-api, livepack-cms 프로젝트 초기화: ✅ 완료

리스크 & 의사결정 필요 사항

항목 설명 결정 시점
배포 방식 Lambda vs ECS — Polling 주기 실행 방식에 따라 결정 Phase 0 이후
과금 모델 방송 시간 vs 채널 수 vs 트래픽 — 비용 구조에 직접 영향 Phase 1
기존 마이그레이션 기존 LivePack 고객을 V4로 자동 전환할지 병행 운영할지 Phase 1
콘솔 위치 videopack-renewal에 통합 vs 별도 livepack 콘솔 Phase 4-A 전
IVS 리전 서울 단일 vs 멀티 리전 Phase 2
IVS 녹화 MP4 변환 IVS 녹화는 HLS(ts)만 제공, MP4 다운로드 필요 시 변환 파이프라인 필요 (Lambda+ffmpeg or encoder-api). CF는 MP4 자동 제공 Phase 3-C 이후
Playback URL 보안 Playback URL 유출 시 누구나 시청 가능. IVS: Private Channel + JWT 토큰, CF: Signed URL / Token Authentication 적용 필요 Phase 3

기존 LivePack 대비 누락 기능 분석

기존 라이브팩(Java, 17개 컨트롤러 + 12개 Analytics 컨트롤러)과 V4 플랜을 비교하여 누락된 기능을 정리한다.

A. 보안/관리 기능 (Phase 3에 추가 필요)

기존 기능 기존 위치 endpoints 비고
IP 접속 제한 IPRestrictionController 3개 보안 필수 기능
계정/권한 관리 (매니저 추가/삭제/권한 설정) LiveAccountController 5개 멀티유저 운영 필수
알람 이메일 관리 AlarmController 3개 장애 알림

B. 플레이어/인코딩 커스터마이징 (Phase 4에 추가 검토)

기존 기능 기존 위치 endpoints 비고
플레이어 타입 커스터마이징 (CSS, 썸네일, 자산) LivePlayerTypeController 10개 기존 고객 핵심 기능
인코딩 타입/프로파일 커스터마이징 LiveEncodingTypeController 8개 V4는 프로바이더 기본값만 사용 예정
라이브 썸네일 설정/간격 조정 LiveChannelController - IVS 1~60초 설정 가능, CF 자동

C. 광고 기능 (별도 검토 필요)

기존 기능 기존 위치 endpoints 비고
광고 영상 CRUD LiveAdVideoController 6개 V4 전체에 광고 기능 없음
채널별 광고 설정 LiveChannelController.modifyAd() - 기존 고객 사용 여부 확인 후 결정
광고 성과 분석 LiveAdVideoReportController 7개 광고 기능 포함 시 같이 추가

D. 분석/리포팅 (별도 Phase 신설 검토)

V4 플랜에는 "사용량/과금 대시보드" 1개만 포함. 기존 46+ endpoints 규모의 분석 기능이 누락됨.

기존 분석 기능 기존 위치 endpoints
트래픽 분석 LiveTrafficController 4개
채널 성과 분석 LiveChannelReportController 11개
저장소 사용량 LiveStorageUsageController 3개
환경 분석 (Device/OS/Browser/Location/Domain) 5개 Analytics Controller 10+개
시간대 분석 LiveUsageTimeController 5개

E. 기타

기존 기능 기존 위치 비고
CDN 커스텀 도메인 관리 LiveChannelController 프로바이더 CDN 사용 예정이나 커스텀 도메인 필요 가능
멀티 퍼블리싱 (RTMP, HLS, DASH) publish 모듈 V4는 HLS만 지원 예정
VOD 다운로드/업로드 LiveChannelController videopack 연동 방식 재설계 필요

기술 스택 변경으로 자연 제외 (문제없음)

우선순위 결정

P0 추가 (Phase 3~4에 반영):

후순위 (나중에):

제외: