트랜스코딩 DAG 모델의 장점은 무엇이고, 왜 유튜브 수준에서는 DAG가 필요할까요?

트랜스코딩 작업은 단순히 한 번의 인코딩 작업이 아니라, 워터마크 삽입, 썸네일 추출, DRM 적용, 다양한 해상도 인코딩 등 서로 다른 종속성을 가진 작업들의 집합입니다. DAG(Directed Acyclic Graph) 모델은 이러한 작업 흐름을 유연하게 정의하고 병렬/비병렬 처리를 명확하게 분리해줄 수 있습니다.

트랜스코딩 서버의 장애가 발생하면 어떤 영향이 발생하고, 어떻게 복구 설계할 수 있나요?

서버가 중단되면 해당 작업이 중단되거나 지연됩니다. 이를 방지하기 위해,

  • GOP를 나눠 작은 단위로 처리하며
  • 임시 저장소에 저장해 놓고 오류 시 재사용할 수 있게 설계했습니다.
  • 서버 장애 시에는 DAG 스캐줄러가 다른 작업 서버에 작업 배정

업로드 URL을 미리 사인(pre-signed URL) 방식으로 발급하는 이유는? 어떤 보안 이슈가 있을 수 있나요?

Presigned URL은 서버가 인증된 사용자를 대신해 일정 시간 동안 유효한 업로드 권한을 위임한 URL입니다. 이를 사용하면:

  • 클라이언트가 직접 S3나 Blob 스토리지에 업로드 가능 (서버 부하 감소)
  • API 서버는 파일 경로와 메타데이터만 관리하면 됨

보안 이슈로는

  • URL이 노출되면 제3자 업로드 가능
  • URL에 제한 조건(만료시간, content-type, 파일 크기 등) 필수
  • HTTPS 미사용 시 URL 탈취 가능

비디오 조회/재생 요청 처리에서 Redis 메타데이터 캐시는 어떤 방식으로 invalidate 혹은 갱신하나요?

Write-through 방식을 통해 메타데이터 변경 시 DB와 캐시 동시 갱신하거나 TTL 방식을 추가해서 주기적 갱신을 합니다. 또한 트랜스코딩 완료 핸들러가 DB와 캐시에 함께 업데이트합니다.

AES 암호화와 DRM(Digital Rights Management)은 어떤 차이가 있고, 유튜브에서는 각각 어떤 상황에서 사용될까요?

AES는 대칭키 방식의 일반적인 데이터 암호화 방식으로 전송, 저장 중 비디오를 보호합니다.

DRM은 클라이언트에서 복호화/재생 권한을 제어하는 시스템입니다.

저작권 보호가 필요한 콘텐츠의 경우 DRM을 통해 보호합니다.

트랜스코딩 중단 시 자동 재시도 로직 설계는 어떻게 하나요? 실패 감지는 어디서?

각 작업은 작업 큐에 등록되고 작업관리자가 작업 상태를 주기적으로 확인합니다.

정해진 시간 안에 응답 없으면 Timeout 으로 실패처리 하고

Retry 큐에 등록되며 GOP 단위로 재처리 됩니다.

이렇게 하나의 영상을 나눠 병렬 처리하여 오류 대처를 합니다.

+ Recent posts