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
AWS AppConfigとOpenFeatureで手早く機能フラグを導入する[LT size...
Search
Arthur
November 26, 2024
Technology
860
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS AppConfigとOpenFeatureで手早く機能フラグを導入する[LT size] / CloudNative Days Winter 2024 船上LT会
https://cloudnativedays.connpass.com/event/334620/
Arthur
November 26, 2024
More Decks by Arthur
See All by Arthur
はじめてのグラフ信号サンプリング
arthur1
0
68
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
2.7k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
840
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
1.3k
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
3.1k
オブザーバビリティプラットフォームの企画からリリースまで──PO・TLから見るMackerelの裏側 / ”ユーザー体験”の起点となるUXとアプリ開発──トヨタ・Nissan・はてなのプロダクトと開発現場から見える、設計の多様なアプローチ【TECH DRIVERS Day1】
arthur1
0
190
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
770
デフォルトの16:9(960*540px)のケース / Google Slide Size Test
arthur1
0
5.3k
1920*1080pxに設定したケース / Google Slide Size Test
arthur1
0
5.2k
Other Decks in Technology
See All in Technology
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
160
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
200
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
150
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
JavaScript 研修 (2026)
recruitengineers
PRO
1
460
システム思考で問題に対処する
yussak
0
200
Cursor Meetup Sapporo - Cursor物語 続編
cocacola917
0
140
強化学習「理論」入門
enakai00
3
3.6k
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
20260801_スクフェス大阪
kgnkhkr
2
1.2k
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
430
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
Building Adaptive Systems
keathley
44
3.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
780
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
A Modern Web Designer's Workflow
chriscoyier
698
190k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
200
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
From π to Pie charts
rasagy
0
260
Transcript
AWS AppConfigとOpenFeature で手早く機能フラグを導入する [LT size] id:arthur-1 株式会社はてな 2024-11-26 CloudNative Days
Winter 2024 船上LT会
Arthurと申します 株式会社はてな Mackerel開発チーム 「オブザーバビリティの実現」チーム テックリード・プロダクトオーナー 𝕏: @Arthur1__ CNDW2024のOSS展示企画に参加して います。現地でお会いしましょう! 2
Mackerel作ってます 3
[LT size]? 本編にProposalを出していました(不採択) 1/4サイズで雰囲気だけでもお届けできればと思います より詳細に興味がある方は、本日の船上LT会もしくは CNDW2024の会場でぜひディスカッションしましょう! 4
Amazon ECS 上で動く マイクロサービスに 5
フィーチャーフラグ を導入したい 6
手っ取り早く 欲しい 7
業界の標準には 則りたい 8
自前で作り込むと 将来困るかも 9
フラグの更新と デプロイは 分離したい 10
アプリケーションの可用性 を落としたくない 11
外部のFFSaaS (Feature Flag as a Service) 新規契約する時間もない 12
🤔 13
💡 14
OpenFeature × AWS AppConfig 機能フラグ 15
登場人物 16
OpenFeature フィーチャーフラグの標準化を目指すプロジェクト CNCFのIncubating Projectsに採択されている https://openfeature.dev/ フィーチャーフラグの評価をするAPIを、特定のベン ダーに依存しない形で提供する 17
OpenFeature Client フィーチャーフラグのバックエンドに合わせて、Providerを 差し替える 18 Introduction | OpenFeature https://openfeature.dev/docs/reference (Licensed
under CC BY 4.0)
様々なProvider https://github.com/open-feature/go-sdk-contrib • 環境変数 • flagd • ConfigCat など、self-hosted /
SaaS問わず、様々なフィーチャ フラグバックエンド向けに用意されている 19
OpenFeatureのいいところ • 標準に統一することで、認知負荷が減らせる • 後述のAppConfigをやめて別のものにしよう、となって も、コードの差分はProviderを差し込むところだけ • 標準化により、「機能フラグはこういうことができるべ きだ」というラインが宣言されている ◦
フィーチャーフラグの仕組みを自作するにしても、 道標になる 20
AWS AppConfig 機能フラグ AWS AppConfig アプリケーションのデプロイを行わずとも、アプリケー ションの設定を調整できる、AWSのマネージドサービス 機能フラグという種類の「設定」では、フィーチャーフラグ に特化した形で構造化されたデータを扱える 21
AppConfig機能フラグの画面 22
AppConfig機能フラグの画面 23 各フラグの値をBooleanで設定できる
AppConfig機能フラグの画面 24 属性としてBoolean以外の情報も付与可能 有効/無効だけでなく制限値を定義する時に便利
バリアントも作れる 25 デフォルトはfalseだけど、このユーザーならtrue、と いうフラグも作れる
AppConfigのいいところ • AWSを利用している環境に導入しやすい • 可用性が十分ある。SLA 99.9% ◦ cf.) https://aws.amazon.com/jp/config/sla/ •
AppConfig機能フラグは、OpenFeatureにおける フラグ評価の各種概念と1対1でマッピングできる 26
OpenFeature×AppConfig OpenFeatureとAppConfigを組み合わせると、今回の ニーズに叶うソリューションになりそう! しかし現時点で、OpenFeature/AWSともに AppConfig向けのOpenFeature Providerを提供して いない! 27
じゃあ どうする? 28
ないなら 作ればいいじゃない 29
AWS AppConfig Provider https://github.com/Arthur1/openfeature-provid er-go-aws-appconfig/ AWS AppConfig機能フラグをバックエンドとする OpenFeature Go SDK向けProvider
今回具体的な実装には触れませんが、比較的簡単に作れました 30
構成図 31 AWS AppConfig Amazon ECS Task AWS AppConfig Agent
My App OpenFeature Go SDK AWS AppConfig Provider (自作) +
AppConfig Agentを経由 ECS/EKS/Lambda向けにAWS AppConfig Agentが提供され ている シンプルなHTTPコールで設定を取得できる 設定を一定期間キャッシュすることで、コストを削減&パ フォーマンスの劣化防止 ProviderとしてもAppConfigに直接APIを投げるのではなく、
AppConfig Agentに対してリクエストを投げている 32
コード例 33 // AppConfigのConfigurationに関する名前をセットして providerを実体化 provider := appconfigprovider.New("appName", "envName", "cfgName")
// 以降のコードは AppConfig Providerに依らない openfeature.SetProvider(provider) client := openfeature.NewClient("app") evalCtx := openfeature.NewTargetlessEvaluationContext(map[string]any{ "userID": "12345", }) isEnabled, err := client.BooleanValue(ctx, "feature1", false, evalCtx)
おしまい 34