AWS 기술 블로그
Amazon CloudFront 기반의 OTT 스트리밍에서의 QoS 가시성
OTT 환경에서의 QoS와 그 중요성
오늘날의 디지털 시대에는 초고속 인터넷이 널리 보급되고 스트리밍 디바이스의 종류가 다양해지면서 오버더톱(OTT) 콘텐츠가 일상 생활의 필수 요소로 자리 잡았습니다. 하지만 선택의 폭이 넓어지면서 OTT 콘텐츠에 대한 서비스 품질(QoS)을 보장하는 것은 콘텐츠 제공업체와 소비자 모두에게 중요한 과제가 되었습니다. 국제전기통신연합(ITU)은 네트워크 관리 및 보장에 중점을 둔 QoS와 주관적인 사용자 만족도를 평가하는 체감 품질(QoE)을 구분합니다. 우수한 품질의 경험을 달성하려면 네트워크 성능 외에도 다양한 요소를 고려해야 합니다. QoS와 QoE를 효과적으로 관리하기 위해 사업자는 QoS의 경우 리버퍼링 및 비디오 재생 실패와 같은 업계 수준의 주요 지표를 모니터링하고, QoE의 경우 HTTP 오류 코드, 지연 시간, 캐시 적중률 등을 모니터링해야 합니다. 이러한 지속적인 노력은 가시성을 개선하고 OTT 전송의 QoS 측면을 강화하는 것을 목표로 하며, Amazon CloudFront가 그 중심이 되고 있습니다.
이전 포스팅에서는 CMCD를 위한 솔루션으로 QoE 가시성을 개선하는 방법에 대해 설명했습니다. 이번 포스팅에서는 고객에 대한 가시성을 개선하기 위한 노력을 계속 이어가면서 CloudFront를 통한 OTT 전송의 QoS 측면에 대해 더 자세히 살펴봅니다.
이 포스팅에 대하여
이 포스팅에서는 대규모 이벤트 또는 연중무휴 24시간 리니어 스트림에 대한 미디어 전송 환경에서 가시성을 향상시키는 실시간 대시보드 배포 방법을 안내합니다. 이 솔루션은 CloudFront 실시간 로깅 기능을 사용하여 전송 성능 지표에 대한 실시간에 가까운 가시성을 제공합니다. 이를 활용하여 비디오 전송 구성 요소의 다양한 측면으로 가시성을 확장할 수 있습니다.
CloudFront 비디오 자산 전송 대시보드는 스트리밍 해상도 및 비디오 자산과 관련된 메트릭을 캡처합니다. 이 대시보드는 가장 일반적으로 사용되는 비디오 해상도를 고려합니다. 각 해상도별 데이터를 분석함으로써, 성능 추세를 파악하게 해줄 뿐만 아니라 최종 사용자까지의 비디오 전송의 전반적인 품질을 개선할 수 있는 데이터를 제공하여 데이터 기반의 의사 결정을 할 수 있도록 도와줍니다. 이와 같은 정보를 바탕으로 고객은 스트리밍 인프라를 최적화하여 최종사용자에게 최상의 시청 경험을 제공할 수 있습니다.
또한 이러한 지표를 매니페스트와 세그먼트로 더 세분화하여 워크플로우에 내장된 로직이 두 가지 일반적인 비디오 형식(HLS와 MPEG-DASH)을 고려하도록 했습니다.
아키텍처
다음 아키텍처는 CloudFront 비디오 자산 전송 대시보드를 구축하는 데 필요한 메트릭을 제공하는 데 사용됩니다:
[그림 1: 전체 솔루션 아키텍처]
비디오 콘텐츠를 스트리밍하는 고객은 이미 사용자에게 비디오 자산을 전송하는 CloudFront 배포를 보유하고 있습니다. 이를 염두에 두고 대시보드를 현재 미디어 전송 흐름에 연결하면 메트릭이 대시보드에 채워지기 시작합니다. 대시보드 구축을 위한 아키텍처의 구성 요소는 다음과 같습니다:
1- CloudFront 실시간 로그: 이 구성은 CloudFront가 각 요청에 대한 세부 정보를 거의 실시간으로 제공하는 데 필요한 실시간 로그 구성입니다. 생성되는 데이터의 양을 줄여 비용과 성능을 제어하기 위해 이 구성의 필드는 대시보드를 채우는 데 필요한 특정 정보만 제공되도록 선택하였습니다. 문제 해결이나 기타 사용 사례를 위해 추가 정보가 필요한 경우, CloudFront 표준 로그를 활용하는 것이 좋습니다. 또한 실시간 로그 구성에 필드를 추가해야 하는 경우, 추가 필드를 처리하기 위해 AWS Lambda 함수에서 코드를 사용자 정의해야 합니다. 현재 사용 중인 필드는 다음과 같습니다:
- timestamp
- sc-bytes
- sc-status
- cs-uri-stem
- time-taken
- x-edge-result-type
- asn
각 필드가 로그에 추가하는 정보에 대한 자세한 내용은 이 CloudFront 설명서를 참조하세요.
2- Amazon Kinesis Data Streams: 이 구성은 CloudFront가 로그를 푸시하는 과정에서 출발점이 되는 서비스입니다. CloudFront의 실시간 로그 구성은 대시보드 구축에 필요한 필드와 함께 목적지로서 Kinesis Data Streams이 설정되어 있습니다.
3- Lambda 변환: 데이터는 Amazon Kinesis에서 일괄적으로 수신되며, 이 Lambda는 코드를 실행하여 실시간 로그에서 데이터를 분리하고 대시보드에 필요한 메트릭을 생성합니다.
4- CloudWatch 로그/메트릭: 보다 비용 효율적으로 만들기 위해, CloudWatch 임베디드 메트릭 형식(EMF)을 사용하여 메트릭을 게시합니다. EMF를 사용하면 PutMetric API 호출을 하지 않기 때문에 비용을 절감할 수 있습니다. 메트릭이 전송되는 로그 그룹은 최대 30일 동안 데이터를 보관해야 합니다.
5- 미디어용 CloudWatch 대시보드: 미디어 전송을 모니터링하는 미디어 전송 관리자 및 운영 팀이 미디어 자산 전송에 대한 지표를 분석하고 검토할 수 있는 대시보드입니다.
전제 조건
계속 진행하기전에 다음 전제 조건에 대한 확인이 필요합니다.
1. 이 솔루션을 사용하는 사용자는 각 자산 유형별 고유 식별자(HD/UHD/nonHD)가 각 자산 유형에 대한 URL에 통합되어 있어야 합니다. 대부분의 경우 고객은 해상도에 따라 비디오 자산의 파일 구조를 생성합니다. 또한 HTTP URL에도 동일한 구조를 적용합니다. 예를 들어, 초고화질(UHD) 콘텐츠를 스트리밍하는 경우 ‘soccer_match_uhd’와 같은 고유 식별자를 사용하거나 해상도 자체인 ‘3840×2160’을 URL의 일부로 사용할 수 있습니다. 이 솔루션은 URL 파서를 기반으로 하며 쿼리 문자열의 식별자는 이 솔루션에서 작동하지 않는다는 점에 유의하세요.
2. 이 솔루션은 고객의 기존 동영상 워크플로우와 원활하게 통합되도록 설계되었습니다. 사용자는 비디오 워크플로우의 일부로서 자산을 제공하기 위한 용도로 반드시 CloudFront 배포를 활용해야 합니다.
솔루션 메트릭 심층 분석
이 섹션에서는 사용 가능한 메트릭과 그 의미에 대해 살펴봅니다. 다음 이미지는 작동 중인 대시보드를 보여줍니다.
[그림 2: 대시보드 메트릭 화면]
대시보드 지표의 이해:
- UHD: UHD는 초고해상도의 약자로, 표준 고화질(HD) 해상도보다 훨씬 높은 비디오 해상도를 의미합니다. UHD의 해상도는 일반적으로 3840×2160픽셀입니다.
- FHD/HD: HD는 고화질의 약자로 표준 화질(SD) 비디오의 해상도보다 훨씬 높은 비디오 해상도를 의미합니다. HD는 일반적으로 1280×720픽셀(720p)의 해상도를 갖습니다. FHD는 1920×1080픽셀(1080p)의 풀 고해상도를 의미하며, 현재 업계에서는 HD가 두 해상도를 모두 지칭하는 용어로 사용되기도 합니다. 따라서 대시보드를 간결하게 유지하기 위해 두 해상도를 함께 그룹화했습니다.
- SD: SD는 표준 해상도를 의미하며 HD 표준보다 낮은 비디오 해상도를 나타냅니다. 일반적으로 480p 이하의 해상도를 의미합니다.
스트림별 세그먼트/매니페스트 전송 지연 시간: 최종사용자에게 전송되는 콘텐츠의 지연 시간 데이터를 제공합니다. 이 지표는 매니페스트 및 세그먼트 파일과 스트림 전송 유형별로도 세분화됩니다. 이 지표는 CloudFront에서 요청이 수신된 시점부터 콘텐츠가 최종사용자에게 다시 전송될 때까지의 총 지연 시간을 보여줍니다.
스트림당 다운로드된 바이트 수: 이 지표는 관리자가 스트리밍되는 콘텐츠가 각 스트림 유형별로 어떻게 분할되는지 이해하는 데 도움이 되도록 설계되었습니다. 또한 해당 지표는 최종사용자 기반의 행동을 이해하는 데 사용할 수 있으며, 여러개의 스트림 유형 중에서 어떤 콘텐츠 품질이 더 많은 수익을 제공하거나 전반적인 전송 품질을 개선하기 위해 더 많은 주의가 필요한지에 대한 입력을 제공할 수도 있습니다.
ASN(자율 시스템 번호)별 지연 시간: 이 지표는 CloudFront에서 콘텐츠를 요청하고 제공하는 데 걸리는 시간을 보여줍니다. 이 지표는 상위 10개 ASN과 해상도별로 분류됩니다. 이 지표를 통해 특정 ASN에 문제가 있는지 식별하여, 스트리밍 전송 내의 지연 문제를 정확히 찾아내는 데 도움이 될 수 있습니다. 이러한 특정 지표는 쿼리를 통해 제공되며, 최근 3시간의 데이터만 표시됩니다.
캐시 적중률 메트릭: 매니페스트 및 세그먼트 파일 전송에 대한 캐시 적중률 지표입니다. 이 지표는 모니터링 팀이 콘텐츠 유형별 캐싱에서 개선할 수 있는 잠재적 사항을 파악하는 데 도움이 되도록 설계되었습니다. 일반적으로 세그먼트들의 높은 캐시 적중률을 확인함으로서 가능한 한 사용자와 가까운 곳에서 콘텐츠가 제공되고 있음을 파악하고자 합니다. 이 수치는 제목에 표시된 대로 각 해상도별 전송에 따라 세분화됩니다.
스트림당 4xx/5xx 오류율: 이 지표는 스트림 유형별로 분류된 오류율을 보여줍니다. 이를 통해 스트림별로 요청에 오류가 발생하는 비율을 이해하는 데 도움을 얻을 수 있습니다. 따라서 오류율이 높아지는 경우 스트림 유형에 따라 문제 해결을 신속하게 수행할 수 있습니다.
배포 단계
이 대시보드를 배포하기 위해 필요한 모든 리소스를 배포하는 CloudFormation 템플릿을 준비했습니다.
1단계: CloudFormation 콘솔로 바로 이동하여 템플릿을 배포합니다.
2단계: 대시보드에 필요한 모든 리소스를 배포하는 CloudFormation 템플릿을 배포합니다. 템플릿을 배포하는 동안 사용자로부터 몇 가지 입력이 필요하며, 이에 대해 다음과 같이 설명합니다:
- CloudFrontRealTimeLogsSamplingRate: 1에서 100 사이의 숫자로, CloudFront에서 서비스 중인 요청이 실시간 로그 파이프라인으로 전송되는 샘플 속도를 정의합니다. 파이프라인을 통과하는 데이터가 많을수록 이 솔루션의 비용이 높아지므로 이를 통해 비용을 제어할 수 있습니다.
- UHDExists, FHDExists 및 HDExists: 이 매개변수에는 미디어 전송 흐름에 Ultra HD, Full HD, HD 스트리밍 부분이 있는지 여부를 표시해야 합니다. 미디어 전송 흐름에 이러한 해상도 중 하나라도 포함되지 않은 경우 이 값을 false로 둡니다.
- FHDStreamIdentifie: 사용자가 요청하는 콘텐츠의 URI 내에 있는 Full HD 해상도 스트림의 고유 식별자입니다.
- HDStreamIdentifier: 앞서 설명한 ‘FHD 스트림 식별자’와 유사하며, HD 스트림의 고유 식별자입니다.
- UHDStreamIdentifier: 앞서 설명한 ‘FHD 스트림 식별자’와 유사하게, Ultra HD 스트림의 고유 식별자입니다.
[그림 3: CloudFormation 매개변수]
3단계: CloudFormation 템플릿이 실행되고 스택의 모든 구성 요소가 배포되면, 다음 단계는 미디어 콘텐츠를 제공하는 CloudFront 배포에 CloudFront 실시간 로그 구성을 첨부하는 것입니다. 이를 위해 다음 하위 단계를 따르세요:
3.A단계: CloudFront 콘솔을 열고 로그 > 실시간 구성 위로 마우스를 가져갑니다.
3.B단계: CFMediaDashboardLogs 구성을 열고 “배포에 연결”을 선택합니다.
3.C단계: 다음 페이지에서 미디어 콘텐츠 제공에 사용되는 적절한 배포 및 동작을 선택합니다. 그런 다음 “연결”을 선택합니다. 다음 이미지와 같이 미디어 자산을 제공하는 모든 동작(매니페스트 및 세그먼트)을 선택해야 합니다.
[그림 4: CloudFront 실시간 로그]
[그림 5: 배포에 대한 실시간 로그 연결]
구성된 배포에서 실행 중인 라이브 트래픽이 있는 경우, 대시보드에 메트릭이 채워지게 되며, CloudWatch 대시보드 콘솔로 이동하여 “CloudFrontVideoAssetDeliveryDashboard”를 열면 대시보드를 열 수 있습니다.
대시보드 사용 및 비용 고려 사항
CloudFront 비디오 자산 전송 대시보드 솔루션은 다양한 시나리오에서 사용할 수 있습니다. 또한 AWS 비용 모델에 따라 이 솔루션은 사용한 만큼 과금되는 종량제 방식입니다. 운영자는 필요와 사용량에 따라 워크플로우에서 언제든지 이 대시보드를 연결하고 분리할 수 있습니다.
이 솔루션과 관련된 가격 책정 기준은 CloudWatch 처리 데이터, 데이터가 Kinesis로 전송되는 속도와 각 레코드의 크기, 생성된 로그 라인 수에 따라 요금이 부과되는 CloudFront 실시간 로그 요청, Lambda 호출 수와 총 지속 시간입니다. 이러한 모든 차원은 CloudFront로 전송되는 요청 속도와 솔루션을 배포할 때 선택한 샘플링 속도의 영향을 받습니다.
로그 구성이 CloudFront 배포에서 분리되는 즉시 로그가 더 이상 채워지지 않고 비용도 중지된다는 점에 유의하세요. 다음 이미지에서 구성이 어떻게 분리되는지 확인할 수 있습니다.
[그림 6: 실시간 로그 분리]
대시보드 정리
인프라를 정리하려면 리소스를 배포한 CloudFormation 스택을 삭제해야 합니다. 그러나 정리가 제대로 작동하려면 먼저 2 가지 단계를 수행해야 합니다.
1- CloudFront 실시간 로그를 CloudFront 배포에서 분리해야 합니다. 이를 위해서는 실시간 로그 구성을 열고 배포에서 분리해야 하며, 이는 콘솔을 통해 수행할 수 있습니다.
2- 다음 단계는 다른 모든 리소스를 생성한 CloudFormation 스택을 제거하는 것입니다. 스택 삭제가 완료되면 모든 리소스가 AWS 계정에서 제거됩니다.
결론
이 포스팅에서는 CloudFront를 통해 스트리밍 콘텐츠를 전송하는 기업이 스트리밍 전송에 대한 가시성을 높이고 OTT 스트리밍 자산의 QoS를 평가할 수 있도록 설계된 새로운 솔루션을 소개했습니다.
이 솔루션의 도입으로 고객은 비디오 전송 구성 요소에 대한 엔드투엔드 인사이트를 확보할 수 있습니다. 기업은 CloudWatch를 사용하여 CloudFront 비디오 자산 전송 대시보드를 활용함으로써 비디오 전송 워크플로우의 성능에 대한 실시간 가시성을 확보할 수 있습니다. 또한 고객은 CMCD 도구를 사용하여 클라이언트 측 원격 측정에 대한 인사이트를 얻을 수 있으며, 이를 통해 기업은 비디오 전송 전략을 되돌아볼 수 있는 완전한 데이터 세트를 제공 받을 수 있게 됩니다. 이러한 비디오 전송 성능 모니터링 및 분석의 엔드투엔드 접근 방식을 통해 기업은 정보에 입각한 의사 결정을 내리고 신속하게 수정 조치를 취할 수 있으며, 일관된 QoS로 고품질 스트리밍 콘텐츠를 보장할 수 있습니다.