SlideShare a Scribd company logo
Fluentdで
本番環境を再現
するFluentd Meetup 2015 夏
 
 
https://iprostm.doorkeeper.jp
/events/25664
参加者募集中!
Speakerになってもいい人いたら是非連絡ください!
@toyama0919
 
アジェンダ
Shadow Proxy
fluent-plugin-http_shadow
ユースケース
まとめ
Shadow Proxy
Shadow Proxy
productionのhttp requestを複製してバックエンドに送
信するproxy
限りなく本番に近い環境をを再現できる
主な用途は負荷試験や結合試験
本番環境を開発環境で再現するアプローチ
 
Shadow Proxy何故?
WEBのtestが年々複雑化してきている
本番に入れてみたら変なデータが入ってきて落ちた
り。。
本番運用したら負荷が大きすぎて落ちたり。。
導入
するしかない!
方式を考えた
公開されているOSSを使う
cookpad/kage
lestrrat/p5-Geest
kentaro/delta
mod_mrubyやngx_mruby
nginx層やapache層の処理をmrubyでscriptingできる
 
 
懸念点があった
ユーザーに密接するフロントエンドにミドルウェアをあ
まり入れたくない
proxyが挟まることによるユーザーへの影響が不安
もう少し安全にやりたい
要はフロントエンドに手を入れずShadow Proxyやりたい
Fluentdで
出来そうな予感
fluent-plugin-http_shadow
fluent-plugin-http_shadow
Fluentdからhttp requestを復元
フロントエンドに手を入れずにShadow Proxyを実現
ApacheやNginxのログを想定しているが、専用のログで
post等も実現可能
 
パラメータ
rateによる希釈
timeout
並列数
http headerとcookieを指定可能
virtual host
rateによる希釈
本番と同じスペックを揃えられない
同じrequestを送信したらstaging環境が破裂した
最初は1%で運用、徐々に上げてくのが安全
timeout
timeoutが長すぎるとbufferが詰まる
fluent-plugin-elasticsearchと同じ
短いtimeoutであればclient側でtimeoutするのでbuffer
が詰まりにくい
並列数
Apache Benchの用にhttp requestを並列で投げる
Aggregatorが複数あればrequest元を分散できる
あまり一斉にrequestを投げるとサーバー側が破裂する
サーバー数でscaleさせたい場合は各サーバーの並列数を
低めに
注意点config_paramsにhashが使えないversionはダメ
<match http_shadow.example>
type http_shadow
host_hash {
"www.example.com": "staging.example.com",
}
host_key host
path_format ${path}
method_key method
header_hash {
"Referer": "${referer}",
"User-Agent": "${user_agent}"
}
max_concurrency 10
flush_interval 10
timeout 10
rate 10
</match>
ユースケース
主なユースケース
バグ発見器
パフォーマンスの比較
バグ発見器
開発環境でとりあえず流しとけば結構バグが見つかるw
通常テスト時には邪魔になるので、rateを下げる
昨今のミドルウェア更新頻度
開発が活発なミドルウェアは毎週のようにアップデート
が実施される
ライブラリのアップデートの更新頻度も年々上がってい
る
特にOSSだとその傾向が強い
アップデートしないという選択肢もある
ミドルウェアアップデート時
同じWEBサーバを2つ用意し、片方だけアップデートす
る
fluentdのcopyでhttp_shadowのmatch directiveを作る
全く同じrequestが送信されることが保証される
newrelicでパフォーマンスを比較
copyで複製<match http_shadow.**>
type copy
<store>
type http_shadow
...
</store>
<store>
type http_shadow
...
</store>
...
</match>
 
productionと比較は?
productionと同じ構成には費用がかかる
Fluentdのcopyで同一のhttp requestが保証できる
環境間の差分を見る
まとめと感想
完全なShadow環境は難しい
メールアドレスはMASKされており本番と違う
Postのパラメータはログに出せない
Kageでもgetだけ送信するようなサンプルが提示されて
たりする
ブラウザによるアクセスではない
完全なるShadow環境は危険
意図しないデータの更新
Get(参照系)だけでも9割は再現出来る
管理画面とかとは相性が悪い
まとめ
shadow環境はバグを沢山見つけてくれる
ミドルウェアの更新頻度が多い現代に合っている
Fluentd上ならこういったことがCasualにできる
ありがとう
ございました

More Related Content

PDF
TLS, HTTP/2演習
PDF
GoによるWebアプリ開発のキホン
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
オンラインゲームの仕組みと工夫
TLS, HTTP/2演習
GoによるWebアプリ開発のキホン
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
コンテナネットワーキング(CNI)最前線
SPAセキュリティ入門~PHP Conference Japan 2021
オンラインゲームの仕組みと工夫

