Upgrade to Pro — share decks privately, control downloads, hide ads and more …

高速な広告配信サーバの作り方のコツ

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Satoshi Satoshi
June 23, 2016

 高速な広告配信サーバの作り方のコツ

高速な配信サーバをつくるためのコツを紹介しています。

Avatar for Satoshi

Satoshi

June 23, 2016
Tweet

More Decks by Satoshi

Other Decks in Technology

Transcript

  1. 自己紹介 •  印南聡志(いんなみ さとし)   •  Gunosyのアドエンジニア  (3年目)   – 

    Gunosyのアド配信サーバ周り全般担当   •  言語   –  Go   –  Python   •  マイブーム   –  AJINOMOTOの冷凍餃子   –  大食い(視るだけ)   •  参照   –  Blog:NO  AD  NO  LIFE(hBp://inchom.hatenadiary.jp/)   –  Github:hBps://github.com/satoshi03  
  2. 5ms

  3.     1リクエストの応答時間:  5ms   リクエスト数:        

                                       10,000req/sec  以上  
  4. 対応 •  API側   – Golangで実装   – やることを極限まで削減   •  広告候補の取得

      •  簡単なバリデーション   •  バッチ側で複雑な処理を一括で計算   – Python  
  5. LOCUST  構成 ・・・ Locust  slave Locust  master 広告配信 サーバ ・・・

    シナリオに応じてリクエストを 生成 Slaveを管理
  6. 見つかった問題 •  様々な原因   – ライブラリ内の実装   – 入札時の広告の探索範囲が広い   – バリデーションのコスト  

    – データキャストのコスト   – オブジェクト生成のコスト   – DB接続時のコスト   – ログ出力コスト  
  7. 金で解決の例 •  Redis  をやめる   – DynamoDB   – AeroSpike   • 

    スケールアップで対応   – 4xlargeインスタンス…