SlideShare une entreprise Scribd logo
1  sur  19
HTTPプロキシによるゼロダウン
タイムなアドサーバー移行
Ryo Aita
自己紹介
会田 遼
Gunosy 広告技術部所属
2014年12月入社
ダイエット中
Overview
• Go言語製のHTTPプロキシを実装して、広告
配信サーバーを(おおむね)ゼロダウンタイム
で移行した話(※タイトルには誇張がありま
す)
• 踏んだ地雷の話
Gunosyのアドサーバー移行の課題
• 収益の拡大
• 施策の高速化
• 保守・追加開発の効率化
システム移行の悩み
• 新旧システムの並行運用は避けたい
– 収益の集計系の多重管理とか恐怖
– そもそも運用コストを避けるのが目的
• 停止時間は最低限にしたい
– 停止中に広告が出ないと収益が減る
• テストが難しい
– シナリオテストは重要だが、本番で起きている全ての
ケースを網羅するのは困難
– 本番からのリクエストで予期せぬエラーが出ないか
– リリースしてからクライアントのクラッシュ率がらない
か
1%限定公開
• DNSの設定で1%だけ、新サーバーを公開
• テスト時間帯の収益の1%は目をつぶる(短時
間でかつピーク帯を避ければ後から取り返せ
る)
• クライアントのクラッシュ率が上がらないか監
視
問題
新サーバーが本番のリクエストに耐えれるか、
1%限定公開じゃわからないよね!?
回答
リリース前に本番へのリクエストをまるごと新
サーバーに流せばよくね?
解決策
• シャドウプロキシーで本番のリクエストを段階
的に新サーバーに流して負荷に耐えれるか
試験
シャドウプロキシーって?
• 本番のリクエストを、稼働中のシステムとは別
の環境に送るツール(or 仕組み)
• 本番のリクエストを使うので、負荷テストやシ
ナリオテストでのテスト漏れを防げる
Gunosy Ad プロキシ
• Go言語で実装
• リバースプロキシ
– リクエストを稼働中のシステムに送信
– プロキシ先のレスポンスをクライアントに返信
• シャドウプロキシ
– Goルーチンでバックグラウンドで送信
– レスポンスは捨てる
• URL単位でプロキシ先を設定可能
システム構成
結果
• 事前に、本番のリクエストを新サーバーに
100%流すことによってリスクを減らせた。
• 本番リリース時に配信サーバーの作業はプ
ロキシの設定を変えるだけで済んだ。
• 大きな障害を起こすことなく、新サーバーへ
の移行が出来た。
続くよ
踏んだ地雷の話もするよ
地雷1
• Goルーチンが溢れた
– リクエストを受け取ったらGoルーチンを作成して、
シャドウプロキシーの対象にリクエストを送信する
ようにしてた
– ピークにリクエスト数が増えて、Goルーチンが溢
れた
• シャドウ用のGoルーチンのプールを作成して
解決
地雷2
• シャドウ用のプールの数が足りなかった
地雷2
• シャドウプロキシーからのリクエストが遅延
• シャドウ先へのリクエストが角刈りに・・・・
地雷3
• DNSループ・・・・
地雷3
• プロキシー先のホスト名をELBのホスト名では
なく、公開用のホスト名を指定してた
• リクエストの100%をプロキシーを経由するよう
にした瞬間、リクエストが完全にループして広
告が出せなくなった

Contenu connexe

Tendances

20130126 mtddcms
20130126 mtddcms20130126 mtddcms
20130126 mtddcms
yokonaka
 
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
Koichiro Nishijima
 
WP Booster WordBench Tokyo 20120701
WP Booster WordBench Tokyo 20120701WP Booster WordBench Tokyo 20120701
WP Booster WordBench Tokyo 20120701
Hiromichi Koga
 

Tendances (14)

アドテクを支える人と技術
アドテクを支える人と技術アドテクを支える人と技術
アドテクを支える人と技術
 
アドテク勉強会
アドテク勉強会アドテク勉強会
アドテク勉強会
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
 