What's hot (20)

PDF
AWS Black Belt Online Seminar AWS CloudFormation アップデート
PDF
マルチテナントのアプリケーション実装〜実践編〜
PDF
DockerとPodmanの比較
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PDF
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
PDF
TIME_WAITに関する話
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
オブジェクト指向エクササイズのススメ
PPTX
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
CloudFrontのリアルタイムログをKibanaで可視化しよう
PDF
SQL大量発行処理をいかにして高速化するか
PPTX
本当は恐ろしい分散システムの話
PPTX
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
PDF
MHA for MySQLとDeNAのオープンソースの話
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PDF
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
PDF
Fluentdのお勧めシステム構成パターン
AWS Black Belt Online Seminar AWS CloudFormation アップデート
マルチテナントのアプリケーション実装〜実践編〜
DockerとPodmanの比較
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
TIME_WAITに関する話
分散トレーシング技術について(Open tracingやjaeger)
オブジェクト指向エクササイズのススメ
DX実践!~ビジネスアジリティ向上とマイクロサービス技術GraphQLの活用~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
CloudFrontのリアルタイムログをKibanaで可視化しよう
SQL大量発行処理をいかにして高速化するか
本当は恐ろしい分散システムの話
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MHA for MySQLとDeNAのオープンソースの話
新入社員のための大規模ゲーム開発入門 サーバサイド編
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
Fluentdのお勧めシステム構成パターン
Ad

Viewers also liked (20)

PDF
CoreOS入門
PPTX
マイナスを0にもっていくまで
PPTX
インフラエンジニアLv1がWordPressまわりに色々してみた話
PDF
Markdownでドキュメント作成
PDF
Re:dash Use Cases at iPROS
PDF
re:dash is awesome
PPTX
Fluentd+MongoDB+Groovy
PPTX
PPTX
Ipros techmeetup 20131218_scala_handson
PPTX
リーダブルコード 1.0'
PPTX
Fluentd勉強会 (導入編 TreasureData活用)
PPTX
PPTX
仮想マシンとVagrant + Vagrant 1.5
PDF
Fluentd introduction at ipros
PDF
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
DOCX
6331 sayılı isg kanunu
PPTX
Hubotを使ってbotをつくろう!
PDF
CSS Nite LP38に行ってきた
PDF
MBaaS - Parse
PPTX
初心者Vimmerによるvim+rails開発
CoreOS入門
マイナスを0にもっていくまで
インフラエンジニアLv1がWordPressまわりに色々してみた話
Markdownでドキュメント作成
Re:dash Use Cases at iPROS
re:dash is awesome
Fluentd+MongoDB+Groovy
Ipros techmeetup 20131218_scala_handson
リーダブルコード 1.0'
Fluentd勉強会 (導入編 TreasureData活用)
仮想マシンとVagrant + Vagrant 1.5
Fluentd introduction at ipros
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
6331 sayılı isg kanunu
Hubotを使ってbotをつくろう!
CSS Nite LP38に行ってきた
MBaaS - Parse
初心者Vimmerによるvim+rails開発
Ad

Similar to Fluentdで本番環境を再現 (20)

PDF
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
PDF
Nodeにしましょう
PDF
Cloud Foundryは何故動くのか
PDF
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
PDF
Fabricによるcloud stackインストール自動化
PDF
ES6 はじめました
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Jenkins に XFD を追加してみると
PDF
DPDKを拡張してみた話し
PDF
runC概要と使い方
PDF
Vagrant を Web開発環境に使う
PDF
Docker lifecycle event hooks
PPTX
Idcfクラウド 初心者の事始め(2)資料
PPTX
120517 cf tour_london
PDF
第4回 インフラ勉強会@福岡 Fluentdハンズオン
PDF
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
PDF
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
PPTX
120315 cloud founry_java_ironfoundry
PDF
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
PDF
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
Nodeにしましょう
Cloud Foundryは何故動くのか
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Fabricによるcloud stackインストール自動化
ES6 はじめました
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Jenkins に XFD を追加してみると
DPDKを拡張してみた話し
runC概要と使い方
Vagrant を Web開発環境に使う
Docker lifecycle event hooks
Idcfクラウド 初心者の事始め(2)資料
120517 cf tour_london
第4回 インフラ勉強会@福岡 Fluentdハンズオン
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Chef+Vagrantでクラウド環境構築自動化ハッカソン 結果発表 #atithack
120315 cloud founry_java_ironfoundry
[Osaka]AMIMOTO(HHVM) hands-on #cmsdou
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来

Fluentdで本番環境を再現