機能管理は、機能リリースをコード デプロイから切り離し、必要に応じて機能の可用性を迅速に変更できるソフトウェア開発手法です。 機能フラグという技術を用いて、機能のライフサイクルを動的に管理し、機能のオン・オフ、特定のユーザーへのターゲット設定、段階的な展開などが可能で、アプリケーションを再デプロイせずに済みます。
主な機能
Azure App Configuration Feature Managementは、達成したいことに基づいて、スイッチ、ロールアウト、実験の3つの主要な機能フラグ使用シナリオをサポートしています。 各シナリオは共通の機能管理目標に対応し、単純なオン/オフの切り替えからターゲットを絞ったパーセンテージの展開、多変量実験まで、さまざまな機能を解放します。 3つのシナリオすべてにおいて、機能フラグの影響を監視・分析することで、機能がアプリケーションの指標に与える影響を把握できます。 以下のセクションを使って、個々のフィルターや条件、バリアントの詳細に入り込む前に、目標に合ったシナリオを選んでください。
スイッチ(オン/オフ)
使用時: すべてのユーザーに対して、シンプルで即座にオン/オフのコントロールが必要です。
機能:
- インスタントキルスイッチ – コードの再デプロイなしで、問題を起こした機能や依存関係を数秒で無効化できます
- 運用切り替え – メンテナンスモードなどの一時的な状態を、必要に応じてオンまたはオフにする
例えば、あるチームがSwitchフラグの背後に新しいチェックアウトアルゴリズムを「 EnableNewCheckout」と付けています。 起動後にエラー率が急上昇した場合、オンコールエンジニアがフラグをオフにし、すべてのユーザーはコードの再デプロイなしに即座に前のチェックアウトフローに戻ります。 同じフラグタイプは、運用上のトグルとしてもよく機能します。例えば、データベース移行前にオペレーションチームがオンにし、移行完了後にオフにする MaintenanceMode フラグなどです。
参考資料:
Rollout
使用時: 機能をある程度のユーザーや特定のユーザー、グループに徐々に公開してから、一般に提供したいのです。
機能:
- 割合ベースの段階的リリース – 機能をトラフィックのごく一部に対して公開し、その割合を時間をかけて徐々に増やす(カナリアリリースまたは段階的ロールアウト)ことで、リスクを軽減します
- ターゲットアクセス – 特定のユーザー、グループ、または地域、デバイスタイプ、サブスクリプションティアなどのカスタム属性のみの機能を有効化します
- スケジュールベースのアクティベーション – 指定された時間枠内で機能を自動でオンまたはオフする
- 構成ロールアウト – フラグ内で設定を提供し、新しい展開なしでフラグ展開に合わせてアプリが動作を調整できるようにします。
例えば、新しい EnableNewCheckout フラグを導入するチームは、デフォルトのパーセンテージを5%から始め、グループオーバーライドを使って内部QAやベータテスターグループを100%に含め、レガシーアカウントを除外することがあります。 その後数日間で、デフォルトのパーセンテージを25%、次に50%、さらに100%に上げ、誤差指標を監視しています。 メンテナンス期間が過ぎると自動的に機能がオフになるスケジュールを追加するかもしれません。
設定ロールアウトはブール値を超えて対応できます。例えば、EnableNewCheckoutフラグに{"theme":"dark"}付けて、アプリが新しいテーマを有効と評価したときにのみ新しいテーマを認識させることができます。 この構成は、一般的なApp Configurationキー値とは異なり、どのフラグの評価された状態にも紐づいていません。
参考資料:
実験
使用時: 複数のバージョンや バリアントを比較し、どれが最も良いかを測りたいのです。
機能:
- A/Bテスト – 2つ以上の特徴のバリアントを比較する
- バリアント間のトラフィック配分 – 各バリアントにどれだけのユーザーを露出させるかを制御する
例えば、チェックアウトページの2つのバージョンをテストするチームは、 Control と NewDesign のバリアントを持つバリアント機能フラグを作成し、それぞれにユーザーの半分を割り当てます。
参考資料:
影響を監視・分析する
使用時: 特徴フラグがどのように評価されているかを確認し、そのバリエーションがアプリケーションにとって重要な指標に影響を与えるかどうかを理解したいのです。
機能:
- 機能フラグイベントを収集・表示 – アプリが送信する評価イベントをキャプチャーし、評価数、ユニークユーザー、バリアントや割り当て理由の分布をAzure App Configurationポータルのテレメトリータブで直接確認できます。
- メトリクススコアカードで影響を分析(プレビュー) – アプリケーションがアプリケーションインサイトに送信する標準およびカスタムテレメトリーを自動的に分析し、バリアント間で統計的に有意な差を示す指標を、カスタムクエリを書かずに表示します。
例えば、チェックアウトページの実験を続けると、各フラグ評価でテレメトリイベントが発生し、チームはAzure App Configurationポータルのテレメトリタブを確認して、ControlとNewDesign間のトラフィック分配が期待通りに動作しているかを確認します。 同じタブでメトリクススコアカードを開くと、 NewDesign バリアントはカスタム PurchaseCompleted 指標で統計的に有意な改善を示し、ページ読み込み時間に有意な回帰はありませんでした。 スコアカードの 「影響あり 」と 「決定的でない 」グループ分けは、チームが一目で結果を確認できるようにしています。 彼らは評価イベントと完了した購入を関連付けるなど、より深く見るためにアプリケーションインサイトを掘り下げることも可能です。
参考資料:
次のステップ
機能フラグを効果的に使うには、アプリケーション内で使われているすべての機能フラグを外部化し、アプリケーション自体を改変・再デプロイせずに状態を変えられるようにする必要があります。 Azure App Configurationは機能フラグの集中リポジトリを提供します。Switch、Rollout、Experimentフラグを定義し、それらの状態を迅速かつ自信を持って管理し、その後、プログラミング言語やフレームワークのApp Configuration ライブラリを使って実行時に機能フラグ評価を追加できます。
クイックスタートから始めましょう
アプリに機能フラグ評価を追加するには、アプリケーションの言語やプラットフォームに特化したクイックスタートを進めてください。
- ASP.NET Core
- Aspire
- .NET/.NETフレームワーク
- .NET バックグラウンド サービス
- Java Spring
- Python
- JavaScript
- Go
- GoGin
- Azure Kubernetes サービス
- Azure Functions
機能フラグの作成と管理
- 機能フラグを作成する:Azureポータルでスイッチ、ロールアウト、実験機能フラグを作成・管理します。
RolloutとExperimentの機能をさらに深く掘り下げましょう
- 機能フィルターを使用して条件付き機能を有効にする
- 機能をスケジュールに従って有効にする
- 対象ユーザーに対して機能をロールアウトする
- バリアント機能フラグの使用
- 特徴フラグのテレメトリを有効にする
- 特徴フラッグイベントを見る
- 特徴フラグの影響を分析する
クライアントライブラリとSDK
Azure App Configurationは、複数の言語やプラットフォーム向けの機能管理ライブラリを提供します。 各ライブラリにはNuGet、npm、PyPI、またはMavenのパッケージやサンプルが含まれています。 サポートされているライブラリの全リストおよびリリースノートについては 、Feature Management Overviewをご覧ください。