프로덕션 준비 완료

DRM 시스템

마이크로서비스 아키텍처 기반 엔터프라이즈급 DRM VOD 스트리밍 플랫폼 배포 가이드

11
마이크로서비스
9701-9711
포트 범위
3
DRM 시스템
R2
클라우드 스토리지

서비스 포트 매핑

전체 서비스 및 할당된 포트 목록

서비스 포트 설명 트래픽 수준
drm-analytics :9701 분석 및 통계 서비스 낮음
drm-backup :9702 백업 자동화 서비스 낮음
drm-dashboard :9703 관리자 대시보드 및 콘텐츠 관리 낮음
drm-encoding :9704 HLS 인코딩 및 DRM 패키징 (FFmpeg) 중간
drm-gateway :9705 API 게이트웨이 - 단일 진입점 높음
drm-key :9706 SPEKE v2 키 서버 (Widevine/PlayReady/FairPlay) 낮음
drm-license :9707 DRM 라이선스 발급 서버 높음
drm-logs :9708 중앙 집중식 로그 수집 높음
drm-notification :9709 알림 서비스 (이메일, Slack, Discord) 낮음
drm-player :9710 사용자 재생 및 세션 관리 높음
drm-transfer :9711 R2/S3 파일 전송 관리자 중간

Tier 1: 핵심 리소스

고성능 요구사항 - 전용 서버 권장

고사양 리소스 필요
drm-encoding :9704

FFmpeg 기반 HLS 인코딩 및 DRM 암호화. 멀티 해상도 ABR 래더를 위한 CPU 집약적 트랜스코딩 작업.

CPU
8+ cores
RAM
16GB+
Storage
500GB SSD
콘텐츠 업로드 시 CPU 집약 - GPU 가속 고려
drm-gateway :9705

API 게이트웨이 - 모든 요청의 단일 진입점. JWT 인증, 요청 제한 (60/분), 요청 라우팅.

CPU
4+ cores
RAM
8GB+
Storage
50GB SSD
모든 API 요청 통과 - 최고 트래픽
drm-license :9707

JWT 토큰 검증을 통한 DRM 라이선스 발급. 모든 재생 세션에 라이선스 검증 필요.

CPU
4 cores
RAM
8GB
Storage
50GB SSD
모든 재생 시 호출 - Redis 캐시 필수

Tier 2: 중요 리소스

중간 수준 리소스 요구사항

중간 리소스
drm-logs :9708

모든 서비스의 중앙 집중식 로그 수집. 지속적인 로깅 및 분석을 위한 높은 디스크 I/O.

CPU
2-4 cores
RAM
4-8GB
Storage
200GB+ SSD
모든 요청에 로그 수집 - 디스크 I/O 중요
drm-player :9710

사용자 재생 세션 관리 및 재생 로깅. 매 세션마다 데이터베이스 기록.

CPU
2-4 cores
RAM
4GB
Storage
50GB SSD
모든 재생 시 호출 - 잦은 DB 쓰기
drm-analytics :9701

재생 패턴, 유지율, 리포트. 대규모 집계 쿼리 처리.

CPU
2-4 cores
RAM
4-8GB
Storage
100GB SSD
관리자 쿼리만 - 대용량 데이터 집계
drm-dashboard :9703

콘텐츠 관리 및 시스템 모니터링을 위한 관리자 대시보드.

CPU
2 cores
RAM
4GB
Storage
50GB SSD
관리자 접근만 - 낮은 트래픽

Tier 3: 일반 리소스

경량 서비스 - 리소스 공유 가능

저사양 가능
drm-key :9706

DRM 키 생성을 위한 SPEKE v2 키 서버. Widevine, PlayReady, FairPlay 지원.

CPU
2 cores
RAM
2GB
Storage
20GB SSD
인코딩 시에만 호출 - 간헐적
drm-transfer :9711

Cloudflare R2 업로드/다운로드 관리자. 클라우드 스토리지로의 파일 전송 처리.

CPU
2 cores
RAM
2-4GB
Storage
50GB SSD
업로드/다운로드 작업 - 네트워크 I/O 바운드
drm-notification :9709

멀티 채널 알림 서비스: 이메일, Slack, Discord, Webhook 알림.

CPU
1-2 cores
RAM
2GB
Storage
20GB SSD
이벤트 기반 트리거 - 간헐적 호출
drm-backup :9702

데이터베이스 및 R2 콘텐츠를 위한 자동 백업 서비스. 예약된 작업.

CPU
2 cores
RAM
2-4GB
Storage
100GB SSD
예약 작업만 - Cron 기반

트래픽 흐름 패턴

요청 라우팅 및 빈도 분석

요청 흐름 다이어그램
사용자 재생 -> gateway:9705 -> license:9707 (라이선스 발급) 매 재생
-> gateway:9705 -> player:9710 (세션 시작/종료) 매 재생
-> 전체 서비스 -> logs:9708 (로그 수집) 매 요청
콘텐츠 업로드 -> encoding:9704 -> key:9706 -> transfer:9711 업로드 시
관리자 접근 -> dashboard:9703 -> analytics:9701 관리자만

배포 옵션

확장 가능한 인프라 구성

옵션 A: 단일 서버 소규모
CPU 8 cores
RAM 32GB
스토리지 1TB NVMe SSD
설정 Docker Compose
포함 사항
전체 11개 서비스 MySQL Redis
~100 동시 접속자
옵션 B: 분산 배포 중규모
서버 1 (인코딩) 8C / 16GB / 500GB
서버 2 (코어 API) 4C / 16GB / 100GB
서버 3 (지원) 4C / 8GB / 300GB
서버 4 (데이터베이스) 4C / 16GB / 500GB
아키텍처
인코딩 분리 DB 분리
~1,000 동시 접속자
옵션 C: 쿠버네티스 엔터프라이즈
플랫폼 K8s / EKS / GKE
인코딩 노드 CPU 최적화
API 노드 범용
스케일링 HPA 오토스케일링
특징
수평 확장 무중단 배포
10,000+ 동시 접속자

핵심 최적화 포인트

프로덕션 배포를 위한 중요 고려사항

drm-encoding

가장 높은 리소스 소비. CPU 집약적 FFmpeg 처리. 전용 서버 강력 권장. 동시 인코딩 작업 제한 필요.

drm-gateway

모든 트래픽 통과 - 잠재적 병목. 트래픽 증가 시 수평 확장 필요. 요청 제한 적용 (60/분).

drm-license

모든 재생 시 호출 - 가장 높은 호출 빈도. Redis 캐싱 필수. 데이터베이스 로드 밸런싱 고려.

데이터베이스

playback_logs 테이블 빠른 증가. 테이블 파티셔닝 구현 필요. 성능을 위한 정기적인 아카이빙 필요.