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.100

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

  • 特集1
    作って学ぶ人工知能
    自然言語処理,機械学習,深層学習がまるわかり!
  • 特集2
    対応必須! 完全HTTPS化
    移行手順からつまずくポイントまで
  • 特集3
    メルカリ開発ノウハウ大公開
    ぜんぶ見せます! 1日100万出品のフリマアプリの舞台裏
  • 100号記念選書
    TOPエンジニアを支える1冊
    超豪華23名!
  • 100号記念エッセイ
    あのときの自分へ
    もし,過去に戻ってアドバイスできるなら

著者プロフィール

星野将(ほしのまさる)

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

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

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

GitHub:https://github.com/masartz

コメント

コメントの記入