Amazon Web Services ブログ

Amazon CloudFront を使用した OTT ストリーミングのQoS 可観測性

OTT の世界における QoS とその重要性について

今日のデジタル時代において、高速インターネットの普及とストリーミング・デバイスの多様化により、OTT(Over-the-Top)コンテンツは日常生活に欠かせないものとなっています。しかし、OTT コンテンツのサービス品質(QoS)を確保するための選択肢が豊富なため、コンテンツ・プロバイダーと消費者の双方にとって重要な課題となっています。国際電気通信連合(ITU)は、ネットワーク管理と保証に重点を置く QoS と、主観的なユーザー満足度を評価する QoE(Quality of Experience)を区別しています。優れた品質体験を実現するには、ネットワーク・パフォーマンスだけでなく、より広範な要素を考慮する必要があります。QoS と QoE を効果的に管理するために、事業者は、QoE についてはリバッファリングやビデオ再生の失敗、QoS については HTTP エラーコード、待ち時間、キャッシュヒットレートなど、業界レベルの主要なメトリクスを監視する必要があります。この継続的な取り組みは、Amazon CloudFront を中心に、OTT 配信の可観測性を改善し、QoS の側面を強化することを目的としています。

以前の投稿では、CMCD のソリューションによる QoE の可視性の向上について説明しました。お客様への可観測性を向上させる取り組みを継続し、この投稿では CloudFront を使用した OTT 配信の QoS 側面について深く掘り下げます。

この投稿について

この投稿では、大規模イベントや 24 時間 365 日のリニアストリームにおけるアセット配信の可観測性を向上させるリアルタイムダッシュボードの導入について説明します。CloudFront のリアルタイム・ロギング機能を使用して、このソリューションは配信パフォーマンス指標をほぼリアルタイムで可視化します。これを利用して、動画配信コンポーネントのさまざまな側面への可観測性を拡大することができます。

CloudFront 動画アセット配信ダッシュボードは、ストリーミング解像度と動画アセットに関連するメトリクスを取得します。このダッシュボードは、最も一般的に使用される動画解像度を考慮に入れています。各解像度のデータを分析することで、ダッシュボードは、パフォーマンスの傾向を特定し、視聴者のアセット配信の全体的な品質を向上させることができるデータ駆動型の意思決定を行うのに役立ちます。この情報により、お客様はストリーミング・インフラを最適化し、視聴者に最高の視聴体験を提供することができます。

また、これらのメトリクスをさらにマニフェストとセグメントに分割し、ワークフローに組み込まれたロジックが 2 つの一般的なビデオ・フォーマットである HLS と MPEG-DASH を考慮しています。

アーキテクチャー

この画像に示すように、CloudFront 動画アセット配信ダッシュボードを構築するために必要なメトリクスを配信するために、以下のアーキテクチャーが使用されます:

図 1:ソリューション全体のアーキテクチャ

図 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 Logs/メトリクス: より費用対効果を高めるために、このフローは CloudWatch Embedded Metric Format (EMF) を使ってメトリクスを公開します。EMF を使用することで、PutMetric API コールの実行を避けることができるため、節約になります。メトリクスが送信されるログ・グループは、最大 30 日間データを保持する必要があります。

5- メディア用 CloudWatch ダッシュボード: メディア配信を監視するメディア配信管理者と運用チームは、ここでメディアアセット配信のメトリクスを分析およびレビューできます。

前提条件

以下の前提条件が必要となります。

  1. このソリューションを使用するユーザーは、各アセットタイプ(HD/UHD/nonHD)ごとに一意の識別子を URL に統合する必要があります。ほとんどの場合、顧客はビデオ資産の解像度に基づいたファイル構造を作成します。さらに、HTTP URL にも同じ構造を適用します。たとえば、超高解像度(UHD)コンテンツをストリーミングする場合、URL の一部として「 soccer_match_uhd 」のような一意の識別子や「 3840×2160 」のような解像度そのものを使用することができます。このソリューションは URL パーサーに基づいており、Query String 内の識別子はこのソリューションでは機能しないことに注意してください。
  2. このソリューションは、お客様の既存の動画ワークフローとシームレスに統合できるように設計されています。ユーザーは、動画ワークフローの一環として、CloudFront ディストリビューションを利用してアセットを配信する必要があります。

ソリューション・メトリクスの深掘り

このセクションでは、利用可能なメトリクスとその意味について説明します。以下の画像は、ダッシュボードの動作イメージです。

図 2:ダッシュボードのメトリクスビュー

図 2:ダッシュボードのメトリクスビュー

