by shigemk2

当面は技術的なことしか書かない

Dynalystが広告配信で使っている技術(Spray×Akka×Kamon×Zabbix) #adtech_scala

Dynalystの立ち上げと、Scalaをゴニョゴニョ

AMoAd DSP など

Dynalyst

ダイナミックリターゲティング

ユーザーの趣味嗜好に適した広告配信を行う国内初のスマートフォンに特化したダイナミックリターゲティング広告

Scala Usage

Scalaが9割がた

  • Spray
  • Akka
  • Monitor

SprayやAkkaを知らない人も、公式ドキュメントやサンプルコードが豊富なので、そのあたりを参考に

計測などはsprayでやっている

裏でakkaがいて、ログをredshiftにロードしている

ロードされたやつをまたakkaに突っ込む

Spray

ドキュメントが良かったこと、テストコードが書きやすいなどが理由

Sprayって何

省略

Concurrency

16コアのスペックに対して、並行処理で効率よく使われている

Future[T]

sprayの実装はFutureでやっている

いろいろなモジュールがある

spray-routingを使うと見やすく書ける

Application Layer

  • Spray Router
  • Bidding Business Logic
  • External Resources
  • Global Dispatcher

レイヤーごとに最適な細かい設定を用意する

http://lampwww.epfl.ch/~phaller/doc/FuturesAsync_ScalaDays2014.pdf

http://akka.io/community/

Futureのテスト(Specs2)

Abstract Future

implicitやモナドはかんがえなくてだいじょうぶ

http://eed3si9n.com/ja/the-abstract-future

モナドやFutureの細かい話はいたしません

Monad is a structure that represents computations defined as sequences of steps

akka

デーモンを常駐している

Typesafe console

Kamon

Summary

  • Future Directive on Spray
  • Abstract Future
  • Akka master/worker pattern(パターンを利用してスケール)
  • Monitoring Akka with Kamon(Akkaの内部をモニタリング)

トライアンドエラーでScalaをごにょごにょしたらいいんじゃないのだろうか

  • ハードルは高い
  • バッドプラクティスが多いとアレ
  • トライアンドエラーを繰り返してアレする