「機能フラグトグル」とは何ですか?また、いつ使用する(またはしない)のですか?


17

についての質問がいくつかありますfeature flag toggles

私の質問

  • (DevOpsのコンテキストで)実際に「機能フラグトグル」とは何ですか?
  • なぜ使用されるのですか?

3
参考情報ではなく、直接の回答- martinfowler.com/articles/feature-toggles.html
ケンMugrage

1
私は、下票の説明について「尋ねる」ことは一般的に受け入れられないことを知っています。しかし、この質問を匿名で下票した人は誰でも、これらの下票は安価であるため、そのような下票は価値がないことを知っています(下票はそうすることで-1を失いません)。回答の匿名downvotesは、しかし異なっている...などdownvoterトレースを残すん...
Pierre.Vriens

2
そして、この質問が実際には良い答えに値する素晴らしい質問であるにもかかわらず、誰かがなぜこの質問が「広すぎる」ために閉じられるべきであると感じたのかを知りたいです。
エフゲニー

Merci @Evgeny、私たちは同じページにいるように見えます...しかし、あなたは1つの投票が取り下げられたことに気づきましたか?おそらく、私の最新の編集のためです。
Pierre.Vriens

回答:


13

https://martinfowler.com/articles/feature-toggles.htmlのコンテンツを繰り返さずに、機能フラグのトグルが何であるかについての詳細な説明です。DevOpsの側面に焦点を当てます。

PuppetLabsによって作成された2014 State of DevOps Reportによると、ITパフォーマンスを測定するための4つの主要なメトリックがあります。

  • 変更のリードタイム
  • リリース頻度
  • サービスを復元する時間
  • 失敗率の変更

これらは組織全体のパフォーマンスにも貢献します。つまり、これらの指標でIT部門が優れた成果を上げている場合、収益はさらに多くの$$を獲得することになります。

継続的デリバリはこれらのメトリクスによって可能になり、Jez Humbleによる「継続的デリバリ:ビルド、テスト、展開の自動化による信頼性の高いソフトウェアリリース」の本で詳しく説明されています。

Continuous Deliveryのコンテキストでは、Continuous Deploymentとそれを区別する重要な違いがあります。そして、それが機能のリリースをいつ行うか(顧客へ)の決定です。

変更のサイズを小さく保ち、機能フラグをオフにして本番システムに中途半端な機能を展開(コードのコピー)すると、変更のリードタイムを短縮できます

機能が最終的に完成したら、リリースを行うかどうかはビジネスに委ねられます。新しい機能のリリースは、マーケティングやモバイルアプリの機能のようなビジネスの別の部分でのリリースと整合する必要があるかもしれません。

機能は、A / B実験を使用して、顧客ベースの一部のみ、または特定の人々にリリースできます。また、一般提供(GA)に直接送信することもできます。GAへのリリースは多くの場合、期待どおりに機能する十分な確実性が得られた後にのみ行われます。これは事実上、リリース頻度が高くなることに影響すると主張するかもしれません。

リリースデプロイのこの分離は、機能フラグのトグルなしでは達成することはほとんど不可能です。

当然、機能をオフに切り替えるために展開が必要ない場合、サービスを復元する時間が大幅に短縮されます。

また、機能を顧客ベースの小さなスライスにリリースする機能フラグを使用することにより、変更失敗率メトリックも大幅に改善できます。


したがって、機能フラグトグルと呼ばれる単純なメカニズムにより、ITパフォーマンスが大幅に向上し、組織全体のパフォーマンスが向上します。

これが実際の企業でどのように行われるかについての素晴らしい例は、Flickr(このテーマに関する最初の公開投稿)とEtsyで見つけることができます。しかし、Spotifyビデオの有名なエンジニアリング文化など、他の多くの人々がこの手法を採用し、それについて長々と語っています。

Etsyは、Catapultと呼ばれる機能フラグを管理するための内部ツールをウェブ上で見られる複数のプレゼンテーションで披露しています。Intuit は、機能フラグの管理に役立つWasabi呼ばれるオープンソースツールをリリースします。


この興味深い/詳細な答えに対するMerci ...ただし、リンクされている記事は、「機能フラグの切り替え」ではなく「機能切り替え」に関するものです(最初の段落で書いたとおり)。それらは同義語であることに同意しますか?そうでない場合、違いは何ですか?また、「A / B実験」とは何ですか(A = AfterおよびB = Before?おそらくそうではありません...)。
Pierre.Vriens

1
これらは同義語であることに同意します。名前を明確にしようとするだけなので、あいまいさはありません。「a / b実験とは」それ自体が問題だと思いますが、簡単な答えは、「Etsy見せびらかす」リンクのように、相互に測定される2つのバリエーションであるということです。または、en.wikipedia.org / wiki / A / B_testingで
エフゲニー

OK、それは私が待ち望んでいた/期待していた最後の仕上げなので、「受け入れる」。
Pierre.Vriens

; "( -おそらく、この超クールなDevOpsチームSEサイトであることを求めることができますか?Aは前に=後=とB ")A / Bテスト:"何も" Pierre.Vriens @
ダンCornilescu

1

Ken Mugrageが私の質問の下に興味深いコメントを投稿し、「機能の切り替え」の説明を説明するリンクと、その概要を以下に示します。

機能の切り替えは強力な手法であり、チームはコードを変更せずにシステムの動作を変更できます。これらはさまざまな使用カテゴリに分類されますが、トグルを実装および管理するときには、そのカテゴリを考慮することが重要です。トグルは複雑さをもたらします。スマートトグルの実装方法と適切なツールを使用してトグル構成を管理することで、この複雑さを抑えることができますが、システムのトグルの数を制限することも目指してください。

上記の要約は、これが何であるかを理解するのに役立つだけでなく、それらがなぜ使用されているのかを説明するいくつかの例を含んでいます。そして、それをもう少し詳しく調べてみると、「機能の切り替え」と「機能フラグの切り替え」は互いにほぼ同義語のようです。

しかし、問題の解決策(答え)(質問)は、問題を変えます...次のような関連する質問をするかもしれません:

  • それらを使用することの長所/短所は何ですか?それは強力な概念ですが、賢明に使用されない(そして適切に保護されていない)場合は怖いものでもあります...
  • それらが使用されるいくつかの例(良い例と悪い例)は何でしょうか?それらの多くを考えることができますが、そのうちのいくつかはかなり前に自分自身を使用しました(DevOpsは以前からのものでした)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.