ちょっと分かった気になるAzure概要
ちょっと分かった気になるAzure概要ちょっと分かった気になるAzure概要
ちょっと分かった気になるAzure概要
 
AbemaTVにおける推薦システム
AbemaTVにおける推薦システムAbemaTVにおける推薦システム
AbemaTVにおける推薦システム
 
番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介番組宣伝に関するAbemaTV分析事例の紹介
番組宣伝に関するAbemaTV分析事例の紹介
 
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampスポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
 
Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発Text-To-だるやなぎスピーチの開発
Text-To-だるやなぎスピーチの開発
 
私たち企業がアクセシビリティに取り組む理由 #accfes
私たち企業がアクセシビリティに取り組む理由 #accfes私たち企業がアクセシビリティに取り組む理由 #accfes
私たち企業がアクセシビリティに取り組む理由 #accfes
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所
 
20130126 mtddcms
20130126 mtddcms20130126 mtddcms
20130126 mtddcms
 
クラウド型データベース「kintone」のご紹介
クラウド型データベース「kintone」のご紹介クラウド型データベース「kintone」のご紹介
クラウド型データベース「kintone」のご紹介
 
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
 
WP Booster WordBench Tokyo 20120701
WP Booster WordBench Tokyo 20120701WP Booster WordBench Tokyo 20120701
WP Booster WordBench Tokyo 20120701
 

En vedette

30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方
Daisuke Yamazaki
 
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
Naoya Nakazawa
 

En vedette (20)

30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
 
スケールアウト再考
スケールアウト再考スケールアウト再考
スケールアウト再考
 
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
 
エンジニアサマーインターンシップ 2016 ご紹介
エンジニアサマーインターンシップ 2016 ご紹介エンジニアサマーインターンシップ 2016 ご紹介
エンジニアサマーインターンシップ 2016 ご紹介
 
Ruby を利用した大規模ウェブサービスの開発・運用
Ruby を利用した大規模ウェブサービスの開発・運用Ruby を利用した大規模ウェブサービスの開発・運用
Ruby を利用した大規模ウェブサービスの開発・運用
 
Seccon大阪大会結果からみるcsirt対応について
Seccon大阪大会結果からみるcsirt対応についてSeccon大阪大会結果からみるcsirt対応について
Seccon大阪大会結果からみるcsirt対応について
 
ゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバーゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバー
 
Gunosyインターン成果発表
Gunosyインターン成果発表Gunosyインターン成果発表
Gunosyインターン成果発表
 
第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会第7回 ECMA-262 Edition5.1読書会
第7回 ECMA-262 Edition5.1読書会
 
小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1
小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1
小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1
 
ソフトウェアエンジニアに知ってほしいAerospike
ソフトウェアエンジニアに知ってほしいAerospikeソフトウェアエンジニアに知ってほしいAerospike
ソフトウェアエンジニアに知ってほしいAerospike
 
セキュリティ品質向上に向けたサイボウズの取り組み
セキュリティ品質向上に向けたサイボウズの取り組みセキュリティ品質向上に向けたサイボウズの取り組み
セキュリティ品質向上に向けたサイボウズの取り組み
 
Inference Bayesian Network from data
Inference Bayesian Network from dataInference Bayesian Network from data
Inference Bayesian Network from data
 
アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)アドテク案件入門講座 8月20日(公開版)
アドテク案件入門講座 8月20日(公開版)
 
Contents blocker on iOS9
Contents blocker on iOS9Contents blocker on iOS9
Contents blocker on iOS9
 
クラウドとオンプレミスを活用した 月間500億件を処理する 広告配信システムの裏側とは? - BI-Direct Access for AWS 事例 - ...
クラウドとオンプレミスを活用した 月間500億件を処理する 広告配信システムの裏側とは? - BI-Direct Access for AWS 事例 - ...クラウドとオンプレミスを活用した 月間500億件を処理する 広告配信システムの裏側とは? - BI-Direct Access for AWS 事例 - ...
クラウドとオンプレミスを活用した 月間500億件を処理する 広告配信システムの裏側とは? - BI-Direct Access for AWS 事例 - ...
 
Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)Management for Security Life Cycle (日本語版)
Management for Security Life Cycle (日本語版)
 
