2
2

シャドウトラフィックテスト(シャドーイング)

Last updated at Posted at 2024-08-27

シャドウトラフィックテストとは

Webシステムテスト手法の一つ

「本番環境へのリクエストを、検証環境へミラーリング(分割 or 転送)」することで

負荷テスト・リグレッションテストを実施できる

A/B テストをシステムテスト特化したものと考えれば良い

別名は シャドーイング, シャドーテスト, shadowing, traffic shadowing, shadow traffic test

( 以降「ミラーリング」をシャドーイングと表記する )

構築イメージ

下図の通り、本番から検証へリクエストをシャドーイングする

シャドーイング手法(転送, 分割, etc.) はロードバランサーの仕様に依存する

shadow_traffic_01.png

テスト時の留意点

(1) 「シャドーイングの重みづけ」を適量にする

例えば分割でやる場合、どの重みづけでやるかをテスト目的で決める

( nginx では split_clients の割合を指す )

(2) 本番リクエストへの影響を限りなく抑える

ロードバランサーの性能が、全く落ちないとは言い切れない

なので

  • 第一検証環境(本番扱い)
  • 第二検証環境(検証扱い)

の2環境で、事前に負荷をかけて確認をする

(3) 検証環境では、ロードバランサーから先を機能制限する

検証が本番と同じ動きをする ので、次のような対策を施す

  • メール送信や通知機能無効化
  • DBトリガー無効化
  • 本番と同等の認証・認可プロセスを経ても正常系となるようにする
    • 工数上できないなら、未認証・未認可で確認可能な機能に絞る
  • etc.

余談

AWS 既存構成で試そうとした話

...

下のような AWS 構成でシャドーイングができるか、まず机上検証した

本番・検証のALB のターゲットグループ(VPC)が異なっていた為断念。代案を探す

shadow_traffic_02.png

  • A案. VPC peering の導入
  • B案. 下のような「リクエスト複製」
    • Traffic Repication ServiceForward Request for Shadowing をシャドーイングするように、Staging ALB へ非同期リクエスト

までは出た。

shadow_traffic_03.png

この後はスケジュール・予算・その他色々の相談である

後続記事がなければ、余談はここまで

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2