実験展開と機能フラグ
実験ロールアウトのイシュー
各実験には、実験のロールアウトからクリーンアップ、削除までを追跡するための実験ロールアウトイシューが必要です。ロールアウトイシューは機能フラグのロールアウトイシューに似ており、実験のステータスを追跡するためにも使用されます。
実験がデプロイされたら、イシューの期限を設定します(これは実験によって異なりますが、数週間先まで可能です)。期限を過ぎたら、イシューは解決されなければなりません:
- 実験が成功し、その実験が新しいデフォルトになります。
- 成功しなかった場合、実験に関連するコードはすべて削除されます。
いずれの場合も、実験の結果を、その決定の理由とともにイシューに投稿してください。
すべての実験を停止
GitLab.com(SaaS)で全ての実験をオフにする必要がある場合、このコントロールがあります。
gitlab_experiment
機能フラグを使って SaaS での実験のオン・オフを切り替えることができます。
これはChatOpsから行うことができます:
- を無効にします:
/chatops run feature set gitlab_experiment false
- を有効にします:
/chatops run feature delete gitlab_experiment
- これはYAML の
default_enabled
の値 trueを有効にします。
機能フラグに関するメモ
GitLab における機能フラグの概念についてはすでにご存じかもしれませんが、実験における機能フラグの使い方は少し異なります。一般的な用語では、機能フラグはon
かoff
のどちらかと見なされますが、実験では正確ではありません。
一般的に、off
は、機能フラグが有効かどうかを尋ねると、常にfalse
を返すことを意味し、on
は、常にtrue
を返すことを意味します。中間状態であるconditional
considerも存在 conditional
します。conditional
私たちは、この機能フラグの3値状態を利用します。この conditional
点をconditional
理解するために conditional
、これらの設定のいずれかが機能フラグをこの状態にすると考えてください:
-
percentage_of_actors
、0%より大きいパーセントを設定。 - 単一のユーザーまたはグループに対して有効にします。
条件付きとは、true
を返す場合もありますが、そうでない場合もあるということです。
機能フラグが無効(状態がoff
であることを意味する)の場合、実験は_無効と_みなされます。これをデシジョンツリーダイアグラムで視覚化すると、最初のノード(Running?
)に到達し、 負の経路をたどることになります。
機能フラグがpercentage_of_actors
などにロールアウトされると(状態が であることを意味します)、conditional
実験は_実行_中 conditional
とみなされconditional
、コントロールが割り当てられることもあれば、候補が割り当てられる conditional
こともあります。conditional
ここでは、このことをenabled(有効)とは言いません。実験用語では、実験は_実行_中で、機能フラグは. conditional
機能フラグが有効なとき(状態がon
)、候補は常に割り当てられます。
このため、機能フラグをconditional
に設定するまでは、_非アクティブな_実験となります。その後、実験は_実行中_とみなされます。機能フラグを “enable “にした場合、実験からオプトアウトしない限り、全員に候補者が割り当てられるので、実験は_解決_したと考えるべきです。
GitLab 13.10では、このプロセスやコミュニケーション方法を改善するための作業が行われています。