リリースからリリースを切り離す方法はありますか?


13

継続的な展開の1つの方法は、リリースから展開を切り離すことです。つまり、変更をすぐにアクティブ化せずに更新を展開します。

これにはを使用できることは知っていが、「非機能」の他の手法があるかどうか疑問に思っています。

たとえば、バグ修正のために機能切り替えを作成しますか?おそらくそうではなく、バグ修正はできるだけ早く展開する必要があると主張することができます。そして、バグ修正がリリースされた後、それをオフに切り替えたくないことは確かです。しかし、これは事実ですか?制御された方法でリリースするのは危険な変更かもしれません。また、予期しない副作用がある場合、ロールバックできると便利です。それでは、すべての変更に対する機能フラグはありますか?

そして、視覚的な変化はどうですか?たとえば、CSSの機能フラグのようなものを実装できますか?それは理にかなっていますか?


Pete Hodgsonは、バグ修正を含むさまざまな機能トグルのカテゴリ、およびそれらが適切な他の状況について広範囲に執筆しました。martinfowler.com/articles/feature-toggles.html
エフゲニー

回答:


7

ウェブアプリカテゴリのソフトウェアについては、あなたに応じてインフラ/ホスティングプロバイダなどデカップリングがあります全体に着信トラフィックを切り替えることができること(あるいは間でそれを分割する)実質的にあなたが言及変更のいずれかをカバーSWの異なる展開バージョン、:バグ修正、ビジュアルなど

通常、このようなサポートには機能の切り替えは必要ありません。また、アプリがモノリシックであっても、マイクロサービスに分割されていても適用可能です。

たとえば、GoogleのApp Engine Paasは、トラフィックの分割と移行をサポートしています。

トラフィックの分割から:

トラフィック分割を使用して、サービス内の2つ以上のバージョンにわたるトラフィックの割合の分布を指定できます。トラフィックを分割することで、バージョン間でA / Bテストを実行し、機能を展開するときのペースを制御できます。

トラフィックの移行から:

トラフィックの移行は、アプリケーションのサービス内のバージョン間でリクエストのルーティングを切り替え、1つ以上のバージョンから1つの新しいバージョンにトラフィックを移動します。


5

モノリスではスイッチに制限されますが、マイクロサービスアーキテクチャでは、サービスを提供するノードのすべての展開プール(ポッド)を分割できます。次に、プールのサブセットで新しく変更された製品の展開をアクティブにし、注意深く監視します。たとえば、トラフィックの15%に対して変更をアクティブにするなど、変更を展開するプールの量を選択することもできます。文献に「ローリング更新」と呼ばれる機能があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.