Slide 1

Slide 1 text

印南 @ Gunosy 広告技術部 スケールしない広告サーバの作り方

Slide 2

Slide 2 text

自己紹介 •  印南聡志(いんなみ さとし) •  Gunosyのアドエンジニア •  2014年6月 入社 •  Gunosyのアド配信サーバ周り全般担当 •  言語 •  Go •  Python •  最近ランニングにはまっております

Slide 3

Slide 3 text

今日のお話 スケールしない 広告サーバの作り方 ※ここでのスケールはスケールアウトのことです

Slide 4

Slide 4 text

注意 スケール時のアンチパターンをまとめております! 弊社の広告サーバがスケールしないわけではありません!

Slide 5

Slide 5 text

あなたの会社の広告サーバは スケールしていますか?

Slide 6

Slide 6 text

スケールしないと… 急なリクエスト増に耐えられない

Slide 7

Slide 7 text

レイテンシ(遅延)が発生

Slide 8

Slide 8 text

エンジニアの死

Slide 9

Slide 9 text

油田王になりたくなる

Slide 10

Slide 10 text

作り方を知れば あなたにも簡単に作れます!

Slide 11

Slide 11 text

スケールしない広告サーバの作り方① ボトルネックをガンガン作ろう!

Slide 12

Slide 12 text

ボトルネックをガンガン作ると… アクセス増のタイミングで ボトルネック部分が突然詰まる!

Slide 13

Slide 13 text

ボトルネックを作るには?

Slide 14

Slide 14 text

ボトルネックを作るには? (その1) 配信サーバからデータストアに ガンガン書き込みを走らせよう!

Slide 15

Slide 15 text

配信サーバ 配信データ DB READ WRITE ボトルネック 書き込みが分散できず 詰まる

Slide 16

Slide 16 text

ボトルネックを作るには? (その2) 全データを一つの データストアに入れよう!

Slide 17

Slide 17 text

広告情報 配信候補 消化予算 ユーザ属性 FQ リタゲ … データサイズ… ライフサイクル… 重要度… 配信データDB アクセスが集中 メンテが困難

Slide 18

Slide 18 text

ボトルネックを作るには? (その3) 全ての処理を同期的に行おう!

Slide 19

Slide 19 text

ログDB WRITE ボトルネック 配信サーバ ELB 書込み完了を 待機

Slide 20

Slide 20 text

スケールしない広告サーバの作り方② サーバ追加が超絶難しい 環境を作ろう!

Slide 21

Slide 21 text

どうやって作るか?

Slide 22

Slide 22 text

サーバを追加するのに 物理的にサーバを購入するために 承認が必要な環境を整えよう! サーバ追加を超絶難しくするには? 3人以上の承認が 必要なのがベター

Slide 23

Slide 23 text

サーバごとに独自の環境設定を (バレにくいように)埋めこもう! サーバ追加を超絶難しくするには?

Slide 24

Slide 24 text

どこに隠しておくのが良いのか? •  configファイル •  環境変数 •  cron /etc/xx/include あたりがGood 実行ユーザを 変えて撹乱

Slide 25

Slide 25 text

サーバ追加を超絶難しくするには? 継続的インテグレーション(CI)環境 を作らないようにしよう! 自動ビルド 自動テスト 自動デプロイ

Slide 26

Slide 26 text

まとめ スケールしない広告サーバを作るには? ボトルネックをガンガン作ろう! サーバ追加が超絶難しい環境を整えよう!

Slide 27

Slide 27 text

最後に スケールする広告サーバに興味があれば 懇親会でお声掛けください

Slide 28

Slide 28 text

We Are Hiring!!! Gunosyではスケールする広告サーバを 開発するエンジニアを 募集しております!!