機能の分岐に代わるものは、機能の切り替え (つまり、機能を使用可能にするかどうかを切り替えるコード内のスイッチ) です。この点で、それらは非常に役立ちます。新しい機能を開発して展開できるようにすることができますが、トグルが...うまくトグルされた場合にのみ利用できます (一言で言えば)。グーグルラボのアイデア全体のようなものだと思います。
ここで注意すべき点は、これらのトグルが開発中に慎重に検討およびテストされていない場合、これらのトグル自体もドラマを引き起こす可能性があるということです。機能を有効または無効にした状態での動作を確認するために実行する必要があるテストの量を事実上増やしています。開発中の機能が複数ある場合は、それらすべてが有効/無効状態のさまざまな組み合わせとどのように相互作用するかを確認する必要があります。
とはいえ、うまく行けば、大きなメリットも得られます。すべての人に影響を与えることなく、特定のユーザー (パワー ユーザー、または機能の擁護者など) に機能をリリースできます。それが問題を引き起こしていると考えられる場合は、何らかの構成要素の存在の DB レコードを変更することで無効にすることができます。
特定の機能がマスターを通過したと見なされたら、トグルを削除してアプリケーション全体の一部にすることをお勧めします。
そうは言っても、機能の分岐が悪いとは思いませんが、ソース管理とマージの概念を全員が理解し、分岐がメイン分岐から外れすぎて 1 つの大規模な OMG タイプが発生しないようにすることに依存しています。マージ。
私は最近、Thoughtworks が主催する会議に出席し、Martin Fowler がまさにこのトピックについて議論しました。講演では、継続的デリバリーと、これが遅くてリスクのある展開を克服する方法に焦点が当てられました。詳細については、 http: //www.thoughtworks.com/events/thoughtworks-continuous-delivery-devops を参照するか、継続的配信を検索してください。