Ad tech 勉強会 20140115
-
Upload
ajiyoshi -
Category
Technology
-
view
2.418 -
download
0
description
Transcript of Ad tech 勉強会 20140115
![Page 1: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/1.jpg)
Erlang & RTB@ajiyoshi
!
2014/01/15
![Page 2: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/2.jpg)
広告
HERE!
![Page 3: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/3.jpg)
RTB
• Real Time Bidding
• ご存知のとおり、広告の価格をリアルタイムのオークションで決める仕組み
![Page 4: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/4.jpg)
広告リクエスト
媒体側 広告 サーバ (SSP)
Browser
![Page 5: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/5.jpg)
Bid リクエスト
媒体側 広告 サーバ (SSP)
Browser広告主側 広告サーバ (DSP)
![Page 6: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/6.jpg)
Browser
10
Bid
20
30
15
媒体側 広告 サーバ (SSP)
広告主側 広告サーバ (DSP)
![Page 7: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/7.jpg)
Browser
10
オークション
20
※generally “second price auction” second highest bid price will be the contract price
15
30
媒体側 広告 サーバ (SSP)
広告主側 広告サーバ (DSP)
![Page 8: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/8.jpg)
Browser
媒体側 広告 サーバ (SSP)
10
広告主側 広告サーバ (DSP)
勝者の広告を表示
20
15
30
![Page 9: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/9.jpg)
問題
• これを作るとして、どう設計するか
![Page 10: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/10.jpg)
cf. DSP
• http://d.hatena.ne.jp/yamaz/20111026
• RTB用のADサーバこそ最強である必要がある件
![Page 11: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/11.jpg)
cf. DSP
• 全SSP分のbidリクエストを受けきるパワーが必要
• 普通のadサーバとして非常に強力である必要がある
![Page 12: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/12.jpg)
SSP
• 100億RTB imp x DSP10社 → 1000億bid
• 外部ネットワークアクセス • ラック内ではない • 同じL2にぶら下がるわけでもない
• 普通のadサーバならやりたくない
![Page 13: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/13.jpg)
要件• 堅牢であること • 高速であること • < 100msec (可能なら)
• ネットワークIOでブロックしないこと
• 適切なタイムアウト処理(超重要)
![Page 14: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/14.jpg)
Erlangで作りました
• 堅牢、安定 • 軽量プロセス • 非同期プログラムを簡潔に記述可能
![Page 15: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/15.jpg)
性能&実績• 2011年10月リリース
• 2014年1月現在
• ピーク時 30,000 bid/秒
• 15億 bid/日
• 0.9億 rtb imp/日 27億 rtb imp/月
![Page 16: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/16.jpg)
Browser
媒体側 広告 サーバ (SSP)
10
広告主側 広告サーバ (DSP)
勝者の広告を表示
20
15
30
![Page 17: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/17.jpg)
bid数
![Page 18: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/18.jpg)
Erlang
• 関数型言語 • とされているが再代入がないだけ
• 軽量プロセス • 思いのほか実用志向言語
![Page 19: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/19.jpg)
実用?
![Page 20: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/20.jpg)
プロトから製品へ• どのライブラリを使う? • 全部自分で書くわけにはいかない • 依存関係はどうする?
• ステージングはどうする? • それぞれの設定
• リリース(デプロイ)はどうする?
![Page 21: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/21.jpg)
例:依存関係• 2世代前:CPANとかgemでシステムにインストール
• 1世代前:pyenvとかrbenvとかperlbrewで個別の環境を構築
• 現在:pip Bundler Cartonなどでアプリケーションと同梱
• 現在’:仮想環境と自動化
![Page 22: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/22.jpg)
例:Webアプリケーション
• フレームワークの設定 • ポート、ホスト名、ルーティング等
• アプリケーション固有の設定 • DB関連とか色々
• ロギングなど周辺設定 • 出力先、ローテーション、fluentd の設定等
![Page 23: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/23.jpg)
Erlang
• 全部OTPアプリケーション
• 起動方法、設定方法などが共通化、抽象化されている
• 依存関係をアプリケーションに記述する • 依存関係の初期化や起動は標準で面倒みてくれる
![Page 24: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/24.jpg)
Erlangの難点• 日本語ドキュメントが少ない
• @voluntasさんの記事
• @ymotongpoo さんの翻訳
• 本(飛行機、オライリー、@ymotongpoo ← New!)
• 公式ドキュメントは豊富だが • rebarを多用するのに、rebarのドキュメントは事実上ソースコードのみ
![Page 25: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/25.jpg)
ライブラリとか• ロギング
• lager
• HTTPD
• yaws → cowboy
• 内部シリアライズフォーマット • msgpack-erlang
• 外部(DSP側)シリアライズフォーマット
• msgpack、JSON、protobuf
![Page 26: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/26.jpg)
テストとか
• EUnit
• CommonTest proper 使ってる人も
• meckというモックツールも
• 遅いので私は嫌い
![Page 27: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/27.jpg)
Erlang VMとか• R14B04
• 2011年10月~
• R15B
• 2012年3月~
• R16B
• 2013年6月~
• そのうちに R16B01に上げる予定
![Page 28: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/28.jpg)
VMパラメタ
• sbwt none
• 実験的パラメタ • ものすごい効いた
• kernel epoll true
• あとは普通
![Page 29: Ad tech 勉強会 20140115](https://reader034.fdocuments.net/reader034/viewer/2022050808/54828146b4af9f8c0d8b4812/html5/thumbnails/29.jpg)
まとめ• Erlangは実用的
• 広告業界はハードコアな技術が求められるので腕に覚えのあるお前らにおすすめ
• 安定性、負荷、ネットワーク、ハードウェア、統計、解析、ビジネスの総合力
• ご質問があればどうぞ