総視聴数7400万でも障害ゼロ、AbemaTVが72時間のライブ配信に成功した理由テラbps級のトラフィックに挑んだ「72時間ホンネテレビ」の裏側(2/3 ページ)

» 2018年12月05日 05時00分 公開
[石川俊明@IT]

年末年始特別配信に向けてプロジェクトが始動したが……

 調査や検討を進め、2017年9月11日に年末年始特別配信アクセス負荷対策プロジェクトが始動した。しかし、プロジェクト始動から13日後の2017年9月24日、「72時間ホンネテレビ」が11月に放映されるという情報が告知された。

サイバーエージェント 技術本部 インフラエンジニア 柿島大貴氏 サイバーエージェント 技術本部 インフラエンジニア 柿島大貴氏

 「人気タレントが出演する番組のため、急激なアクセス増大が予想された。年末年始の特別配信以前に、11月放送の72時間ホンネテレビに向けて対策を急ぐ必要があると、その時になって初めて分かった」

 年末年始に向けて立てた予定を2カ月前倒しで進めるため、当初15人だった対策プロジェクトは、2017年に入社した新人を含め、技術本部全員が取り組む体制とした。

 採った対策は「CDNの利用強化」「リクエスト数の調整」「連携システムの切り離し」の3つだ。

CDNや別システムにアクセス(リクエスト)を分散させようとした CDNや別システムへアクセス(リクエスト)を分散させようとした

 まず、多数のアクセスによりGCPのサーバが落ちることを防ぐため、CDNの利用を強化。具体的には、番組の動画データであるセグメントファイルに加えて、動画データの保存場所や再生時間、再生順序を記述したプレイリストを「Akamai CDN」経由で配信。さらに、Webサイトで提供する番組表や、APIの一部を「Google Cloud

CDN」経由で配信。他の機能でもCDNを活用することでAbemaTV本体システムへのアクセスを分散させた。

 続いて、視聴者から発生するリクエストを減らそうと取り組んだ。例えば、番組画面に表示されるコメント数や視聴者数は、クライアントが定期的にリクエストを送信してサーバから値を取得し、更新していたが、「『27K』(2万7000〜2万7999)といった数値表示のように多くの視聴数やコメント数があって細かい数値を省略して表示している場合、1000以下の値の変化があっても表示は変わらない」と考え、リクエストを送信する頻度を少なくした。

 視聴中に発生するリクエストを調査した段階で、Android版AbemaTVアプリがGCPに対して0.2秒間隔でリクエストを送信していたことも明らかになっていた。アプリに利用していたGoogleの動画アプリ用ライブラリ「ExoPlayer」に不具合があることを突き止め、GitHubでPull Requestを送り不具合を修正し、リクエスト数削減に努めた。

 さらに、AbemaTV本体のシステムと連携システムを切り離した。例えばアクセス数などを測るトラッキングシステムは、AbemaTV本体のシステムを経由させず、直接リクエストを受け取るようにした。

 だが、こうした対策が間に合わない関連機能や連携システムもあった。それらがダウンしても配信を届けられるよう、例外処理を見直したり、機能を追加したり、さらには「配信当日は一部機能を使わない」よう、番組制作部門に依頼したりもした。

 「放送1カ月前の2017年10月は、何らかのテストやリリースが毎日行われている状態だった。iOSやAndroidなどのアプリは、ユーザー側がアップデートしないと『リクエスト数削減の対策効果を得られない』という問題があったが、強制アップデートの仕組みを用意していたため、AndroidやiOS版のAbemaTVアプリは放送2日前に、Amazon Fire TVやAndroid TVは放送1日前に強制的にアップデートすることで、対策を反映できた」

2017年10月はテストやリリースを繰り返した配信2日前にプレイリストへの秒間リクエスト数が目指していた状態になった 2017年10月はテストやリリースを繰り返し(左)、配信2日前にプレイリストへの秒間リクエスト数が目指していた状態になった(右)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。