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

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

id
September 15, 2021

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

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

id

September 15, 2021
Tweet

More Decks by id

Other Decks in Technology

Transcript

  1. © Hitachi, Ltd. 2021. All rights reserved.
    分割多変量テスト: マイクロサービス型システムにおける
    干渉を回避した複数A/Bテストの実行方式
    2021年 電子情報通信学会 ソサイエティ大会
    株式会社 日立製作所
    研究開発グループ
    井出 貴也

    View Slide

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

    View Slide

  3. © Hitachi, Ltd. 2021. All rights reserved.
    背景
    2

    View Slide

  4. © Hitachi, Ltd. 2021. All rights reserved.
    A/Bテスト
    ▪ 複数パターンのシステムをユーザに公開し、それぞれの反応を比較するテスト
    ▪ 施策の良否を評価し、プロダクトの改善に活かす
    3
    Original (青色ボタン)
    クリック率 10%
    Buy
    Variation 1 (赤色ボタン)
    クリック率 15%
    ユーザ
    Buy

    View Slide

  5. © Hitachi, Ltd. 2021. All rights reserved.
    マイクロサービスアーキテクチャ
    ▪ 複数の小さなサービスを連携させてシステムを構成する設計方式
    ▪ サービスごとに小さなチームが存在し、自律的に開発・運用
    4
    マイクロサービスアーキテクチャ型のシステム
    (以降マイクロサービスと呼称)
    決済管理
    サービスチーム
    発注
    サービスチーム
    開発・運用
    UI
    決済
    管理
    商品
    管理
    商品
    推薦
    プッシュ
    通知
    ユーザ
    管理
    発注
    開発・運用

    View Slide

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

    View Slide

  7. © Hitachi, Ltd. 2021. All rights reserved.
    先行技術
    6

    View Slide

  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

    View Slide

  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テストの結果と他テストの交互作用の効果が混ざりうる

    View Slide

  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

    View Slide

  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
    <問題>
    ▪ 同時に実行されるテストが多くなるとテストケースが爆発。各テストケースに割り振れる
    トラフィックが減少するため、ユーザ数が少ないと結果算出に時間を要する

    View Slide

  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に減少)

    View Slide

  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の自律性が損なわれる
    ▪ テストケースごとに収集するサンプルが異なり、トラフィック制御が複雑化

    View Slide

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

    View Slide

  15. © Hitachi, Ltd. 2021. All rights reserved.
    提案方式 「分割多変量テスト」
    14

    View Slide

  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の多変量テストが可能

    View Slide

  17. © Hitachi, Ltd. 2021. All rights reserved.
    サブセット作成に利用する属性情報
    以下情報からA/Bテストの影響の種別や範囲を判別する
    位置情報
    ▪ 変更箇所:テストを実施するサービス
    ▪ 測定箇所:メトリクスの測定先となるサービス
    ◇ 例. 商品推薦機能:変更箇所→推薦サービス、測定箇所→UIサービス
    与干渉要因 / 被干渉要因(それぞれ指定)
    ▪ 種別:ユーザ(外観、推薦機能など)、レイテンシ、エラー率、消費リソース
    ▪ 範囲:変更箇所のみ、測定箇所のみ、変更箇所ー測定箇所間、
    変更箇所とその依存先、測定箇所とその依存先、など
    16

    View Slide

  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の
    与干渉
    範囲
    対象

    View Slide

  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]のサブセットを作るなどがある

    View Slide

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

    View Slide

  21. © Hitachi, Ltd. 2021. All rights reserved.
    評価
    20

    View Slide

  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

    View Slide

  23. © Hitachi, Ltd. 2021. All rights reserved.
    まとめ
    22

    View Slide

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

    View Slide

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

    View Slide

  26. View Slide