機能フラグトグルの使用を開始するように開発者を説得する方法


20

機能フラグの切り替えは良いアイデアであり、開発者が記述するコードに実装する必要があると仮定します。例えば、Etsy は彼らの文化の大部分として彼らに誓います。

機能フラグトグルの使用を開始するように開発者を説得する(そして強制する)良い方法は何ですか?

機能フラグトグルの詳細については、Q:機能フラグトグルの使用方法Q:機能フラグトグルは何か、およびMartin Fowlerのブログのテーマに関する Pete Hodgsonの記事で説明されています。


devops.stackexchange.com/questions/4/…質問のナローバージョン。
エフゲニー

1
おっと、私はあなたに新しいコメント(そして更新)を見るだけです。それらについての新しい質問を投稿したばかりです。私の新しい質問への回答を投稿したいかもしれません(実際にこれらのことを説明するためのより多くのスペースがあります)?その場合は、リンクのみの回答ではないことを確認してください(SEサイトでの意味を知っていると思いますよね?)。
Pierre.Vriens

回答:


18

機能トグルは、開発リリースから切り離すため、高速開発では一般的な方法です。 開発チームは、新しい機能を無効な状態で本番環境に「ソフトリリース」できます。これにより、いつでも機能をリリースできます。機能が他の作業または準備に依存している場合、メジャーリリースが実稼働するのを待つ必要はありません。

開発者がそれらを使用するように「納得させる」限り、それは提供する自由を主張するための練習です。私の経験では、開発者にとって難しい販売ではありません。新しいことを試みることをためらう傾向があるのは管理です。これを試して:

  • 機能切り替えフレームワークを見つけます。管理/ビジネスは、一般的なシステムでサポートされているものを試してみる方が受け入れやすい場合があります
  • 小さく始めます。トグルシステムを試用して、その有用性を実証する機能を紹介します。
  • A / Bテストを行うトグルの機能を示します。Webファームのサブセットのトグルを有効にして、動作に関するメトリックを収集します。ページレイアウトのわずかな違いは、小売アプリケーション(Ebay、Amazonなど)の収益に大きな影響を与えることが実証されています

2
フレームワークビットの+1。私はあまりにも多くの人が独自の機能トグルをロールバックするのを見てきましたが、それは常に厄介で厄介なコードです。
Jduv

フレームワークのビットについては、Wasabi github.com/intuit/wasabi
Evgeny

他の開発者を説得するための本の推奨-テレンス・ライアンによる技術的変化の
推進-Liath

8

理想的な世界では、新しいビルドとサプライズを展開すると思います!何も変更しません。これは、すべての新しい機能が、スイッチをオフにした状態で消えるスイッチの背後にあるためです。

展開後、ロールアウトサービスが引き続き機能すること、電話が鳴っていないことを確認します(電話の鳴動が目的でない限り)など。既知の安定した操作に戻ったら、有効化と確認を開始します。新しくデプロイされた機能。

答えは次のとおりです。当社のサイトとサービスは堅実に安定しているため、電話をかけるのは事実上簡単であり、ユーザーは私たちを愛しているチームにどのように働きたいですか?

それが私が働きたいチームです。

必要に応じてここで読むのをやめることができます。

機能スイッチの背後にすべてを置くと、どこでもスパゲッティコードにつながる可能性があるようです。IoCを使用し、vNow / vNext / vPreviousのいずれかを選択できる場合は、構成を維持することになります。はい、より多くのチェックイン、より多くのクラス(componentV1、componentV2、componentV3など)がありますが、実際にはより安定したシステムがありますか?どうやって?vNextは不安定ですか?コントロールタワーでvNowに戻ります。1週間で、vNowには微妙なバグがありますか?同じこと-同様に簡単にvPreviousに戻ります。

面倒、心配、睡眠不足、ストレスはありません。

これは単なる夢ではありません。私はそこで働いていました。これを現在のチームに販売したいです。


4

成功する高速開発環境は通常、品質の検証と回帰を引き起こす障害のある変更の検出と拒否を含む非常に厳密な自動化システムに依存しています。

機能トグルにより、統合ブランチでのリグレッションの原因として拒否されることなく、進行中のテストされていない変更をコミットすることができます。機能を導入する非常に優れたインセンティブを構成するのは、機能の寿命の非常に早い段階です。

真のCIから逸脱し、機能ブランチで機能開発を移動することの欠点の1つは、そのようなインセンティブがないことです。機能分岐を後で追加することは、後の統合のように、機能分岐を統合分岐にマージすることが一般的に難しい場合です。


2

開発者(および通常は開発マネージャー)は、通常、フレームワークに関連する2つの結果、つまり管理の容易さと展開の速度を探します。コードをより速く、より簡単に出荷したい。

アプローチが機能するという証拠を提供します。以前の方法ではなく、機能フラグを使用して小さなPOCを構築してみてください。ケーススタディは、戦略的な人々(中間管理者\製品設計者)よりも、戦術的な人々(開発者\エンジニア)にとって重要ではありません。


0

機能を切り替える理由は、開発者が決定するものではありません。これは、製品の所有者が気にするものです。開発者は、この変更を最も持続可能で安全な方法で有効にします。私はこの質問を批判します。


開発者が製品の所有者である組織に所属しています。製品管理が製品所有者のように振る舞うのを何度か見ました。そして、私は誰も何も所有していないような場所でした。したがって、あなたの声明は私の経験の約3分の1に当てはまります。開発者が本番環境でより適切に機能するように物事を書くように奨励することは、私にとって一般的に良いことのように思えます。あなたの見解を支持する当局を引用できますか?
ひよこ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.