AWS 기술 블로그

Media-Quality Aware Resiliency(MQAR)으로 시청자의 라이브 스트리밍 경험 개선

이 글은 AWS M&E Blog에 게시된 ‘Improve your viewers’ live streaming experience with Media-Quality Aware Resiliency’를 번역했습니다.

프리미엄 라이브 스포츠 경기, 콘서트 또는 뉴스 스트리밍을 위한 고가용성 솔루션을 설계하는 것은 시청자들에게 최고의 시청 경험(QoE)을 제공하는데 매우 중요합니다. 비디오 전송 워크플로우를 두 개의 서로 다른 Amazon Web Services(AWS) 리전에 배포하는 것이 추가적인 중복성을 제공하는 한 가지 방법입니다. 리전 장애 조치(failover)를 통해 워크플로우에 대한 영향을 완화할 수 있으며, 일부 또는 전체 리전에 장애가 발생하는 예기치 않은 상황에서도 서비스를 유지할 수 있습니다.

비디오 스트림 간 전환이 필요한 또 다른 이유는 현장에서 특정 리전으로 전송되는 라이브 비디오에서 품질 저하가 감지될 때입니다. 전통적으로 이러한 품질 저하는 “eyes-on-glass”(신뢰성 모니터링)를 수행하는 전담 비디오 전문가가 품질 문제를 감지하고 이어서 보조 스트림으로 전환합니다. 이러한 수동 프로세스는 몇 분이 소요되므로 그 동안 시청자들은 스포츠 경기의 결정적인 순간이나 중요한 뉴스를 놓칠 수 있습니다. 복구에 시간이 오래 걸릴수록 QoE에 미치는 영향이 커지며 이에 불만족한 시청자들은 결국 구독을 취소하게 될 수 있습니다.

Media Quality-Aware Resiliency(MQAR)은 Amazon CloudFrontAWS Elemental Media Services 간의 통합 기능으로 동적으로 계산된 미디어 품질 점수를 기반으로 자동화된 교차 리전 오리진 선택 및 장애 조치 기능을 제공합니다. MQAR을 통해 “eyes-on-glass”가 항상 작동하고 비디오 품질 문제를 감지하고 몇 초 만에 자동으로 중복 비디오 스트림 간 전환을 수행합니다.

최고의 시청 경험을 위해 상시 가동되는 “eyes-on-glass”

AWS에서 라이브 이벤트 스트리밍은 현장에서 시작되어 클라우드로 비디오가 전송된 후, 처리되어 대규모 시청자들에게 배포됩니다. QoE 측정은 모바일, PC, 스마트 TV, VR 헤드셋 등 시청자들의 재생 기기에서 비디오가 어떻게 인식되는지 이해하는 데 매우 중요합니다. 고객들이 QoE를 평가하는 데 가장 일반적으로 사용하는 지표에는 비디오 시작 시간, 버퍼링 비율, 비디오 재생 실패, 비트레이트, 비디오 해상도, 시청자 참여도가 포함됩니다.

이러한 지표들은 플레이어의 재생 성능을 반영하는데, 이때 스트림의 지연 시간이나 가용성은 영향을 미치나 기본적인 비디오 품질은 반영하지 않습니다. 예를 들어, 비디오가 왜곡되거나, 정지되거나, 검은 화면이 재생되는 경우에도 QoE 지표에는 이러한 문제가 표시되지 않습니다.

원본에서 비디오 신호 상태를 검사하는 수준의 품질 제어를 가능하게 하기 위해, 이제 Media-Quality Aware Resiliency(MQAR)를 사용할 수 있으며 다음과 같은 기능을 제공합니다.

  • 비디오 품질 점수를 기반으로 한 동적 교차 리전 오리진 선택
  • 크로스 리전 패키징 엔드포인트를 통한 원활한 미디어 스트림 전환
  • 비디오 품질에 대한 지속적인 모니터링
  • 개별 비디오 프레임 분석을 통한 일반적인 품질 문제 감지
  • 워크플로우 초기 단계에서 문제를 감지하여 조기에 복구함으로써 품질 저하의 영향 범위 최소화
  • 문제 진단에 대한 가시성과 경고 제공으로 필요한 경우 디버깅과 수동 조치 지원이 가능하도록 함

