機能フラグの切り替えは良いアイデアであり、開発者が記述するコードに実装する必要があると仮定します。例えば、Etsy は彼らの文化の大部分として彼らに誓います。
機能フラグトグルの使用を開始するように開発者を説得する(そして強制する)良い方法は何ですか?
機能フラグトグルの詳細については、Q:機能フラグトグルの使用方法、Q:機能フラグトグルとは何か、およびMartin Fowlerのブログのテーマに関する Pete Hodgsonの記事で説明されています。
機能フラグの切り替えは良いアイデアであり、開発者が記述するコードに実装する必要があると仮定します。例えば、Etsy は彼らの文化の大部分として彼らに誓います。
機能フラグトグルの使用を開始するように開発者を説得する(そして強制する)良い方法は何ですか?
機能フラグトグルの詳細については、Q:機能フラグトグルの使用方法、Q:機能フラグトグルとは何か、およびMartin Fowlerのブログのテーマに関する Pete Hodgsonの記事で説明されています。
回答:
機能トグルは、開発をリリースから切り離すため、高速開発では一般的な方法です。 開発チームは、新しい機能を無効な状態で本番環境に「ソフトリリース」できます。これにより、いつでも機能をリリースできます。機能が他の作業または準備に依存している場合、メジャーリリースが実稼働するのを待つ必要はありません。
開発者がそれらを使用するように「納得させる」限り、それは提供する自由を主張するための練習です。私の経験では、開発者にとって難しい販売ではありません。新しいことを試みることをためらう傾向があるのは管理です。これを試して:
理想的な世界では、新しいビルドとサプライズを展開すると思います!何も変更しません。これは、すべての新しい機能が、スイッチをオフにした状態で消えるスイッチの背後にあるためです。
展開後、ロールアウトサービスが引き続き機能すること、電話が鳴っていないことを確認します(電話の鳴動が目的でない限り)など。既知の安定した操作に戻ったら、有効化と確認を開始します。新しくデプロイされた機能。
答えは次のとおりです。当社のサイトとサービスは堅実に安定しているため、電話をかけるのは事実上簡単であり、ユーザーは私たちを愛しているチームにどのように働きたいですか?
それが私が働きたいチームです。
必要に応じてここで読むのをやめることができます。
機能スイッチの背後にすべてを置くと、どこでもスパゲッティコードにつながる可能性があるようです。IoCを使用し、vNow / vNext / vPreviousのいずれかを選択できる場合は、構成を維持することになります。はい、より多くのチェックイン、より多くのクラス(componentV1、componentV2、componentV3など)がありますが、実際にはより安定したシステムがありますか?どうやって?vNextは不安定ですか?コントロールタワーでvNowに戻ります。1週間で、vNowには微妙なバグがありますか?同じこと-同様に簡単にvPreviousに戻ります。
面倒、心配、睡眠不足、ストレスはありません。
これは単なる夢ではありません。私はそこで働いていました。これを現在のチームに販売したいです。
成功する高速開発環境は通常、品質の検証と回帰を引き起こす障害のある変更の検出と拒否を含む非常に厳密な自動化システムに依存しています。
機能トグルにより、統合ブランチでのリグレッションの原因として拒否されることなく、進行中のテストされていない変更をコミットすることができます。機能を導入する非常に優れたインセンティブを構成するのは、機能の寿命の非常に早い段階です。
真のCIから逸脱し、機能ブランチで機能開発を移動することの欠点の1つは、そのようなインセンティブがないことです。機能分岐を後で追加することは、後の統合のように、機能分岐を統合分岐にマージすることが一般的に難しい場合です。
開発者(および通常は開発マネージャー)は、通常、フレームワークに関連する2つの結果、つまり管理の容易さと展開の速度を探します。コードをより速く、より簡単に出荷したい。
アプローチが機能するという証拠を提供します。以前の方法ではなく、機能フラグを使用して小さなPOCを構築してみてください。ケーススタディは、戦略的な人々(中間管理者\製品設計者)よりも、戦術的な人々(開発者\エンジニア)にとって重要ではありません。
機能を切り替える理由は、開発者が決定するものではありません。これは、製品の所有者が気にするものです。開発者は、この変更を最も持続可能で安全な方法で有効にします。私はこの質問を批判します。