SlideShare a Scribd company logo
Erlang & RTB
@ajiyoshi	

!

2014/01/15
広告

HERE!
RTB
• Real Time Bidding	

• ご存知のとおり、広告の価格をリアル
タイムのオークションで決める仕組み
広告リクエスト

Browser

媒体側	

広告	

サーバ	

(SSP)
Bid リクエスト

Browser

媒体側	

広告	

サーバ	

(SSP)

広告主側	

広告サーバ	

(DSP)
Bid
10

Browser

媒体側	

広告	

サーバ	

(SSP)

20
30

広告主側	

広告サーバ	

(DSP)

15
オークション
10

Browser

媒体側	

広告	

サーバ	

(SSP)

20
30
15

広告主側	

広告サーバ	

(DSP)

※generally “second price auction”	

second highest bid price will be the contract price
勝者の広告を表示
10

Browser

媒体側	

広告	

サーバ	

(SSP)

20
30
15

広告主側	

広告サーバ	

(DSP)
問題

• これを作るとして、どう設計するか
cf. DSP
• http://d.hatena.ne.jp/yamaz/20111026	

• RTB用のADサーバこそ最強である必
要がある件
cf. DSP
• 全SSP分のbidリクエストを受けきるパ
ワーが必要	


• 普通のadサーバとして非常に強力であ
る必要がある
SSP
• 100億RTB imp x DSP10社 → 1000億bid	

• 外部ネットワークアクセス	

• ラック内ではない	

• 同じL2にぶら下がるわけでもない	

• 普通のadサーバならやりたくない
要件
• 堅牢であること	

• 高速であること	

• < 100msec (可能なら)	

• ネットワークIOでブロックしないこと	

• 適切なタイムアウト処理(超重要)
Erlangで作りました
• 堅牢、安定	

• 軽量プロセス	

• 非同期プログラムを簡潔に記述可能
性能&実績
• 2011年10月リリース	

• 2014年1月現在	

• ピーク時 30,000 bid/秒	

• 15億 bid/日	

• 0.9億 rtb imp/日 27億 rtb imp/月
勝者の広告を表示
10

Browser

媒体側	

広告	

サーバ	

(SSP)

20
30
15

広告主側	

広告サーバ	

(DSP)
bid数
Erlang
• 関数型言語	

• とされているが再代入がないだけ	

• 軽量プロセス	

• 思いのほか実用志向言語
実用?
プロトから製品へ
• どのライブラリを使う?	

• 全部自分で書くわけにはいかない	

• 依存関係はどうする?	

• ステージングはどうする?	

• それぞれの設定	

• リリース(デプロイ)はどうする?
例:依存関係
• 2世代前:CPANとかgemでシステムにインス
トール	


• 1世代前:pyenvとかrbenvとかperlbrewで個別の
環境を構築	


• 現在:pip Bundler Cartonなどでアプリケーショ
ンと同梱	


• 現在’:仮想環境と自動化
例:Webアプリケーショ
ン

• フレームワークの設定	

• ポート、ホスト名、ルーティング等	

• アプリケーション固有の設定	

• DB関連とか色々	

• ロギングなど周辺設定	

• 出力先、ローテーション、fluentd の設定等
Erlang
• 全部OTPアプリケーション	

• 起動方法、設定方法などが共通化、抽象
化されている	


• 依存関係をアプリケーションに記述する	

• 依存関係の初期化や起動は標準で面倒み
てくれる
Erlangの難点
• 日本語ドキュメントが少ない	

• @voluntasさんの記事	

• @ymotongpoo さんの翻訳	

• 本(飛行機、オライリー、@ymotongpoo ← New!)	

• 公式ドキュメントは豊富だが	

• rebarを多用するのに、rebarのドキュメントは事実
上ソースコードのみ
ライブラリとか
• ロギング	

• lager	

• HTTPD	

• yaws → cowboy	

• 内部シリアライズフォーマット	

• msgpack-erlang	

• 外部(DSP側)シリアライズフォーマット	

• msgpack、JSON、protobuf
テストとか
• EUnit	

• CommonTest proper 使ってる人も	

• meckというモックツールも	

• 遅いので私は嫌い
Erlang VMとか
• R14B04	

• 2011年10月∼	

• R15B	

• 2012年3月∼	

• R16B	

• 2013年6月∼	

• そのうちに R16B01に上げる予定
VMパラメタ
• sbwt none	

• 実験的パラメタ	

• ものすごい効いた	

• kernel epoll true	

• あとは普通
まとめ
• Erlangは実用的	

• 広告業界はハードコアな技術が求められ
るので腕に覚えのあるお前らにおすすめ	


• 安定性、負荷、ネットワーク、ハード
ウェア、統計、解析、ビジネスの総合力	


• ご質問があればどうぞ

More Related Content

Ad tech 勉強会 20140115