実験展開と機能フラグ

実験ロールアウトのイシュー

各実験には、実験のロールアウトからクリーンアップ、削除までを追跡するための実験ロールアウトイシューが必要です。ロールアウトイシューは機能フラグのロールアウトイシューに似ており、実験のステータスを追跡するためにも使用されます。

実験がデプロイされたら、イシューの期限を設定します(これは実験によって異なりますが、数週間先まで可能です)。期限を過ぎたら、イシューは解決されなければなりません:

  • 実験が成功し、その実験が新しいデフォルトになります。
  • 成功しなかった場合、実験に関連するコードはすべて削除されます。

いずれの場合も、実験の結果を、その決定の理由とともにイシューに投稿してください。

すべての実験を停止

GitLab.com(SaaS)で全ての実験をオフにする必要がある場合、このコントロールがあります。

gitlab_experiment 機能フラグを使って SaaS での実験のオン・オフを切り替えることができます。

これはChatOpsから行うことができます:

  • 無効にします:/chatops run feature set gitlab_experiment false
  • 有効にします:/chatops run feature delete gitlab_experiment
  • これはYAML の default_enabled値 trueを有効にします。

機能フラグに関するメモ

note
私たちのドキュメント・スタイル・ガイドの推奨に反しているにもかかわらず、ここでは「enabled(有効)」と「disabled(無効)」という用語を使用しています。これは、機能フラグのドキュメントで使用されている用語だからです。

GitLab における機能フラグの概念についてはすでにご存じかもしれませんが、実験における機能フラグの使い方は少し異なります。一般的な用語では、機能フラグはonoff のどちらかと見なされますが、実験では正確ではありません。

一般的に、off は、機能フラグが有効かどうかを尋ねると、常にfalse を返すことを意味し、on は、常にtrueを返すことを意味します。中間状態であるconditionalconsiderも存在 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では、このプロセスやコミュニケーション方法を改善するための作業が行われています。