대규모 실시간 이벤트 송출을 위한 미디어 품질 인식 복원력을 갖춘 아키텍처

미디어 품질 인식 복원력(MQAR)은 교차 리전 비디오 전송 워크플로우 상에서 활성화할 수 있습니다. 아키텍처는 리전당 단일 입력 스트림을 사용하거나, 더 높은 복원력과 리전 간 전환을 줄이기 위해 리전당 두 개의 입력 스트림을 사용할 수 있습니다.

그림 1: 리전별 중복 입력 스트림과 파이프라인 채널을 구성한 MQAR 운영 방식

이번 블로그에서는 MQAR 오리진 선택에 중점을 둡니다.

  1. 현장에서 2 개의 중복 인코더(이 경우 AWS Elemental Live 장비)를 사용하여 라이브 이벤트 피드를 2개 리전의 AWS Elemental MediaConnect로 전달한 다음 AWS Elemental MediaLive로 전송할 수 있습니다.
  2. MediaLive 표준 채널은 2개의 비디오 입력을 처리하고 적응형 비트레이트(ABR) 인코더 수준에서 미디어 품질 문제를 감지하여 지속적으로 미디어 품질 신뢰도 점수(MQCS)를 생성합니다. 이 점수는 전송 소스에 결함이 없고 인코딩 프로세스가 안정적인 이상적인 상태와 비교하여 특정 시청자 대상 스트림에 포함된 인지된 이상을 반영합니다. MQCS는 수집 단계에서 각 HTTP PUT 요청과 함께 CMSD(Common Media Server Data) 헤더로 패키저/원본 AWS Elemental MediaPackage에 전달됩니다.
  3. MediaPackage 채널은 2개의 수집 파이프라인의 MQCS를 지속적으로 검사하고 최상의 품질 점수를 보고하는 파이프라인을 선택하여 리전 내 품질 기반 복원력을 제공합니다. 이를 위해서는 입력 간 전환이 콘텐츠 타임라인 연속성 관점에서 원활하도록 epoch locked CMAF(Common Media Application Format) 수집을 사용해야 합니다. MediaPackage는 오리진으로부터 비디오 스트림을 제공받고 MQCS를 CMSD 헤더로 출력 신호를 보내므로, 원본 스트림을 가져오는 모든 다운스트림 서비스는 GET 또는 HEAD 요청을 통해 MQCS 정보를 얻을 수 있습니다.
  4. CloudFront 배포에서 MQAR을 활성화하면 CloudFront는 서로 다른 AWS 리전에 위치한 2개의 동기화된 MediaPackage 채널의 MQCS를 지속적으로 비교합니다. 채널에 대해 최상의 품질 점수를 보고하는 MediaPackage 원본을 동적으로 선택하여 교차 리전 품질 기반 복원력을 제공합니다. Amazon CloudFront Origin Shield를 타사 CDN과 함께 사용하면 모든 다운스트림 CDN이 자동으로 최상의 품질의 미디어 세그먼트를 얻게 됩니다. 이는 고객에게 교차 CDN 품질 기반 복원력이라는 추가 이점을 제공합니다.
  5. 모든 CDN의 시청자는 최상의 시청 경험을 위해 가장 높은 품질의 비디오 스트림을 미디어 클라이언트로 수신합니다.

MQAR기능이 활성화된 실시간 이벤트 송출 워크플로우 구성

중복성을 위해 2개의 AWS 리전에서 비디오 파이프라인 워크플로우를 배포하는 데 다음과 같은 구성이 권장됩니다. AWS 미디어 서비스를 지원하는 AWS 리전을 확인하려면 AWS 서비스별 리전 목록을 참조하시기 바랍니다.

AWS Elemental MediaLive구성

MediaLive는 CMAF 입력 유형으로 구성된 MediaPackage V2 채널에 게시할 때 자동으로 MQCS(미디어 품질 신뢰도 점수)를 생성합니다. CMAF 수집 출력 그룹을 구성하려면 MediaLive 사용 설명서의 지침을 따르시기 바랍니다.

MediaLive의 MQCS에 대한 자세한 설명

