ad stirの裏側

20
AdStirの裏側 ngigroup 落合

Upload: seiji-ochiai

Post on 31-May-2015

2.158 views

Category:

Technology


5 download

DESCRIPTION

ngigroup enigmo合同LTで発表したngigroupで開発したSSP「AdStir」の紹介です。

TRANSCRIPT

Page 1: Ad stirの裏側

AdStirの裏側

ngigroup 落合

Page 2: Ad stirの裏側

今日のお題

弊社で開発したスマートフォンSSP Adstir

Page 3: Ad stirの裏側

自己紹介

● @sochiai とか www.sochiai.com● ● 2011/10よりNgigroup所属。AdStir担当技術。 ● perlとかjavascriptとかを書いてます。perl再入門中。● ● その前はミッドタウンのYのつく会社で、自動車とか地図とロコと

かのサービスをphpでがりがり。● ● その前はフラクタリストという携帯サイトメインのベンチャーで、

phpとかrubyとかperlとか。● ● その前は富○通系傘下の開発会社でCとかJavaとかで高速通

信アプリとか、組み込み系をがりがり。

Page 4: Ad stirの裏側

AdStirって?

http://ad-stir.com/

Page 5: Ad stirの裏側

使ってる技術

● perl、catalyst、starman …管理画面等はcatalyst、api系で一部starman

● nginx …高速性が必要とされる配信サーバ

● MySQL …データ管理

● memcached …配信サーバのキャッシュ

● javascript …管理画面だけでなくweb広告の取得・表示に。

● android用SDK● iOS用SDK

Page 6: Ad stirの裏側

ロゴ

トカゲじゃないです。カメレオンです。

「いろいろな広告に変わる」

Page 7: Ad stirの裏側

システム構成

Page 8: Ad stirの裏側

広告系のシステムで大事なこと

Page 9: Ad stirの裏側

信頼性

フルタイムで動作するシステムかつお金に関わることなので。ちょっとやそっとでは落ちない安定性。

Page 10: Ad stirの裏側

冗長性

急な負荷でもすぐに増やせるようなシステム。

Page 11: Ad stirの裏側

そして高速性

なんといっても大事。

Page 12: Ad stirの裏側

高速性の追求

nginx + memcached

言わずと知れた近頃流行のの高速サーバの組み合わせ

● nginx moduleをC言語で自作することで、メモリアクセスだけで広告は威信は動作するシステム。高速。

● HDDのファイルシステムが壊れた状態でも広告配信は行われていた。(配信ログが残らなかったためそれはそれで問題だった…)

Page 13: Ad stirの裏側

キャッシュのフロー

1. バッチで広告情報をrdbからmemcachedにセット2. request時にmemcached(local)になければremoteからセット

(リードスルー)3. 広告情報をレスポンス

Page 14: Ad stirの裏側

nginxのパフォーマンス

● キャッシュレスのリアルタイム処理で1サーバで過去最高300req/secでもload aveは常に0.5以下(他システムの実績では3000req/sec以上もいける) 

● Apache消費メモリApache 数十KB~/プロセスリクエストの数だけプロセス発生(preforkの場合)

● nginx数KB~/プロセス1ワーカーあたり複数リクエストを捌ける(一 般的にCPU orCPUコア数=ワーカー数)

Page 15: Ad stirの裏側

nginx module

● 資料が本家にないが、C言語の知識があれば割と簡単に作れる。

nginx-modules-guide

Page 16: Ad stirの裏側

nginx reverce proxy

● nginxのreverce proxy機能。簡単に使える。

● squid<varnish=nginxぐらいの速度らしいが、高負荷時の動作ではnginxの動作が優位らしい。メモリキャッシュ機能もあり、単純なreverce proxyであればなにも考えずにnginxでOKでは。

Page 17: Ad stirの裏側

ソース管理はgit

● 基本的にgit。githubを使っていたがリポジトリが増えてきたので、gitoriousで自社用gitリポジトリを構築。

● gitoriousはわりと構築が面倒(主にrailsアプリ特有の問題で)。

今なら構築の容易さ高機能でgitoliteという選択かも。

Page 18: Ad stirの裏側

大型高機能➡小型高速

● MSと同じ。● 小さいことはいいことです。

Page 19: Ad stirの裏側

まとめ

● パフォーマンス、信頼性の両立。nginx、memcachedという構成がとても大事。C言語は難しいように見えて、技術的にも枯れているので妥当な選択。リソース管理が難しいが、逆にリソースを完全にコントロールできるのでフルタイム動作するシステムではいい方向に働く。 

● いつアクセスが爆発するか分からない(いきなり大きなメディア

が入ってくることも!)ので、常にパフォーマンスを気にした設計が要求される。元Cプログラマーとしては血が騒ぐし、webサービスの根幹ともいえる部分。

● nginx押し押しですいません。集計周りとかは全然話せませんで

したね。。。

Page 20: Ad stirの裏側

ご清聴ありがとうございました

p.s. 広告エンジニアやってるけど何か聞きたいことある?