Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AzureでFeature Flagの運用をしてみよう
Search
takas
February 02, 2025
Technology
0
41
AzureでFeature Flagの運用をしてみよう
2024年6月の.NETラボで発表した資料です。
デモのコード:
https://github.com/Takas0522/dotnetlab-demos/tree/main/2024/06
takas
February 02, 2025
Tweet
Share
More Decks by takas
See All by takas
インサイト情報からどこまで自動化できるか試してみた
takas0522
0
170
GitHub Codespacesの概要
takas0522
0
120
MCPのあれこれを認証込みで使いたい
takas0522
0
18
MCPのResourceにBlob Storageを使いたい
takas0522
0
19
Microsoft Season of Agent AI エージェントの使用開始
takas0522
0
190
(今更)WingetでPC移行をしたお話
takas0522
0
66
Microsoft Playwright TestingのReporting機能を使ってみる
takas0522
0
14
Windows TerminalでAIを使おう!
takas0522
0
44
Semantic KernelとStructured OutputsでAI Orchestrationしてみる
takas0522
0
220
Other Decks in Technology
See All in Technology
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
510
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
4
2.6k
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.5k
JSConf JPのwebsiteをGatsbyからNext.jsに移行した話 - Next.jsの多言語静的サイトと課題
leko
2
190
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
320
知覚とデザイン
rinchoku
1
620
【SORACOM UG Explorer 2025】さらなる10年へ ~ SORACOM MVC 発表
soracom
PRO
0
170
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
3
550
CLIPでマルチモーダル画像検索 →とても良い
wm3
0
470
QA業務を変える(!?)AIを併用した不具合分析の実践
ma2ri
0
160
AIを使ってテストを楽にする
kworkdev
PRO
0
210
.NET 10のBlazorの期待の新機能
htkym
0
150
Featured
See All Featured
A better future with KSS
kneath
239
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
130k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
620
Visualization
eitanlees
150
16k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
100
Transcript
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) AzureでFeature Flagの運用をしてみよう 2024.06 .NETラボ
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) 誰? Takas(@DevTakas) Angular / Azure /
.NET / CICD / Microsoft Graph Microsoft MVP M365
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) 本日のゴール • Feature Flagを効率よく運用できる方法をしる • ASP.NET
Core(汎用ホスト)を利用してFeature Flagを利用する • Azure App Configurationを使ってFeature Flagを管理する
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) そもそもなぜFeature Flagを利用したいのか • 開発はどんどんと展開させていきたい • 並行して複数の機能の開発も行いたい
• すでに展開しているサービスなのでリリースは慎重にしたい スピード感を維持した状態で リリース済の製品の開発を行いたい
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) やったこと①: トランクベース開発 • 基本mainブランチ一本のみでそこに開発を実施する • 派生ブランチは短命が望ましいがまだそこまではいかない
• 元々GitFlowだったがブランチ運用が複雑化しコンフリクトが 発生しまくって開発に影響が出てた • とはいえmainをそのままリリースできないのでリリースブラン チを切ったりしている https://trunkbaseddevelopment.com/ より
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) 困ったこと • リリースが…リリースができない…! • 結局リリースブランチに混ざったものが邪魔に •
レビュー後に修正発生したり…。 • Cherry Pickマージが結構複雑かつ膨大
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) と、いうわけでFeature Flagを使ってみましょう • Feature Flagとは •
コードを変更せずに新機能の公開を簡単に制御する仕組み • 新機能展開はトグルのON/OFFで行うため 新機能をコードにマージし続けることができる • 旧機能と新機能のコンフリクト部分を早めに発見できる • 影響範囲を最小限にした状態で新機能の展開が可能となる • A/Bテストやカナリアリリースなどのコントロールがしやすい
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) ASP.NETとFeature Flag • Microsoft.FeatureManagement というライブラリあり •
おなじみのIConfiguratiionからの参照からAzureの利用まで • DIでFeatureを参照することができ.NETのお作法に則って開発可能 • 標準でAction Attributeなどへの拡張もあるため拡張性も高い • Open Featureに則った運用はちょっと面倒かも?
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) ASP.NETとFeature Flag Program.cs "FeatureFlags": { "FeatureAddColumn":
false, "FeatureMaterial": false, "FeatureSearch": true }, duilder.Services.AddFeatureManagement(builder.Configuration.GetSection("FeatureFlags")); Program.cs appsettings.json
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) ASP.NETとFeature Flag public MyDataController(IFeatureManager featureManager) {
_featureManager = featureManager; // DIでFeatureインスタンス参照 } … [FeatureGate(“XXXXFlag”)] // Attributeでアクセス制御も可能に public async Task<ActionResult> Get() { // DIで読み込んだインスタンスからFeatureFlagの参照も可能 if (await _featureManagemnt.IsEnableAsync(“XXXXFlag”)) { … } } MyDataController.cs
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) Front(Angular)でFeature Flagを利用する • 基本的にAPIと同じフラグ運用になるかなということで WebAPIからFeature Flagを取得している。
• 都度フラグを参照するためにHttp通信するのは手間なので Angularのbootstrap時にInjectionTokenに食わせる運用 // WebAPI経由でFeatureFlagを取得している featureFlagOverride(environment.featureFlag).then((env => { bootstrapApplication(AppComponent, genAppConfig(env)) .catch((err) => console.error(err)); }));
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) AzureとFeature Flag • IConfigurationを利用できるが毎度環境変数を変更するのは手 間 •
Azure App ConfigurationのFeature Managerを利用する
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) デモ • コードの解説→デモ • 実装した機能 •
ただのリストを表示するアプリに検索機能を追加する • Microsoftのドキュメントにあるコードを動かしてみる • リストにカラムを追加してみる: ランダムフィルタ • 一部Materialデザインを導入してみる: ユーザー/グループフィルタ
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) Feature Flagのデメリット • 所詮ただのフラグ制御なのでテスト量は膨大になる • フラグの切り替え部分を共通化してテスト回せるとか
• 自動化しておくことで回帰テストを回避するか • フラグが増えると管理が大変になる(テストに通じる) • フラグのライフサイクルを定めてから運用を始めた方が良い • V1の期間…とか2スプリント後に削除する…とか
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) ブランチモデルはどうなるか(想像) Mainに雑にマージしてReleaseに持っていっても機能は有効化さ れない
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) 余談(時間が余れば) • ASP.NET Core WebAPIの話 •
Feature Flagを返却したり状態による場合分けはいいけどカナリアリ リースやA/Bテストのようなものは向かなそう(そもそも状態を持た ないのがベストなはずなので) • フロントエンドにFeatureの状態を返却するときにランダム値や他設定 値を使用してユーザーセッション内の状態を確定。フロントからはパ ラメーターや通信にフラグ状態を載せるのが良いところか
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) まとめ • 開発を加速する方法としてFeature Flagを使った開発が有効そ うということがわかった •
チームの文化や成熟度にもよる • ASP.NET CoreでのFeature Flagの運用方法を理解した • Microsoft.FeatureManagementを利用することで • Angularもちょっと • Azure App Configurationでコードの変更なしでフラグを書き換 えれることを理解した
Takas(@DevTakas) AzureでFeature Flagの運用をしてみよう(2024.06 .NETラボ) 参考文献 • Trunk Based Development •
https://trunkbaseddevelopment.com/ • Feature Flag Deep Dive • https://speakerdeck.com/biwashi/feature-flag-deep-dive • Feature Toggles (aka Feature Flags) • https://martinfowler.com/articles/feature-toggles.html • チュートリアル:ASP.NET Core アプリ内で機能フラグを使用する • https://learn.microsoft.com/en-us/azure/azure-app-configuration/use-feature-flags-dotnet-core • クイックスタート: Azure App Configuration で機能フラグを管理する • https://learn.microsoft.com/ja-jp/azure/azure-app-configuration/manage-feature-flags?tabs=azure-portal • チュートリアル: 機能フィルターを使用して条件付き機能を有効にする • https://learn.microsoft.com/ja-jp/azure/azure-app-configuration/howto-feature-filters • チュートリアル: 対象ユーザーに対して機能をロールアウトする • https://learn.microsoft.com/ja-jp/azure/azure-app-configuration/howto-targetingfilter