MQCS는 시청자 수준에서 인지되는 비디오 품질을 추정하기 위해 입력 신호와 인코딩된 출력 신호를 비교하지 않는다는 점에서 다른 비디오 품질 분석(VQA) 접근 방식과 근본적으로 다릅니다. 대신 MQCS는 비디오 전송 및 인코딩 워크플로우에서 발생할 수 있는 가장 일반적인 품질 문제를 감지하는 데 중점을 둡니다.

이러한 문제들은 “회색 장애”의 원인이 될 수 있는 데, 플레이어 측에서 가용성 오류를 발생시키지는 않지만(라이브 스트림이 오래되지 않고 모든 미디어 세그먼트를 사용할 수 있음), 비디오 디코딩 후 시각적 경험에 산발적으로 영향을 미칠 수가 있기 때문입니다. 영향은 크게 소스 비트스트림 문제, 기본 스트림 문제, 오류 은닉, 오류 복구, 세그먼트 오류의 5가지 그룹으로 분류될 수 있습니다.

초기 MQCS 지원으로 MediaLive는 6가지 유형의 문제 감지를 기반으로 각 미디어 세그먼트에 대한 간단한 품질 점수를 결정할 수 있게 되었습니다.

  1. 입력 손실로 인해 인코더가 프레임을 반복하여 채우는 문제
  2. 비디오 버퍼 드롭이나 디코딩 문제로 인한 프레임 드롭
  3. 네트워크 패킷 손실로 인한 연속성 카운터 에러(패킷 전송 과정에서 패킷 손실을 감지하는 매커니즘)
  4. 제작이나 전송 문제로 인한 블랙 프레임
  5. 제작이나 전송 문제로 인한 프리즈 프레임 (화면 정지)
  6. 실시간 작업을 유지하기 위해 인코더가 인코딩 품질을 낮춤으로 발생하는 스피드 vs 품질(SVQ)인코딩 문제

각각의 유형들은 MQCS(미디어 품질 복합 점수) 알고리즘에 입력됩니다. 문제가 전혀 감지되지 않으면 MQCS는 100점이 됩니다. 하나 이상의 문제가 감지되면, MQCS는 문제의 지속 시간과 심각도에 비례하여 잠재적으로 0점까지 하락할 수 있습니다. 예를 들어, 입력 손실이 감지되면 출력 품질이 저하될 것이 확실하기 때문에 점수는 0점으로 떨어집니다. 그러나 화면 정지(프리즈 프레임)의 경우에는 출력이 블랙 비디오 프레임보다는 상대적으로 더 유용하기 때문에 점수가 25점 정도로 하락할 수 있습니다.

알고리즘은 짧은 탐지 기간동안 오탐을 방지하고 실질 문제를 반영하도록 튜닝되었습니다. 스코어링 알고리즘은 리소스 사용 측면에서 매우 효율적이며 출력 스트림의 지연시간에 영향을 끼치지 않습니다.

AWS Elemental MediaPackage 구성

서로 다른 2개 리전에서 각각 CMAF 수집 설정이 구성된 MediaPackage 채널을 동일하게 구성해야 합니다. 이는 기본적인 교차 리전 장애 조치와 MQAR 동적 오리진 선택 모두에 필요한 요구사항입니다. 다양한 오류 시나리오에서 복원력을 확보하기 위해선 엔드포인트 오류 동작을 안내대로 구성해야 합니다. 또한 CloudFront 배포가 백업 MediaPackage 오리진으로 장애 조치할 수 있는지 검증해야 합니다.

MQAR을 위해서는 MediaPackage V2 채널의 “미디어 품질 신뢰도 점수(MQCS) 설정” 섹션에서 아래 2가지 구성 옵션이 체크되어 있는지 확인해야 합니다. 해당 옵션들은 입력 유형으로 CMAF를 선택한 경우에만 사용할 수 있습니다. CMAF Ingest를 사용하는 모든 채널에서 기본적으로 활성화되어 있으며, 필요한 경우 API/SDK 또는 콘솔을 통해 비활성화할 수 있습니다.

그림 2: AWS Elemental Media Package CMAF 입력 유형 구성

MediaPackage의 품질 기반 입력 페일오버

