adtech scala meetup 7 spray-can

16
AdTech Scala Meetup 第7回 「外部接続用コードをspray- canで書いている話」 2016/02/05 CA ProFit-X Shuya Tsukamoto 1

Upload: shuya-tsukamoto

Post on 16-Apr-2017

910 views

Category:

Internet


1 download

TRANSCRIPT

AdTech Scala Meetup 第7回 「外部接続用コードをspray-canで書いている話」

2016/02/05 CA ProFit-X Shuya Tsukamoto

1

CA ProFit-X• コーポレートサイトあるよ

• https://caprofitx.jp/

複数の接続先

複数の接続先• RTBデマンド (Smalgo, Dynalyst, FreakOut, etc) OpenRTB

• Ad Network (e.g. AMoAd, Logly, TapOne, etc)独自仕様API

デマンドのAPIだけじゃない• 「バッチ処理の結果をSlackや、営業用ChatWorkのRoomにも送りたいよね😃」

複数の接続先• RTBデマンド (Smalgo, Dynalyst, FreakOut, etc) OpenRTB

• Ad Network (e.g. AMoAd, Logly, TapOne, etc)独自仕様API

• Slack, ChatWork独自仕様API

spray-canで HTTP GET, POSTする コードを書いています

Slack, ChatWork• SlackやChatWorkのScalaライブラリもあるけれど・・ • https://github.com/cimadai/chatwork-scala • https://github.com/gilbertw1/slack-scala-client

• https://github.com/flyberry-capital/scala-slack

• spray-canで書こう!

余談:Slackに送っている例• 各デマンドのレポート取り込み状況チェック

デマンドAで障害発生中? 取り込みプログラムで障害発生中?

余談:ChatWorkに送っている例• 売り上げの異常検知

広告枠Aと広告枠Bで売上が極端に低下 デマンド側の入札額低下? ProFitXサーバ配信障害?

spray-can(client)• http://spray.io/documentation/1.2.2/spray-can/

• http://spray.io/documentation/1.2.2/spray-can/http-client/

デマンドのAPIだけじゃない• SlackClient

• ChatWorkClient

• という感じのクラスを作成

試してみよう!• https://github.com/tsukaby/spray-can-client-example

• git cloneしてREADME.mdに従ってrunMain

試してみよう!• https://github.com/tsukaby/spray-can-client-example

• git cloneしてREADME.mdに従ってrunMain

使った感想👍• 公式ドキュメント豊富😀

• 可読性高い😀

• Intellijなどで補完が使えれば、ある程度はドキュメント無しでも書ける😀

• いじれるconfigが多い😀

使った感想👎• spray-canコード難解、使うだけなら簡単だが・・・🤔

• Akka Actorに依存していて重量、面倒🤔IOなどのリソース効率は良さそうだけども・・・

• HostConnectorが突然エラーになる問題に苦戦(2015/5 - 2015/8) • 原因不明😱 (DNS lookupだとかTCP connectionだとか色々調査) • 接続先デマンドの問題であった可能性もあるけど。 • 全員で合計100時間以上浪費した😱 (障害対応・開発) • 同僚Aがconfigを調整😂 • 同僚MがActorのSuprevisorStrategyを調整😂

まとめ• spray-canを使って外部接続まわりを作成

• 今は割と安定しているし、そこそこオススメ

• SlackやChatWorkもPOSTするだけなのでspray-canで書いてもそれほど不便じゃ無いよ