2014 11-20 adtechxscala-meetup

19
アドテクを支えるScala Ad Generationの場合 2014-11-20 アドテク×Scala meetup

Transcript of 2014 11-20 adtechxscala-meetup

Page 1: 2014 11-20 adtechxscala-meetup

アドテクを支えるScala Ad Generationの場合

2014-11-20 アドテク×Scala meetup

Page 2: 2014 11-20 adtechxscala-meetup

自己紹介• 野村 欣弘(のむら よしひろ)

• 株式会社mediba(株式会社ScaleOutに出向中)

• scala歴:1年半ぐらい

• ネット広告業界歴:2年半ぐらい

• 主にAd Generationの開発を担当

Page 3: 2014 11-20 adtechxscala-meetup

アジェンダ• medibaでscalaを採用した理由

• Ad Generationでどのようにscalaが使われているか?

• sprayを使ったrtb-engineについて

• sparkを使ったrtb-engine-logについて

• scalaをつかってみて

Page 4: 2014 11-20 adtechxscala-meetup

scala採用した理由

• githubを見るに、2011年ぐらいから使い始める

• medibaadでは配信サーバでPlay、集計でspark

Page 5: 2014 11-20 adtechxscala-meetup

Ad Generationについて

• ScaleOut Ad Platform上に構築されたSSP • スマートフォン(web/app)に注力 • 来月からScaleOutに譲渡されます • RTB関連の処理をscalaで実装

ScaleOut Ad Platform

ScaleOut DSP

ScaleOut DMP

Ad Generation (SSP)

Page 6: 2014 11-20 adtechxscala-meetup

ScaleOut Ad Platform

どのようにscalaが使われるのか

adserver

RTBサーバ

DSPrtb-enigne

fluentd

集計サーバ

HDFS

mesos

rtb-enigne-log

DSP

DSP

SDK

枠 データ

Page 7: 2014 11-20 adtechxscala-meetup

どのようにscalaが使われてるのか

• rtb-engine

• DSPからの入札をオークションするサーバです。

• rtb-engine-log

• アクセス数、DSP通信、オークション状況(入札、落札)の集計を行います。

Page 8: 2014 11-20 adtechxscala-meetup

rtb-engine• spray1.2.1

• アドサーバと枠データ、オークション結果をやり取りする

• DSPとの入札、応札をやり取りをする

• DSPからのレスポンスをまって、オークションする

• 集計画面(angularJS)用のAPIも

Page 9: 2014 11-20 adtechxscala-meetup

rtb-engine• 現状10台

• 70億オークション/月

• 250億bid リクエスト/月

• 70億 x 3-4DSP

• ピーク時

対アドサーバ : 4,900qps、対DSP : 20,000qps

Page 10: 2014 11-20 adtechxscala-meetup

rtb-engine

ピーク時にさばけない

-> configの見直し

-> コードの見直し

Page 11: 2014 11-20 adtechxscala-meetup

rtb-engine

• configの見直し

• akkaの設定とsprayの設定

• 似たような設定項目が複数ある

• APIレイヤーが細かい

Page 12: 2014 11-20 adtechxscala-meetup

rtb-engine• コードの見直し

• ブロックする箇所をFutureを使うように

• 用途ごとにスレッドプールを割り当てた

Page 13: 2014 11-20 adtechxscala-meetup

rtb-engine-log• spark1.0.0

• mesos上で動かしてる

• 7種類のログを集計

• 10分ごと、1時間ごと、1日ごとに集計

• 入力はHDFS、出力はDB

Page 14: 2014 11-20 adtechxscala-meetup

rtb-engine-log

Page 15: 2014 11-20 adtechxscala-meetup

rtb-engine-log

• 6cpu,20GB/台 x 4台 • master:2台, slave:4台 • 500M - 1.5G x 7 x 10 / hour • 12 - 40s/job

Page 16: 2014 11-20 adtechxscala-meetup

rtb-engine-log• 集計自体よりI/Oがネック(主にDB)

• ほどよいサイズで

• 手軽に試せるし、身構えず書ける

• spark-shellが試しやすい

• コレクションを操作するのと変わらず書ける

Page 17: 2014 11-20 adtechxscala-meetup

scalaを使ってみて•並列処理、並行処理を扱いやすい

• アドサーバやRTBサーバのようなものには向いている

• 用途を選ばない言語

• 何でもそつなくこなせる

• 配信も集計も1つの言語で

• やっぱりJava、JVM知ってた方がいい

Page 18: 2014 11-20 adtechxscala-meetup

今後• チューニング

• この会で勉強しようと思います。

• 売り上げ向上につながる、柔軟に速やかな分析

• spark SQL、chronosとかを調査中

Page 19: 2014 11-20 adtechxscala-meetup

おわり

• 大規模配信を行いたい方 • 大規模データの解析を行いたい方 • 広告システム,ログ解析システムは絶対面白い!と思う方 • Webアプリ開発大好きでデザパタ厨な方 • Pのつく言語に携わるのに少し疲れた方 • 弊社に興味を持たれた方 http://www.scaleout.jp/about/job-opportunities/

ScaleOutでは各種エンジニアを募集中です。