기본적으로 MediaPackage는 가장 건강한 수집 파이프라인, 즉 세그먼트 가용성 측면에서 가장 완전하고 지연 없는 파이프라인을 선택합니다. “Enable input switch based on MQCS(MQCS 기반 입력 전환)” 옵션이 활성화되어 있고 두 수집 파이프라인이 모두 정상일 때, MediaPackage는 들어오는 MQCS 요소를 고려합니다. 수집된 모든 렌디션에서 가장 좋은 점수를 보이는 수집 파이프라인으로 전환하며, 이는 단일 수집 세그먼트 지속 시간의 세밀한 수준까지 적용됩니다. 이를 통해 MediaPackage는 JITP(적시 패키징) 품질 접근 방식을 사용하여 출력에서 결함이 있는 세그먼트를 제거할 수 있습니다.

CMSD에 MQCS 게시

“Enable MQCS publishing in Common Media Server Data (CMSD)”옵션이 활성화 돼 있는 경우, MediaPackage는 출력 엔드포인트의 MQCS에 신호를 보냅니다. MediaPackage는 각각의 개별 세그먼트에 대해 여러 CMSD 키를 사용하며(MediaLive와 유사한 방식), 각 트랙 유형과 각 시퀀스에 대해서도 동일하게 적용합니다. 마지막으로 주어진 미디어 시퀀스 번호의 모든 세그먼트 점수를 집계하고 평균을 냅니다. CloudFront는 MQCS 시퀀스 점수를 활용하여 특정 오리진의 점수를 평가합니다. MQCS 시퀀스 점수는 모든 렌디션에 걸쳐 집계되므로, 개별 세그먼트의 점수보다 더 안정적이며 이는 오리진 플래핑의 위험을 줄여줍니다. 또한 CDN 레벨에서 특정 채널의 전반적인 품질 점수를 평가하는 데 필요한 데이터 포인트가 적어져 CloudFront가 더 신속하게 오리진 선택 결정을 내릴 수 있게 합니다.

중요: MediaPackage가 제공하는 미디어에 대한 GET 요청에 대해서만 패키징/오리진 요금이 부과됩니다. CMSD 헤더에서 MQCS 값을 응답하는 MediaPackage 채널에 대한 HEAD 요청에 대해서는 오리진 요금이 발생하지 않습니다. 만약 어떤 이유로든 이 채널에 대한 CMSD의 품질 점수를 표시하고 싶지 않다면, 이 옵션을 끄면 됩니다.

오리진이 요청 응답에 추가할 수 있는 대부분의 CMSD 키에 대한 지원이 추가되었으며, 여기에는 스트리밍 유형, 스트리밍 형식, 중개자 식별자, 객체 유형, 인코딩된 비트레이트, 보류 시간, 객체 지속 시간 및 게시 시간이 포함됩니다. 이러한 CMSD 키들은 모니터링 시스템, QoE 플랫폼 및 로그 처리 솔루션에서 미디어 중심의 입력 매개변수를 통해 경고, 로그 분석 또는 근본 원인 분석을 개선하는 데 활용될 수 있기 때문에 가치가 있습니다.

Amazon CloudFront 구성

복원력이 뛰어난 라이브 이벤트 전송을 위해 MediaPackage를 사용하여 라이브 스트리밍을 위한 CloudFront 배포를 생성하는 구성을 따르세요.

품질 점수 기반의 오리진 그룹 생성

2개의 서로 다른 리전에 AWS 미디어 서비스 파이프라인을 생성하고, 교차 리전 배포에서 Elemental MediaPackage V2 오리진 설정을 참고하여 CloudFront 배포에 추가합니다. 그 다음 오리진 그룹을 생성하고 장애 조치 및 선택 기준을 구성할 수 있습니다. 방법은 다음과 같습니다.

  1. CloudFront 콘솔을 엽니다
  2. 오리진 그룹을 생성할 배포를 선택합니다
  3. Origins 탭의 Origin groups 창에서 Create origin group을 선택합니다.
  4. 오리진 그룹의 이름을 입력합니다
  5. MediaPackage v2 오리진을 선택하고 위/아래 화살표를 사용하여 기본 및 보조 오리진의 우선순위를 설정합니다
  6. 장애 조치 기준으로 사용할 HTTP 상태 코드를 선택합니다
  7. 이 오리진 그룹에서 MQAR을 사용하려면 Origin selection criteria에서 품질 점수 기반 오리진 선택 활성화를 위해 Media quality score를 선택합니다 (그림 3 참조)

그림 3: CloudFront 오리진 그룹 구성, 각기 다른 리전의 MediaPackage 오리진 설정, 페일오버 기준, 그리고 오리진 선택 기준 활성화 설정

CloudFront 캐시 동작에서의 MediaPackage 채널 전송을 위한 MQAR 활성화 방법

CloudFront에서 채널 전송을 위한 캐시 동작을 생성할 때, 생성한 오리진 그룹을 캐시 동작의 오리진으로 선택하십시오. 경로 패턴(path pattern)의 경우, Elemental 채널 그룹 엔드포인트에서 채널 그룹을 생성할 때 제공된 경로 패턴을 복사하여 붙여넣습니다. (그림 4 참조).

그림 4: CloudFront 캐시 동작 설정에서 오리진 그룹 설정

이제 CloudFront 배포가 기본 오리진에 GET 요청을 전달할 때, CloudFront는 각 요청마다 보조 오리진에도 HEAD 요청을 보냅니다. CloudFront는 각 오리진에서 받은 품질 점수를 비교하여 어떤 오리진이 더 높은 품질을 제공할 가능성이 있는지 결정합니다. 기본 오리진의 점수가 안정화되면 CloudFront는 백오프 시간을 사용하여 기본 오리진에서 스트림을 원활하게 가져오도록 합니다. 이 모든 과정은 자동으로 이루어지며 추가 구성이 필요하지 않습니다.

중요: CloudFront는 MQAR이 활성화된 오리진 그룹이 있는 각 캐시 동작에 대해 MQCS 시퀀스 점수를 추적합니다. 동일한 오리진 그룹에 대해 서로 다른 캐시 동작을 사용할 수 있습니다. 또는 동일한 MediaPackage 오리진에 대해 여러 오리진 그룹을 생성하고 캐시 동작에 서로 다른 오리진 그룹을 할당할 수 있습니다. 두 옵션 모두 여러 채널에서 MQAR을 사용할 수 있게 해줍니다. 각 배포에 대한 오리진 그룹 수 제한은 CloudFront 할당량을 참조하십시오.

관찰 가능성(Observability)

MQAR 솔루션이 MediaLive, MediaPackage 및 CloudFront 전반에 걸쳐 활성화되면, 품질 점수를 기반으로 리전 내 및 교차 리전 장애 조치를 자동으로 오케스트레이션합니다. 각 서비스는 문제의 원인을 추적하거나 오리진 선택 결정을 검증하는 데 함께 사용할 수 있는 관찰 가능성 기능을 제공합니다.

CloudFront MQAR 로그 필드

CloudFront 실시간 로그를 사용하면 품질 점수 변화가 있을 때 CloudFront가 기본 오리진 대신 보조 오리진을 선택하는 시점을 다음 세 가지 새로운 필드를 통해 추적할 수 있습니다:

  1. r-host: 오리진 요청에 대해 발생하며, 객체를 제공하는 데 사용된 오리진 서버의 도메인을 나타냅니다. 오류가 발생한 경우 마지막으로 시도된 오리진을 표시합니다. 예: cd8jhdejh6a.mediapackagev2.us-east-1.amazonaws.com
  2. sr-reason: 오리진이 선택된 이유를 제공합니다. 기본 오리진에 대한 요청이 성공하면 비어 있습니다. 오리진 장애 조치가 발생하면 이 필드는 장애 조치를 유발한 HTTP 오류 코드(예: Failover:404 또는 Failover:502)를 포함합니다. 오리진 장애 조치를 할 때 재시도된 요청도 실패하고 사용자 지정 오류 페이지가 사전 구성되지 않았다면 r-status는 두 번째 오리진의 응답을 나타냅니다. 그러나 사용자 지정 오류 페이지가 있고 오리진 장애 조치를 구성한 경우, 요청이 실패하고 사용자 지정 오류 페이지가 대신 반환되면 이 필드는 두 번째 오리진의 응답을 포함합니다. 오리진 장애 조치는 발생하지 않았지만 MQAR 오리진 선택이 발생한 경우 MediaQuality로 기록됩니다.
  3. x-edge-mqcs: MediaPackage v2의 CMSD 응답 헤더에서 CloudFront가 검색한 미디어 세그먼트의 MQCS 범위(0-100)를 나타냅니다. 이 필드는 MQAR이 활성화된 오리진 그룹이 있는 캐시 동작과 일치하는 요청에 사용할 수 있습니다. CloudFront는 오리진 요청 외에도 캐시에서 제공되는 미디어 세그먼트에 대해서도 이 필드를 기록합니다.

MediaPackage MQAR 지표

CloudFront 실시간 로그에서 MQCS 품질 저하가 감지되면 고객은 해당하는 MediaPackage 채널까지 추적을 계속할 수 있습니다. 채널의 배포 리전은 r-host 로그 필드에서 확인할 수 있으며, 채널 그룹과 채널은 요청 URL의 일부로 포함되어 있습니다. MediaPackage는 특정 채널에서 무슨 일이 일어나고 있는지 이해할 수 있도록 Amazon CloudWatch 메트릭을 제공합니다.

  • 오리진 엔드포인트의 경우, 집계 점수가 ChannelMQCSSequence 지표에 표시됩니다. 각 트랙 유형에 대한 자세한 점수는 ChannelMQCS에 표시됩니다. 이 두 지표는 원본의 스위칭을 트리거한 점수 저하를 분당 수준 해상도로 반영해야 합니다.
  • 수집 엔드포인트의 경우 유사한 ChannelMQCSSequence와 ChannelMQCS가 하나 또는 2개의 수집 엔드포인트에서 세그먼트 수준과 미디어 시퀀스 번호 수준에서의 MQCS 저하를 각각 반영합니다. 문제가 있는 수집 엔드포인트를 식별함으로써 상위 MediaLive 채널 수준에서 추가 조사를 수행할 수 있습니다.

MediaLive MQAR 로그 필드와 지표

MediaLive에서는 MQCS저하는 아래와 같이 반영됩니다.

  • CloudWatch 로그: MQCS가 80 아래로 떨어질때마다 로그 메시지가 전송됩니다.
  • CloudWatch 지표: MQCS 계산에 대한 모든 입력 파라미터는 각 렌더링에 대해 합성된 MQCS와 모든 렌더링의 최소 MQCS뿐만 아니라 별도의 메트릭으로 노출됩니다.

이러한 로그와 메트릭 외에도 MediaLive는 SVQ, 프레임 채우기 삽입, 블랙 프레임에 대한 CloudWatch 이벤트를 발생시키며 이는 경고 목적으로 활용될 수 있습니다. 모든 MQCS 관련 경고는 MediaLive 콘솔에서도 확인할 수 있습니다. MediaLive 품질 지표에 대한 임계값이나 기존 로그 분석 도구를 기반으로 CloudWatch 경보를 설정할 수 있으며, 오리진 전환을 트리거하는 품질 저하를 상호 연관시킬 수 있습니다.

결론

실시간 미디어 소비가 방송 영역에서 OTT영역으로 이동하면서 방송급 복원력 및 품질 보증에 대한 필요성이 날로 증가하고 있습니다. 해당 블로그를 통해 AWS 미디어 서비스와 Amazon CloudFront를 통해 MQAR을 활용하여 “eyes-on-glass”를 자동화하고 중단 이벤트 기간을 최소화하는 방법을 설명합니다.

자세한 내용과 구성에 대해 알고 싶다면 AWS 영업팀에 연락하세요.

추가 자료

TaeHoon Kyeong

TaeHoon Kyeong

경태훈 솔루션즈 아키텍트는 미디어 및 엔터테인먼트 고객들이 비즈니스 목표를 달성할 수 있도록 최적의 클라우드 아키텍처를 설계할 수 있도록 돕습니다. 또한, 미디어 및 엔터테인먼트 산업 영역에 생성형AI 기술 적용 방안을 검토하는 워킹 그룹 활동을 하고 있습니다. 과거에는 SAP 데브옵스 개발자로 근무한 경험이 있습니다.