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

分割多変量テスト: マイクロサービス型システムにおける 干渉を回避した複数A/Bテストの実行方式/Seperated_MVT

00851927294532e0742c2c174730dff0?s=47 id
September 15, 2021

分割多変量テスト: マイクロサービス型システムにおける 干渉を回避した複数A/Bテストの実行方式/Seperated_MVT

2021年 電子情報通信学会 ソサイエティ大会

00851927294532e0742c2c174730dff0?s=128

id

September 15, 2021
Tweet

Transcript

  1. © Hitachi, Ltd. 2021. All rights reserved. 分割多変量テスト: マイクロサービス型システムにおける 干渉を回避した複数A/Bテストの実行方式

    2021年 電子情報通信学会 ソサイエティ大会 株式会社 日立製作所 研究開発グループ 井出 貴也
  2. © Hitachi, Ltd. 2021. All rights reserved. 1 1. 背景

    2. 先行方式 3. 提案方式 「分割多変量テスト」 4. 評価 5. 結論 目次
  3. © Hitachi, Ltd. 2021. All rights reserved. 背景 2

  4. © Hitachi, Ltd. 2021. All rights reserved. A/Bテスト ▪ 複数パターンのシステムをユーザに公開し、それぞれの反応を比較するテスト

    ▪ 施策の良否を評価し、プロダクトの改善に活かす 3 Original (青色ボタン) クリック率 10% Buy Variation 1 (赤色ボタン) クリック率 15% ユーザ Buy
  5. © Hitachi, Ltd. 2021. All rights reserved. マイクロサービスアーキテクチャ ▪ 複数の小さなサービスを連携させてシステムを構成する設計方式

    ▪ サービスごとに小さなチームが存在し、自律的に開発・運用 4 マイクロサービスアーキテクチャ型のシステム (以降マイクロサービスと呼称) 決済管理 サービスチーム 発注 サービスチーム 開発・運用 UI 決済 管理 商品 管理 商品 推薦 プッシュ 通知 ユーザ 管理 発注 開発・運用
  6. © Hitachi, Ltd. 2021. All rights reserved. マイクロサービスにてA/Bテストを行う際の問題 ▪ マイクロサービス上の複数チームが同じタイミングでA/Bテストを実施すると、

    テストの内容次第で互いの結果が干渉 ▪ しかし、同時に実行できるA/Bテストを一つに限定するのは避けたい ▪ 複数同時テストによる交互作用(相乗効果)も評価したい ◇ 例. 黒背景 + 黒文字 → 個々は問題ないが同時に適用すると読めない 5 ユーザ UI Original Variant 決済管理 Original Variant 商品管理 Original Variant 黒背景 適用 黒文字 適用 商品推薦 Original Variant Buy 干渉 干渉 干渉 交互作用 見落とし
  7. © Hitachi, Ltd. 2021. All rights reserved. 先行技術 6

  8. © Hitachi, Ltd. 2021. All rights reserved. Overlapping Experiment Infrastructure

    ▪ 複数同時のA/Bテストを実現する基盤 ▪ Cookieのハッシュをサービスごとに異なる除数で割ったときの剰余値を基に ユーザをOri・Varどちらに割振るか決定 → サービスごとにユーザの割振りパターンを独立させ、干渉の影響を排除 7 ユーザ Svc1 Svc2 Original Variant Ori Var サービスごとに割振りパターンを独立させる Svc4 Ori Var MOD 13 MOD 17 MOD 23 Tang, Diane., et al., “Overlapping experiment infrastructure: More, better, faster experimentation.” Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining. 2010. Svc3
  9. © Hitachi, Ltd. 2021. All rights reserved. Overlapping Experiment Infrastructure

    [TAB10] ▪ 複数同時のA/Bテストを実現する基盤 ▪ Cookieのハッシュをサービスごとに異なる除数で割ったときの剰余値を基に ユーザをOri・Varどちらに割振るか決定 → サービスごとにユーザの割振りパターンを独立させ、干渉の影響を排除 8 ユーザ Svc1 Svc2 Original Variant Ori Var サービスごとに割振りパターンを独立させる Svc4 Ori Var MOD 13 MOD 17 MOD 23 Tang, Diane., et al., “Overlapping experiment infrastructure: More, better, faster experimentation.” Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining. 2010. Svc3 <問題> ▪ 交互作用の影響を測定できない ▪ 組合せによってはA/Bテストの結果と他テストの交互作用の効果が混ざりうる
  10. © Hitachi, Ltd. 2021. All rights reserved. 多変量テスト (完全実施要因計画) 同時に実行されるA/Bテストの全組合せ

    パターンをテストする ▪ Svc1~4が2値のA/Bテストを行う場合、 16通りのテストケースを作成(右表) ▪ テストケースごとにトラフィックを振り分け、 サンプルを収集 ▪ 分散分析にて各A/Bテストの効果と 交互作用を算出 9 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O O V O 4 O O V V 5 O V O O 6 O V O V 7 O V V O 8 O V V V 9 Variant O O O 10 V O O V 11 V O V O 12 V O V V 13 V V O O 14 V V O V 15 V V V O 16 V V V V
  11. © Hitachi, Ltd. 2021. All rights reserved. 多変量テスト (完全実施要因計画) 同時に実行されるA/Bテストの全組合せ

    パターンをテストする ▪ Svc1~4が2値のA/Bテストを行う場合、 16通りのテストケースを作成(右表) ▪ テストケースごとにトラフィックを振り分け、 サンプルを収集 ▪ 分散分析にて各A/Bテストの効果と 交互作用を算出 10 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O O V O 4 O O V V 5 O V O O 6 O V O V 7 O V V O 8 O V V V 9 Variant O O O 10 V O O V 11 V O V O 12 V O V V 13 V V O O 14 V V O V 15 V V V O 16 V V V V <問題> ▪ 同時に実行されるテストが多くなるとテストケースが爆発。各テストケースに割り振れる トラフィックが減少するため、ユーザ数が少ないと結果算出に時間を要する
  12. © Hitachi, Ltd. 2021. All rights reserved. 一部実施要因計画 多少の交互効果の影響を許容し、多変量テ ストのうち一部の組合せのみテストケースとする

    ▪ テストケースを削減できるため、トラフィック を集中でき、テスト時間の短縮に寄与 ▪ テストケースとなる組合せは、直交表や ラテン方格実験、ランダムなどで抽出 11 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O V V O 4 O V V V 5 V O V O 6 V O V V 7 V V O O 8 V V O V 4種のA/BテストにL8直交表を適用 (テストケースが16→8に減少)
  13. © Hitachi, Ltd. 2021. All rights reserved. 一部実施要因計画 多少の交互効果の影響を許容し、多変量テ ストのうち一部の組合せのみテストケースとする

    ▪ テストケースを削減できるため、トラフィック を集中でき、テスト時間の短縮に寄与 ▪ テストケースとなる組合せは、直交表や ラテン方格実験、ランダムなどで抽出 12 # Svc 1 Svc 2 Svc 3 Svc 4 1 Original O O O 2 O O O V 3 O V V O 4 O V V V 5 V O V O 6 V O V V 7 V V O O 8 V V O V 4種のA/BテストにL8直交表を適用 (テストケースが16→8に減少) <問題> ▪ 複数チームが連携してテスト計画を立案する必要がありMSの自律性が損なわれる ▪ テストケースごとに収集するサンプルが異なり、トラフィック制御が複雑化
  14. © Hitachi, Ltd. 2021. All rights reserved. 技術課題 以下要素を満たす複数A/Bテスト実行方式の実現 1.

    他A/Bテストの影響を受けず、マイクロサービスの各チームが 自律的にA/Bテストを実行できる 2. 個々のA/Bテストに長大な時間を要しない 3. 交互作用を加味した評価ができる 13 既存技術の単純な適用では要件を満たさない。マイクロサービスの前提を置くことで、 Overlapping Experiment Infrastructureと多変量テストを上手く組合せられないか
  15. © Hitachi, Ltd. 2021. All rights reserved. 提案方式 「分割多変量テスト」 14

  16. © Hitachi, Ltd. 2021. All rights reserved. コンセプト ▪ 交互作用が強い群をサブセット化し、ピンポイントに多変量テストを適用

    ▪ それ以外はユーザトラフィックを直交させ、互いの影響を排除 ▪ 交互作用の強い群はマイクロサービスの接続関係やA/Bテストの属性をもとに抽出 15 サブセット トラフィックを 直交させること でサブセット外 の影響を排除 Svc2から見て 交互作用の強い テストをサブセット化 o v o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 Svc2を多変量テストで評価するには、 24=16通りのテストケースが必要 o v o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 22=4通りのテストケースで Svc2の多変量テストが可能
  17. © Hitachi, Ltd. 2021. All rights reserved. サブセット作成に利用する属性情報 以下情報からA/Bテストの影響の種別や範囲を判別する 位置情報

    ▪ 変更箇所:テストを実施するサービス ▪ 測定箇所:メトリクスの測定先となるサービス ◇ 例. 商品推薦機能:変更箇所→推薦サービス、測定箇所→UIサービス 与干渉要因 / 被干渉要因(それぞれ指定) ▪ 種別:ユーザ(外観、推薦機能など)、レイテンシ、エラー率、消費リソース ▪ 範囲:変更箇所のみ、測定箇所のみ、変更箇所ー測定箇所間、 変更箇所とその依存先、測定箇所とその依存先、など 16
  18. © Hitachi, Ltd. 2021. All rights reserved. 干渉の判定とサブセット化 以下手順で干渉を判定し、サブセットを構築する(下図はSvc2のサブセットを作成する例) 17

    Svc4 Svc1 Svc2 Svc3 Svc5 o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 種別: レイテンシ 対象テスト(Svc2)の被干渉 種別と与干渉種別が同じ テストを列挙 分散トレーシングや通信ログ からマイクロサービスの接続 関係グラフを作成 対象テスト(Svc2)の被干渉範 囲と与干渉範囲が重なるテスト をサブセットに選定 → Svc2とSvc3をサブセット化 Svc2の 被干渉範囲 o v Svc4 Svc1 Svc2 Svc3 o v o v Svc5 Svc3の 与干渉 範囲 Svc5の 与干渉 範囲 対象 ↓
  19. © Hitachi, Ltd. 2021. All rights reserved. 処理の流れ 1. マイクロサービス開発者がA/Bテスト実行時に属性情報を入力

    2. 入力された情報およびマイクロサービス間の接続関係から テストごとに1干渉するテストを検出し、サブセット化 3. 各A/BテストのOri・Varにはハッシュ値でトラフィックを振分け(=直交させる) 4. サブセット内のトラフィックの流れは分散トレースのログなどを用いて 多変量テストのテストケースごとに結果と紐付けてカウント 5. サブセット内のテストケースが統計的に十分なサンプルサイズになればテスト終了 18 1. 視点となるテストごとにサブセットが作られる。例えば、Svc1は[Svc1, Svc2, Svc3]のサブセットを作り、Svc2は[Svc1, Svc3]のサブセットを作るなどがある
  20. © Hitachi, Ltd. 2021. All rights reserved. 分割多変量テストのシステム構成案 19 サービスチーム

    エンドユーザ サービス1 Original サービス1 Variant プロキシ テスト対象の一部 トラフィック制御機能 (e.g., Istio) トラフィック 割振り サブセット 算出 結果 集計 テスト 評価 UI メトリクス収集機能 (e.g., Prometheus) 分散トレーシング機能 (e.g., Jaeger) 分割多変量テスト実行基盤 A/Bテスト 属性情報 結果 サービス 利用 ユーザハッシュでの トラフィック割振り指示 通信経路情報 対象メトリクス テスト結果 信頼度が一 定以上にな るまでテスト 継続 サブセットごとに 多変量テスト集計 属性情報より サブセット算出 赤文字 :提案システムのポイント
  21. © Hitachi, Ltd. 2021. All rights reserved. 評価 20

  22. © Hitachi, Ltd. 2021. All rights reserved. 必要サンプル数の差異 ▪ 多変量テストを1としたときの提案方式のサンプルサイズの割合を評価

    ◇ 効果量0.25、有効水準0.05、検定力0.95の分散分析を想定 ▪ 実行されるA/Bテスト数が多く、かつサブセット内のテストが少ないほど、提案方式は有利 ▪ サブセット化による精度への影響の評価は今後の課題 21 0 0.2 0.4 0.6 0.8 1 1.2 0 1 2 3 4 5 6 7 サンプルサイズの割合 同時に実行されるA/Bテストの数 サブセット o v o v o v o v 先行技術(多変量分析) 提案方式(サブセット内テスト4個) 提案方式(サブセット内テスト3個) 提案方式(サブセット内テスト2個) サブセット o v o v o v o v o v o v
  23. © Hitachi, Ltd. 2021. All rights reserved. まとめ 22

  24. © Hitachi, Ltd. 2021. All rights reserved. 結論 ▪ マイクロサービス内で複数チームが同時にA/Bテストを行うと結果が干渉しうる

    ▪ しかし、交互作用まで評価できる多変量テストではテストの時間が長大化 ▪ 交互作用を考慮しつつ各チームが自律的に実行可能なA/Bテスト方式 「分割多変量テスト」を提案 ◇ マイクロサービスの接続関係やA/Bテストの属性をもとに 交互作用が強い群をサブセット化し、ピンポイントに多変量テストを適用 ▪ 実行されるA/Bテスト数が多く、かつサブセット内のテストが少ないほど、 多変量テストに比べ提案方式は必要なサンプルサイズが減少することを確認 23
  25. © Hitachi, Ltd. 2021. All rights reserved. 商標 ▪ Grafanaは、Grafana

    Labsの米国またはその他の国における登録商標または商標です ▪ Istioは、Google LLCの米国における登録商標または商標です ▪ Prometheusは、The Linux Foundationの米国またはその他の国における登録商標または商標です ▪ Jaegerは、 The Linux Foundationの米国またはその他の国における登録商標または商標です ▪ その他記載の会社名、製品名、サービス名、その他固有名詞は、 それぞれの会社の商標または登録商標です ▪ 本発表中の文章、図では、TM、🄬マークは表記しておりません。 24
  26. None