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 |
- 재연결 유예: 프로바이더가 처리 (IVS recordingReconnectWindowSeconds / CF timeoutSeconds)
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 연동 방식 재설계 필요 |
기술 스택 변경으로 자연 제외 (문제없음)
- AWS MediaLive 직접 연동 → IVS/Cloudflare로 전환
- MediaLive 채널 상태/입출력/Standby/백업 → 프로바이더 API로 대체
- XML 설정 조회 → 불필요
우선순위 결정
P0 추가 (Phase 3~4에 반영):
- IP 접속 제한, 계정 권한 관리, 알람 이메일 관리
- 플레이어 커스터마이징, 인코딩 커스터마이징, 라이브 썸네일 설정
- 분석/리포팅, CDN 커스텀 도메인, VOD 다운로드/업로드
후순위 (나중에):
- 라이브 채팅 — IVS Chat API 별도 제공 (WebSocket 기반, 서버리스), CF는 채팅 미제공 (외부 연동 필요)
- Timed Metadata — IVS PutMetadata API로 HLS 스트림에 메타데이터 삽입 가능 (투표/퀴즈/상품 팝업 동기화), CF는 미지원
제외:
- 광고 기능 (광고 영상 CRUD, 채널별 광고 설정, 광고 성과 분석)
- 멀티 퍼블리싱 (RTMP, DASH — V4는 HLS만 지원)
- DVR (라이브 되감기) — IVS/CF 둘 다 미지원 (PoC 확인)