Perl Hackers Hub

第42回 大規模広告配信でのCPANモジュールの活用(1)

この記事を読むのに必要な時間:およそ 1 分

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは星野将さんで,テーマは「大規模広告配信でのCPANモジュールの活用」です。

本稿のサンプルコードは,本誌サポートサイトから入手できます。

大規模広告配信の運用

多くのWebサービスは,24時間365日それを提供しながら発展,拡大させていくことを目標に運営されていることでしょう。そのためにエンジニアに課せられる課題は,⁠増加するリクエストをすばやくさばきつつ,安定して運用させるためにどうするか」になります。

コンシューマー向けサービスは,多くの顧客にすばやくサービスを提供するという目標を持っています。それらのサービスに広告を配信する配信業者も同じ目標を持っており,広告配信をサービス提供のボトルネックにさせない取り組みをしています。広告配信は単体ではサービスとして成り立たず,広告を表示するメディアがあるからこそであり,メディアとそのエンドユーザーのためにも配信の質と速度を重視します。

今回は,筆者が所属する広告配信サービスfluctを事例として,CPANモジュールの選択方法と,大規模システムでの運用事例について解説します。

広告配信のしくみ

近年の広告配信にはさまざまなプレーヤーが存在しますが,以降を読み進めるために必要なプレーヤーは以下です。

Webメディア
広告枠を提供する
SSPSupply Side Platform
Webメディアに広告配信を行う。Webメディアの収益の最大化を目的とする(fluctはこのポジション)
DSPDemand Side Platform
広告枠の買い付けを行う。広告主の広告効果の最大化を目的とする
広告主
広告出稿を行う

この4者が図1のようにやりとりを行います。SSPとDSP間で交わされるのがRTBReal Time Biddingと呼ばれる競争入札(オークション)です。1つのSSPが複数のDSPに対してリクエストを投げ,レスポンスを受け取った中から最も高い金額のDSPを選択します。選択したDSPから広告情報を受け取り,それがWebメディアに表示されます。

図1 広告配信のしくみ

図1 広告配信のしくみ

このやりとりを行うにあたって,WebメディアのWebサイト内にJavaScriptタグを設置しておきます。サイト閲覧時にJavaScriptタグから広告配信サーバにリクエストが投げられ,広告を表示するためのJavaScriptタグがレスポンスとして返されます。

なお,広告が表示された回数をインプレッション数(imp数)と呼びます。

広告配信サーバ

図1で「広告配信サーバ」としていたものは,内部では次の3つのプロセスで成り立っています図2)⁠

図2 広告配信サーバ

図2 広告配信サーバ

フロント
JavaScriptからのリクエストを受け付けるエンドポイントとなるPHPプロセス
アドサーバ
フロントからリクエストを受け,案件情報の取得や次のRTBへのリレーを行うPerlプロセス
RTB
アドサーバからのリクエストを受け,DSPとRTB取り引きを行うErlangプロセス

2016年6月時点で,上記のアーキテクチャによって,fluct全体で月間330億のインプレッション数をさばいています。単純平均で秒間1万リクエスト以上となり,ピーク時には秒間2.5万程度のリクエストがあります。

もちろん330億というインプレッション数は最初からではなく,年々積み上がってきたものです。このインプレッション数の増加に対して,ハードウェアや環境まで含めてさまざまな取り組みを行ってきました。以降ではその中でもソフトウェア面,特に広告配信サーバの中心となるアドサーバにおけるPerlの活用を解説します。

<続きの(2)こちら。>

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.98

2017年4月22日発売
B5判/152ページ
定価(本体1,480円+税)
ISBN978-4-7741-8920-8

  • 特集1
    [調べ方から身につける]Web開発 基礎の基礎
    開発環境の整備,フレームワークで開発,エラーに対処
  • 特集2
    これからはじめるDocker
    最新インフラ構築の一部始終を体験!
  • 特集3
    AWSコスト削減
    半額だって夢じゃない!
  • 一般記事
    良いPHPコードを保つ技術
    規約と指針を整備し,静的解析ツールを活かす
  • 一般記事
    技術系カンファレンスに行こう!
    参加する方法,発表者になる方法

著者プロフィール

星野将(ほしのまさる)

1982年東京都生まれ。Perl育ち。

株式会社ミクシィではSNS「mixi」の開発において,株式会社VOYAGE GROUPでは子会社の株式会社fluctが提供するSSP「fluct」にて,主に「開発のための開発」業務を担当してきた。

開発の無駄をなくし,開発効率を上げられるエンジニアを目指している。

GitHub:https://github.com/masartz

コメント

コメントの記入