低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方

低レイテンシとは、広告配信の世界でユーザービリティ / 収益に直結する要素であることから、重要視されています。では、SSPの現場で実際に用いられるシステムはどのような構成になっているのでしょうか。fluct社の鈴木健太さんに、低レイテンシ、そして安定して稼働するシステムの基本を聞きました。

低レイテンシと安定性を生むアーキテクチャ - SSPの現場に学ぶ、高可用性のつくり方

レイテンシ(latency)とは、リクエストに対して応答を返すまでの時間のことです。レイテンシをできるだけ小さくすることは、ユーザーへのレスポンスを速める上で重要であり、Web・ネイティブアプリを問わず、ユーザーに対するスピーディなページ閲覧を実現するために不可欠な要素です。

低レイテンシが求められるシステムは多々ありますが、中でも広告配信は、低レイテンシが重要な指標とされる分野です。長年、広告事業を手がけ、さまざまな講演活動もされている株式会社fluctの鈴木健太(すずき・けんた/ 1@suzu_vさんに、広告配信システムの“いま”と低レイテンシを実現するための技術について聞きました。

2
鈴木健太さん
株式会社fluct 開発本部 本部長。大学院時代に旅のソーシャルWeb「trippiece」を開発し2012年、株式会社VOYAGE GROUPに入社。広告配信などを手がけ、2018年より現職。「次世代Webカンファレンス」のADをテーマとしたセッションでオーナーを務めるなど、Web技術に関する発表活動も精力的に行う。アウトプットの内容は自身のサイトに詳しい。

200msを目安にレスポンスを返す、低レスポンス設計

──最初に、fluct社が『広告配信』という枠組みの中で、どのような役割を担っているのか教えていただけませんか?

鈴木 一口に広告配信といっても、広告を出稿する広告主と掲載する媒体側の二者だけでなく、DSP、アドネットワークなどさまざまなプレイヤーがいます。この中で弊社は、SSP(Supply Side Platform)といって、Webサイトやネイティブアプリなどの媒体に最適な広告を自動で配信し、広告収益を最大化するためのサービスを提供しています。

──どのような仕組みで広告を配信しているのですか?

鈴木 広告を載せる媒体ページには、媒体を識別するIDを含んだJavaScriptが埋め込まれています。広告を表示するときは、このJavaScriptが、僕らSSPのサーバーに対して、アドリクエストと呼ばれるリクエストを送信します。サーバーはリクエストを受け取ったら、どのような広告を表示するのかを決定し、レスポンスとして返す──というのが基本的な流れです。

僕らのようなSSP事業者は、広告そのものは持っていません。広告はDSP(Demand Side Platform)やアドネットワークと呼ばれる広告配信事業者からもらってきて配信します。つまり、僕らのサーバーからDSPやアドネットワークにリクエストを送信して、媒体に載せる広告を決定します。

──載せる広告はどのようにして選んでいるんですか?

鈴木 複数のDSPに並列に問い合わせをして広告料金が高いものを返します。Webページにアクセスされて、表示されるまでのわずかな時間にオークションをするわけです。これが、「RTB(Real Time Bidding)」と呼ばれる仕組みです。

オークションの結果、勝者が決まらないこともあります。その場合は、アドネットワークの広告を出します。アドネットワークもないときは、純広告と呼ばれるフィラー広告が出ます。フィラー広告はCDNとして構成されています。

このように広告を配信する仕組みは多段になっていて、なんとしてでも広告を返すようになっています。

3

──広告は、クライアントサイドで生成されるのですか?

鈴木 そうです。サーバーから返すのは、どのような画像や動画、もしくはテキストを出すのかという情報だけで、画像や動画自体はレスポンスに含まれません。われわれは広告の動画や画像といった素材をそもそも持っていないので、それらの素材は、DSPやアドネットワークから取ってきます。

それをクライアント側のJavaScriptで、レクタングルや動画、インフィードなど、媒体に適した形の広告に生成しているんです。そしてその中に計測用のビーコンを入れ、広告がどれだけ表示されたのかを計測しています。

ときどき、インターネットを巡っていると、ページが表示されなかったり、白くなったりする現象に遭遇することがあるかもしれませんが、これは広告出力がうまくいかなかったり遅れたりするのが理由のひとつです。

──広告の遅れが、ページが正常に表示されない理由になるというのは、なかなかシビアですね。具体的に広告が表示されるまでに想定する秒数などの目標値はあるのでしょうか?

鈴木 「広告を表示するまで」については、具体的な目標値は設けていません。Wi-FiやLTEなどクライアントの回線環境に左右されてしまうからです。また媒体によっても仕様が変わってくるので、統一的な数値を作るのが難しいのです。

そこで代わりに、「リクエストをもらってから、レスポンスで何らかの広告を返すまでの時間」を目安として考えています。環境によっても変わるのですが、中央値として、おおむね200msです。時には1秒になることもありますが、3秒は、ちょっと長すぎるという感覚です。

オンプレミスとAWSを組み合わせてコストとスケールのバランスを保つ

4

──200msのレイテンシでどれくらいのリクエストを裁いているのかも気になるところです。

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