シャドウトラフィックテストとは
Webシステムテスト手法の一つ
「本番環境へのリクエストを、検証環境へミラーリング(分割 or 転送)」することで
負荷テスト・リグレッションテストを実施できる
A/B テストをシステムテスト特化したものと考えれば良い
別名は シャドーイング, シャドーテスト, shadowing, traffic shadowing, shadow traffic test
( 以降「ミラーリング」をシャドーイングと表記する )
構築イメージ
下図の通り、本番から検証へリクエストをシャドーイングする
シャドーイング手法(転送, 分割, etc.) はロードバランサーの仕様に依存する
テスト時の留意点
(1) 「シャドーイングの重みづけ」を適量にする
例えば分割でやる場合、どの重みづけでやるかをテスト目的で決める
( nginx では split_clients
の割合を指す )
(2) 本番リクエストへの影響を限りなく抑える
ロードバランサーの性能が、全く落ちないとは言い切れない
なので
- 第一検証環境(本番扱い)
- 第二検証環境(検証扱い)
の2環境で、事前に負荷をかけて確認をする
(3) 検証環境では、ロードバランサーから先を機能制限する
検証が本番と同じ動きをする ので、次のような対策を施す
- メール送信や通知機能無効化
- DBトリガー無効化
- 本番と同等の認証・認可プロセスを経ても正常系となるようにする
- 工数上できないなら、未認証・未認可で確認可能な機能に絞る
- etc.
余談
AWS 既存構成で試そうとした話
...
下のような AWS 構成でシャドーイングができるか、まず机上検証した
本番・検証のALB のターゲットグループ(VPC)が異なっていた為断念。代案を探す
- A案. VPC peering の導入
- B案. 下のような「リクエスト複製」
-
Traffic Repication Service
でForward Request for Shadowing
をシャドーイングするように、Staging ALB へ非同期リクエスト
-
までは出た。
この後はスケジュール・予算・その他色々の相談である
後続記事がなければ、余談はここまで