用語の理解:

  1. UHD: UHD は Ultra-High Definition の略で、標準的な高解像度(HD)よりも大幅に高いビデオ解像度を指す。UHD の解像度は通常 3840×2160 ピクセルです。
  2. FHD/HD:HD は High Definition の略で、標準画質(SD)ビデオの解像度よりも大幅に高いビデオ解像度を指す。HD の解像度は通常 1280×720 ピクセル(720p)。FHD はフルハイビジョンの 1920×1080 ピクセル(1080p)を指し、現在の業界では、HD は両方の解像度を指すために使用されることがあります。そのため、ダッシュボードを簡潔にするために、これらの解像度をひとまとめにしました。
  3. SD: SD は Standard Definition の略で、HD 規格よりも低いビデオ解像度を指します。一般的には 480p 以下の解像度を指します。

Segment/manifest delivery latency by Stream: 視聴者に配信されるコンテンツの待ち時間データを提供します。このメトリックは、マニフェストおよびセグメントファイル別、ストリーム配信タイプ別に分類されます。こちらは、CloudFront がリクエストを受信してからコンテンツが視聴者に送り返されるまでのレイテンシの合計を示しています。

BytesDownloaded per Stream: ストリーミングされているコンテンツが各ストリームのタイプ間でどのように分割されているかを管理者が理解するためのものです。そして、視聴者ベースの行動を理解するために使用することができます。また、異なる利用ベース間で全体的な配信品質を向上させるために、より多くの収益を提供するコンテンツ品質や、より多くの注意が必要なコンテンツ品質に関するインプットを提供します。

Latency by Autonomous System Number (ASN): この指標は、コンテンツがリクエストされ、CloudFront によって提供されるまでの時間を示しています。トップ 10 の ASN と解像度別に分類されています。このメトリクスは、特定の ASN に問題があるかどうかを特定するのに役立ち、ストリーミング配信内の待ち時間の問題を特定するのに役立ちます。これらの特定のメトリクスは、クエリを通じて提供され、過去 3 時間のデータのみが表示されます。

Cache Hit Ratio metrics: マニフェストおよびセグメント・ファイルの配信に関するキャッシュ・ヒット率メトリクスです。これらは、監視チームがこれらのタイプのコンテンツのキャッシュについて改善の可能性を発見するのに役立つように設計されています。通常、コンテンツが可能な限りユーザーに近いところから配信されていることを確認するため、より高いキャッシュヒット率でセグメントを確認したいと考えます。これは、各解像度の配信ごとに分類されています。

4xx/5xx Error Rates per Stream: ストリームタイプ別に分類されたエラーレートを示します。これは、ストリームごとのリクエストのエラー発生率を把握するのに役立ちます。レートが上昇した場合、ストリーム・タイプに基づいてトラブルシューティングを迅速に行うことができます。

デプロイ手順

このダッシュボードをデプロイするために、必要なリソースをすべてデプロイする CloudFormation テンプレートが用意されています。

ステップ1: CloudFormation コンソールにアクセスしてテンプレートをデプロイします。

ステップ2:このCloudFormation テンプレートは、ダッシュボードに必要なすべてのリソースをデプロイします。テンプレートをデプロイする際、いくつかの入力が必要になります:

  1. CloudFrontRealTimeLogsSamplingRate: CloudFront が提供するリクエストがリアルタイムログパイプラインに送られるサンプルレートを定義します。パイプラインを流れるデータが多いほど、このソリューションのコストが高くなるため、これによりコストを制御できます。
  2. UHDExists, FHDExists, HDExists: これらのパラメータでは、このメディア配信フローに Ultra HD、Full HD、およびHD ストリーミングがあるかどうかを指定します。これらの解像度がメディア配信フローに含まれていない場合は、falseのままにします。
  3. FHDStreamIdentifier: これは、ユーザーが要求しているコンテンツの URI 内のFHD 解像度ストリームの一意の識別子です。
  4. HDStreamIdentifier: 前述の「FHDStreamIdentifier」と同様、HD ストリームの一意な識別子です。
  5. UHDStreamIdentifier: 前述の「FHDStreamIdentifier」と同様、Ultra HD ストリームの一意な識別子です。

図 3:CloudFormation のパラメーター

ステップ 3. CloudFormation テンプレートが実行され、スタックの全コンポーネントがデプロイされたら、次のステップはCloudFront  リアルタイムログ設定をメディアコンテンツを提供する CloudFront ディストリビューションにアタッチすることです。これを行うには、以下のサブステップに従います:

ステップ3.A. CloudFront コンソールを開き、ログ > リアルタイム設定を選択します。

ステップ3.B. CFMediaDashboardLogs 設定を開き、“ディストリビューションにアタッチ”を選択します。

ステップ3.C. 次のページで、メディアコンテンツの配信に使用するディストリビューションとキャッシュビヘイビアを選択します。次に  “Attach” を選択します。次の画像のように、メディアアセット(マニフェストとセグメント)を提供するすべてのビヘイビアを選択してください。

図 4:CloudFront のリアルタイムログ

図 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 で高品質のストリーミングコンテンツを確実に提供することができます。

本記事は、「QoS Observability for OTT Streaming using Amazon CloudFront」と題された記事の翻訳となります。
翻訳は Solutions Architect の長谷川 純也が担当しました。