SlideShare a Scribd company logo
印南 @ Gunosy 広告技術部
スケールしない広告サーバの作り方
自己紹介
• 印南聡志(いんなみ さとし)
• Gunosyのアドエンジニア
• 2014年6月 入社
• Gunosyのアド配信サーバ周り全般担当
• 言語
• Go
• Python
• 最近ランニングにはまっております
今日のお話
スケールしない
広告サーバの作り方
※ここでのスケールはスケールアウトのことです
注意
スケール時のアンチパターンをまとめております!
弊社の広告サーバがスケールしないわけではありません!
あなたの会社の広告サーバは
スケールしていますか?
スケールしないと…
急なリクエスト増に耐えられない
レイテンシ(遅延)が発生
エンジニアの死
油田王になりたくなる
作り方を知れば
あなたにも簡単に作れます!
スケールしない広告サーバの作り方①
ボトルネックをガンガン作ろう!
ボトルネックをガンガン作ると…
アクセス増のタイミングで
ボトルネック部分が突然詰まる!
ボトルネックを作るには?
ボトルネックを作るには? (その1)
配信サーバからデータストアに
ガンガン書き込みを走らせよう!
配信サーバ
配信データ
DB
READ
WRITE
ボトルネック
書き込みが分散できず
詰まる
ボトルネックを作るには? (その2)
全データを一つの
データストアに入れよう!
広告情報
配信候補
消化予算
ユーザ属性
FQ
リタゲ
…
データサイズ…
ライフサイクル…
重要度…
配信データDB
アクセスが集中
メンテが困難
ボトルネックを作るには? (その3)
全ての処理を同期的に行おう!
ログDB
WRITE
ボトルネック
配信サーバ
ELB
書込み完了を
待機
スケールしない広告サーバの作り方②
サーバ追加が超絶難しい
環境を作ろう!
どうやって作るか?
サーバを追加するのに
物理的にサーバを購入するために
承認が必要な環境を整えよう!
サーバ追加を超絶難しくするには?
3人以上の承認が
必要なのがベター
サーバごとに独自の環境設定を
(バレにくいように)埋めこもう!
サーバ追加を超絶難しくするには?
どこに隠しておくのが良いのか?
• configファイル
• 環境変数
• cron
/etc/xx/include
あたりがGood
実行ユーザを
変えて撹乱
サーバ追加を超絶難しくするには?
継続的インテグレーション(CI)環境
を作らないようにしよう!
まとめ
スケールしない広告サーバを作るには?
ボトルネックをガンガン作ろう!
サーバ追加が超絶難しい環境を整えよう!
最後に
スケールする広告サーバに興味があれば
懇親会でお声掛けください
We Are Hiring!!!
Gunosyではスケールする広告サーバを
開発するエンジニアを
募集しております!!

More Related Content

スケールしない広告サーバの作り方