広告の最適化
広告の最適化広告の最適化
広告の最適化
 
機関車トーマスで説明するRTB
機関車トーマスで説明するRTB機関車トーマスで説明するRTB
機関車トーマスで説明するRTB
 

Similaire à HTTPプロキシによるゼロダウンタイムなアドサーバー移行

第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
Tae Yoshida
 
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
Hinemos
 

Similaire à HTTPプロキシによるゼロダウンタイムなアドサーバー移行 (20)

【HinemosWorld2015】B2-2_Hinemosを導入するメリット
【HinemosWorld2015】B2-2_Hinemosを導入するメリット【HinemosWorld2015】B2-2_Hinemosを導入するメリット
【HinemosWorld2015】B2-2_Hinemosを導入するメリット
 
経営情報フォーラム2009
経営情報フォーラム2009経営情報フォーラム2009
経営情報フォーラム2009
 
経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料経営情報フォーラム2009発表資料
経営情報フォーラム2009発表資料
 
【HinemosWorld2015】B1-5_【入門】Hinemosではじめるクラウド運用
【HinemosWorld2015】B1-5_【入門】Hinemosではじめるクラウド運用【HinemosWorld2015】B1-5_【入門】Hinemosではじめるクラウド運用
【HinemosWorld2015】B1-5_【入門】Hinemosではじめるクラウド運用
 
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
 
ずばっと解決!クラウド・仮想化環境の運用課題!
ずばっと解決!クラウド・仮想化環境の運用課題!ずばっと解決!クラウド・仮想化環境の運用課題!
ずばっと解決!クラウド・仮想化環境の運用課題!
 
【新卒採用】Webセミナー大全。過去と現在、そして未来まで by レプモス
【新卒採用】Webセミナー大全。過去と現在、そして未来まで by レプモス【新卒採用】Webセミナー大全。過去と現在、そして未来まで by レプモス
【新卒採用】Webセミナー大全。過去と現在、そして未来まで by レプモス
 
20110225
2011022520110225
20110225
 
Google APP Engine vs リアルタイムウェブ
Google APP Engine vs リアルタイムウェブGoogle APP Engine vs リアルタイムウェブ
Google APP Engine vs リアルタイムウェブ
 
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...
 
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
 
運用効率化・運用自動化を実現するHinemosのご紹介
運用効率化・運用自動化を実現するHinemosのご紹介運用効率化・運用自動化を実現するHinemosのご紹介
運用効率化・運用自動化を実現するHinemosのご紹介
 
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
【Hinemos World 2013】A-3:Hinemos運用Hacks ~マニュアルにないノウハウを公開します(株式会社クニエ)
 
BPStudy#101発表資料
BPStudy#101発表資料BPStudy#101発表資料
BPStudy#101発表資料
 
Hinemosだからできるクラウド運用の自動化・効率化
Hinemosだからできるクラウド運用の自動化・効率化Hinemosだからできるクラウド運用の自動化・効率化
Hinemosだからできるクラウド運用の自動化・効率化
 
運用効率化・運用自動化を実現するHinemosのご紹介
運用効率化・運用自動化を実現するHinemosのご紹介運用効率化・運用自動化を実現するHinemosのご紹介
運用効率化・運用自動化を実現するHinemosのご紹介
 
Hinemosによるクラウド運用管理の最新情報
Hinemosによるクラウド運用管理の最新情報Hinemosによるクラウド運用管理の最新情報
Hinemosによるクラウド運用管理の最新情報
 
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
PagerDuty会社概要・インシデント管理ソリューション紹介資料 〜インシデントをより早く・少ないリソースで解決し、 将来のインシデントを未然に防ぐには〜
 
20180417 AWS White Belt Online Seminar クラウドジャーニー
20180417 AWS White Belt Online Seminar クラウドジャーニー20180417 AWS White Belt Online Seminar クラウドジャーニー
20180417 AWS White Belt Online Seminar クラウドジャーニー
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 

HTTPプロキシによるゼロダウンタイムなアドサーバー移行