実例に学ぶ動画配信サービスの負荷試験~テストケース作成からツール選定、性能劣化への対応まで

ライブ動画ストリーミングプラットフォーム「SHOWROOM」で実施した負荷試験の内容とはどのようなものだったのでしょうか。DeNAのインフラ基盤を支えるエンジニア漢 祐介さんに、貴重なノウハウを徹底解説してもらいました!

実例に学ぶ動画配信サービスの負荷試験~テストケース作成からツール選定、性能劣化への対応まで

サービスが業務に耐えうる処理性能を持っているかを検証するため、システムに対して擬似的に大量アクセスを発生させて反応を測定する「負荷試験」。サーバーの限界性能を見極め、安定稼働させるための指標や仕組みを作るために、なくてはならないものです。

では、多くの人が知るサービスは、どのような負荷試験を経てリリースされたのでしょうか。すでに運用段階にあるサービスの背後にある負荷試験のノウハウは、これから何らかのサービスをリリースしようとしているエンジニアにとって有用な情報です。

そこで今回は、DeNAのインフラ基盤を支えるエンジニア漢 祐介(はた・ゆうすけ)さんに、ライブ動画ストリーミングプラットフォーム「SHOWROOM」で実施した負荷試験の内容を中心に、そのノウハウを徹底解説してもらいました!

漢 祐介(はた・ゆうすけ)
株式会社ディー・エヌ・エー システム&デザイン本部IT基盤部第一グループ・グループリーダー。都内ベンチャーから「もっと自分の力を試したい」という思いで2012年にDeNAに転職。モバイルゲームの開発・運用を経てIT基盤部に配属、開発からインフラまで幅広い技術を身に付けフルスタックエンジニアを目指す。現在はIT基盤部第1Gのリーダーとして、様々な領域のインフラ業務に携わっている。

(1)テストケース作成の基準

──まず、どのような基準でテストケースを作成しているかについて教えてください。

 負荷試験で求めるべき重要な指標の一つとして「サービスを安定運用するにはサーバーが何台必要か」があります。

それを求めるために、私たちのチームは「サーバーが冗長化されている構成で1台のサーバーがダウンした場合、サービスの負荷が他のサーバーに分散されても、1台あたりの負荷が85%(目安値)を上回らないこと」を指標として負荷試験を実施し、その結果を元にサーバーが何台必要かを求めています。例えば、サーバーが10台あれば1台あたりの負荷が85%を下回るならば、プラス1台(=計11台)用意するという考え方です。

なぜなら、もしも必要な台数ギリギリにしてしまうと、何かのトラブルで1台がダウンした場合に、そのサーバーにかかっていたアクセスが残りのサーバーに流れ、高負荷のために処理できなくなってしまうからです。必ず、冗長化を前提にテストケースを作っていきます。

また、「1台のサーバーがどれだけのDAU*1をさばけるか」も負荷試験をして求めていきます。この指標は、サーバーを増設する際に、何台必要なのかを計算するときに使います。

──冗長化して障害に強くするならば、プラス1台だけではなく2台、3台にした方がより安全なのではないでしょうか?

 私たちのグループでは、「多重障害(同時に複数の障害が発生すること)」を考慮しない方針にしているんです。なぜなら、同時に2つ以上のサーバーが壊れる確率は極めて低いにもかかわらず、むやみに冗長化してしまうとサーバーの維持にかかる人的・金銭的コストが膨れ上がってしまいます。要するに、不必要なコストが多くなってしまうんです。

「サービスの可用性を担保しつつ、運用にかかるコストがなるべく低くなるサーバー台数」を意識して、私たちは運用をしています。

(2)過去事例・SHOWROOMで実施した負荷試験

──「SHOWROOM」のサーバー構築の際には、どういった観点でどんなテストを実施しましたか?

 まず前提として、SHOWROOMでは大きく2種類の動画配信サーバーがあります。映像データが配信されるOriginサーバーと、映像を利用者に届けるEdgeサーバーです。

1

出典:「DeNAの動画配信サービスを支えるインフラの内部」より

2

出典:「DeNAの動画配信サービスを支えるインフラの内部」より

OriginサーバーとEdgeサーバーは数台ごとにShardingされており、Originサーバーから配信された映像データが同一Shard内に配置されたEdgeサーバーを経由するような仕組みになっています。

3

出典:「DeNAの動画配信サービスを支えるインフラの内部」より

これらのサーバーを運用するうえで重要なのは、トラフィックが大量に出ることと、映像に遅延が発生しない・止まらない・途切れないことです。そのため、以下のような観点でテストを実施しました

  • Originサーバー1台あたりどれだけの配信をできるのか
  • Originサーバー複数台あたりどれだけの配信をできるのか
  • Edgeサーバー1台あたりどれだけの配信をできるのか
  • Edgeサーバー複数台あたりどれだけの配信をできるのか
  • Originサーバーには何台のEdgeサーバーをぶら下げることができるのか
  • Originサーバーがダウンしても、即座にOriginサーバーのStandbyに切り替わるか
  • Standbyに切り替わった際に、配信映像を観ることができ、映像に乱れや遅延がないか

映像配信がサービスの根幹であり、配信者と受信者がコミュニケーションを取れることも重要であるため、映像の遅延や映像の乱れ(カクカクするなど)はかなり気を遣ってテストを実施しました。

──他に、テストケースを立てるうえで心掛けたことはありますか?

 実は動画配信サービスは「視聴者がiPhoneで3G回線を用いて視聴する場合」と「それ以外のパソコンやスマートフォンなどで視聴する場合」とで、使用するプロトコルをアプリ側で切り替えているんです。より具体的に言えば、前者の場合はHLS*2が、後者の場合はRTMP*3が用いられます。

そのため、プロトコルの組み合わせを変えてテストを実施しました。HLSだけ、RTMPだけ、両者の混合、プロトコルが途中でRTMPからHLSに切り替わる、などです。

──プロトコルを変更するテストケースは、動画配信系のサービスならではですね。

 そう思います。さらに言えば、プロトコル以外にもビットレートを考慮することも重要です。例えばSHOWROOMの場合、回線が細くなっている方(月あたりの利用可能パケット量を超過しているなど)向けに低ビットレートで動画を配信しているんですが、その際にOriginサーバーで画質を変換する処理を行います。

そのため、画質変換処理の有無によってさばける配信数が違ってきます。こういった点を考慮しながら、SHOWROOMのアーキテクチャ構築の際にはテストケースを考えました。

4

(3)負荷試験に使用するツール

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く