についての質問がいくつかありますfeature flag toggles
。
私の質問:
- (DevOpsのコンテキストで)実際に「機能フラグトグル」とは何ですか?
- なぜ使用されるのですか?
についての質問がいくつかありますfeature flag toggles
。
私の質問:
回答:
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と呼ばれるオープンソースツールをリリースします。
Ken Mugrageが私の質問の下に興味深いコメントを投稿し、「機能の切り替え」の説明を説明するリンクと、その概要を以下に示します。
機能の切り替えは強力な手法であり、チームはコードを変更せずにシステムの動作を変更できます。これらはさまざまな使用カテゴリに分類されますが、トグルを実装および管理するときには、そのカテゴリを考慮することが重要です。トグルは複雑さをもたらします。スマートトグルの実装方法と適切なツールを使用してトグル構成を管理することで、この複雑さを抑えることができますが、システムのトグルの数を制限することも目指してください。
上記の要約は、これが何であるかを理解するのに役立つだけでなく、それらがなぜ使用されているのかを説明するいくつかの例を含んでいます。そして、それをもう少し詳しく調べてみると、「機能の切り替え」と「機能フラグの切り替え」は互いにほぼ同義語のようです。
しかし、問題の解決策(答え)(質問)は、問題を変えます...次のような関連する質問をするかもしれません: