Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ad tech 勉強会 20140115

3,678 views

Published on

2014/01/15
ramake of pyfes 201307 slide

Published in: Technology
  • Be the first to comment

Ad tech 勉強会 20140115

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

×