Riak and FreakOut
Riak をプロダクションに投下 [した¦している] 話
Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45
© FreakOut Inc.,
Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45
FreakOut と RTB
RTB	
  
媒体	
  広告主	
   SSP	
  DSP	
  
ROI	
   収益	
  
最大化	
  
AdEx	
  
(取引所)	
  
•  SSP	
  は「媒体側の収益最大化」が目的	
  
•  Supply	
  ...
RTBエコシステムの特徴
媒体	
  広告主	
  
AdEx	
  
SSP	
  
DSP	
  
ROI	
   収益	
  
最大化	
  Imp.売買	
  
•  FreakOut	
  は広告主のネット広告における	
  ROI	...
Riak Meetup Tokyo #2 7/10 19:00 ‒ 19:45
RTB の技術的課題
広告表示までに
許された時間は
0.1秒
RTB	
  and	
  FreakOut
RTB	
  
媒体	
  広告主	
  
SSP	
  
AdEx	
  
DSP	
  
•  0.1秒	
  =	
  SSP	
  がrequestを投げ、DSPがresponseを返し切るまで	
  
•  RTB	
  は	
  T...
50ms
or
die.
・レイテンシの軽減
・多数の RTB 処理
RTB	
  and	
  FreakOut
安く 早く うまく
捌く必要がある
RTB	
  and	
  FreakOut
1. FreakOut のシステム
RTB	
  and	
  FreakOut
RTB は CPU バウンド
RTB	
  and	
  FreakOut
FreakOut	
  のサーバインフラ
FreakOut	
  のサーバインフラ
FreakOut	
  のサーバインフラ
多コアを 安く 並べる
FreakOut	
  のサーバインフラ
一方
FreakOut	
  のサーバインフラ
入札判断に必要な
データストアも重要
FreakOut	
  のサーバインフラ
[Tokyo¦Kyoto]
FreakOut	
  のサーバインフラ
•  性能	
  
•  [Tokyo|Kyoto]	
  [Tyrant|Tycoon]	
  は高速	
  
•  50ms	
  or	
  die.	
  を支えるためには速度が必要	
  
•  スケーラビリティ	
  
•  クライ...
Riak	
  and	
  FreakOut	
2. Riak and FreakOut
•  Perl	
  
•  アプリケーションはほぼ全て	
  Perl	
  
•  Perl	
  <-­‐>	
  Riak	
  のやり取りを受け持つモジュールが必要	
  
•  KVS	
  
•  既存の	
  TT/KT	
  ...
•  Riak	
  Client	
  for	
  Perl	
  
•  Net::Riak,	
  Riak::Light,	
  Data::Riak,	
  AnyEvent::Riak	
  
•  REST	
  だけ	
  o...
•  その他のモジュールとの比較	
  
•  https://gist.github.com/myfinder/5232845	
  
	
  
•  結果	
  
•  3000%	
  over	
  faster	
  
•  現状	
 ...
•  Test::riak	
  
•  https://github.com/myfinder/p5-­‐test-­‐riak	
  
	
  
•  動作	
  
•  テスト実行時に、空きポートを	
  bind	
  して Riak	
...
運用構成
Riak	
  and	
  FreakOut
•  Engine	
  Yard	
  方式	
  
•  アプリケーションと Riak	
  の間に haproxy	
  を配置	
  
Riak	
  and	
  FreakOut	
運用構成
app	
Riak	
Riak	
Ria...
•  監視方法	
  
•  stats	
  で取得可能なデータを cloudforecast	
  でグラフ化	
  
•  死活監視は Nagios	
  で	
  port	
  を叩く	
  
Riak	
  and	
  Freak...
3. 課題
Riak	
  and	
  FreakOut
RTB	
  
媒体	
  広告主	
  
SSP	
  
AdEx	
  
DSP	
  
約0.1秒	
  
おさらい
Riak	
  and	
  FreakOut
広告表示までに
許された時間は
0.1秒
Riak	
  and	
  FreakOut
RTB処理に
許された時間は
約0.05秒
Riak	
  and	
  FreakOut
50ms
or
die.
Riak そのままでは
(現状)性能不足
Riak	
  and	
  FreakOut
•  Redirect	
  がつらい	
  
•  haproxy	
  で分散しているので、redirectが起こりやすい	
  
•  スループットが上がらない	
  
	
  
•  Set	
  が詰まるとつらい	
  
•  Set...
•  キャッシュ層を設ける	
  	
  
•  hot	
  な	
  key	
  については memcached	
  に任せる	
  
•  データの	
  origin	
  を Riak	
  に持つ	
  
•  -­‐>	
  ...
•  hash	
  から	
  partition	
  を特定する	
  
•  Riak	
  の持っている partition	
  情報を	
  RPC	
  経由で取得	
  
•  bucket	
  /	
  key	
  から...
•  素のままでは50ms or die.的に厳しめ
•  構成の工夫が必要
•  但しスループットを上げる手はある
•  スケーラビリティの問題を克服できるメリッ
トは大きい
•  サーバを足すだけ に運用を落とし込める
ここまでのまとめ
Riakmeetup2forupload
Riakmeetup2forupload
Upcoming SlideShare
Loading in...5
×

Riakmeetup2forupload

1,064

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,064
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "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.的に厳しめ •  構成の工夫が必要 •  但しスループットを上げる手はある •  スケーラビリティの問題を克服できるメリッ トは大きい •  サーバを足すだけ に運用を落とし込める ここまでのまとめ
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×