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.

Riakmeetup2forupload

1,903 views

Published on

  • Be the first to comment

Riakmeetup2forupload

  1. 1. Riak and FreakOut Riak をプロダクションに投下 [した¦している] 話 Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45
  2. 2. © FreakOut Inc.,
  3. 3. Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45 FreakOut と RTB
  4. 4. RTB   媒体  広告主   SSP  DSP   ROI   収益   最大化   AdEx   (取引所)   •  SSP  は「媒体側の収益最大化」が目的   •  Supply  Side  Platform   •  DSP  は「広告主の投資対効果(ROI)最大化」が目的   •  Demand  Side  Platform   •  2つの事業者間で、入札による取引が行われている   •  Real  Time  Bidding  (RTB)   RTB概略
  5. 5. RTBエコシステムの特徴 媒体  広告主   AdEx   SSP   DSP   ROI   収益   最大化  Imp.売買   •  FreakOut  は広告主のネット広告における  ROI  最適を 目指した  DSP  を展開  
  6. 6. Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45 RTB の技術的課題
  7. 7. 広告表示までに 許された時間は 0.1秒 RTB  and  FreakOut
  8. 8. RTB   媒体  広告主   SSP   AdEx   DSP   •  0.1秒  =  SSP  がrequestを投げ、DSPがresponseを返し切るまで   •  RTB  は  TCP  の RoundTripTime  (RTT)  を含んだ時間   •  SSP  は複数あり、多くの同時多発的リクエストが発生する   •  同時多発的なリクエストを  DSP  は出来るだけ吟味する必要   RTB  and  FreakOut
  9. 9. 50ms or die.
  10. 10. ・レイテンシの軽減 ・多数の RTB 処理 RTB  and  FreakOut
  11. 11. 安く 早く うまく 捌く必要がある RTB  and  FreakOut
  12. 12. 1. FreakOut のシステム RTB  and  FreakOut
  13. 13. RTB は CPU バウンド RTB  and  FreakOut
  14. 14. FreakOut  のサーバインフラ
  15. 15. FreakOut  のサーバインフラ
  16. 16. FreakOut  のサーバインフラ
  17. 17. 多コアを 安く 並べる FreakOut  のサーバインフラ
  18. 18. 一方 FreakOut  のサーバインフラ
  19. 19. 入札判断に必要な データストアも重要 FreakOut  のサーバインフラ
  20. 20. [Tokyo¦Kyoto] FreakOut  のサーバインフラ
  21. 21. •  性能   •  [Tokyo|Kyoto]  [Tyrant|Tycoon]  は高速   •  50ms  or  die.  を支えるためには速度が必要   •  スケーラビリティ   •  クライアントサイドのアルゴリズム分散のため、スケールし にくい   •  「10台じゃ足りない!!  11台目を追加しよう」が簡単にできない   •  運用   •  通常運用では高負荷な状況でも実績がある   •  データ検索したりできない(踏み込んだデータ活用に難有)   [Tokyo¦Kyoto] [Tyrant¦Tycoon] の課題 FreakOut  のサーバインフラ
  22. 22. Riak  and  FreakOut 2. Riak and FreakOut
  23. 23. •  Perl   •  アプリケーションはほぼ全て  Perl   •  Perl  <-­‐>  Riak  のやり取りを受け持つモジュールが必要   •  KVS   •  既存の  TT/KT  へのアクセスは  Cache::Memcached::Fast   •  Memcached  クライアントを使っている   •  運用   •  メトリクス収集  -­‐>  CloudForecast   •  監視  -­‐>  Nagios   FreakOutのシステム Riak  and  FreakOut
  24. 24. •  Riak  Client  for  Perl   •  Net::Riak,  Riak::Light,  Data::Riak,  AnyEvent::Riak   •  REST  だけ  or  PurePerl  の Protobuf  サポート   •  残念ながら遅い   •  Memcached  クライアントとインターフェース互換がない   •  既存の処理に組み入れにくい   •  ないなら作るしかない   •  Riak::PBC  <-­‐  Protobuf  のオブジェクト   •  Riak::Lite::PBC  <-­‐  実際に Riak  とやり取りする  client   Riak  and  FreakOut Perl と Riak
  25. 25. •  その他のモジュールとの比較   •  https://gist.github.com/myfinder/5232845     •  結果   •  3000%  over  faster   •  現状  Perl  の世界では(たぶん)最速   •  memcached  like  interface   •  Cache::Memcached::Fast  使ってる人には使いやすい   Riak  and  FreakOut 作った module の性能
  26. 26. •  Test::riak   •  https://github.com/myfinder/p5-­‐test-­‐riak     •  動作   •  テスト実行時に、空きポートを  bind  して Riak  を起動   •  テスト終了時に、Riak  を終了してくれる     •  テスト重要   •  継続的に運用していくシステムにおいて”テストができる”こ とはマスト要件   Riak  and  FreakOut 単体テストモジュール
  27. 27. 運用構成 Riak  and  FreakOut
  28. 28. •  Engine  Yard  方式   •  アプリケーションと Riak  の間に haproxy  を配置   Riak  and  FreakOut 運用構成 app Riak Riak Riak Riak Riak Riak Riak Riak app haproxy app
  29. 29. •  監視方法   •  stats  で取得可能なデータを cloudforecast  でグラフ化   •  死活監視は Nagios  で  port  を叩く   Riak  and  FreakOut 運用構成 スクショ参照
  30. 30. 3. 課題 Riak  and  FreakOut
  31. 31. RTB   媒体  広告主   SSP   AdEx   DSP   約0.1秒   おさらい Riak  and  FreakOut
  32. 32. 広告表示までに 許された時間は 0.1秒 Riak  and  FreakOut
  33. 33. RTB処理に 許された時間は 約0.05秒 Riak  and  FreakOut
  34. 34. 50ms or die.
  35. 35. Riak そのままでは (現状)性能不足 Riak  and  FreakOut
  36. 36. •  Redirect  がつらい   •  haproxy  で分散しているので、redirectが起こりやすい   •  スループットが上がらない     •  Set  が詰まるとつらい   •  Set  が詰まり始めると、worker  の  busy  率が上がる   •  書き込みの非同期化が必要   •  もう一歩踏み込んだ対策が必要     Riak  and  FreakOut 50ms or die.的な見地からの課題
  37. 37. •  キャッシュ層を設ける     •  hot  な  key  については memcached  に任せる   •  データの  origin  を Riak  に持つ   •  -­‐>  実装済み   Riak  and  FreakOut スループット向上のために app Riak Riak Riak Riak Riak Riak app app Riak Riak memd haproxy
  38. 38. •  hash  から  partition  を特定する   •  Riak  の持っている partition  情報を  RPC  経由で取得   •  bucket  /  key  から  hash  を取得して、収容  partition  を特定   •  @itawasa++   •  partition  に所属するノードに直接getしに行く   •  Riak::Lite::PBC  でサポート予定   •  -­‐>  今後の課題   Riak  and  FreakOut スループット向上のために
  39. 39. •  素のままでは50ms or die.的に厳しめ •  構成の工夫が必要 •  但しスループットを上げる手はある •  スケーラビリティの問題を克服できるメリッ トは大きい •  サーバを足すだけ に運用を落とし込める ここまでのまとめ

×