Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS AppConfigとOpenFeatureで手早く機能フラグを導入する[LT size...
Search
Arthur
November 26, 2024
Technology
940
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
140
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
3.7k
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
970
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
1.5k
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
3.5k
オブザーバビリティプラットフォームの企画からリリースまで──PO・TLから見るMackerelの裏側 / ”ユーザー体験”の起点となるUXとアプリ開発──トヨタ・Nissan・はてなのプロダクトと開発現場から見える、設計の多様なアプローチ【TECH DRIVERS Day1】
arthur1
0
220
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
820
デフォルトの16:9(960*540px)のケース / Google Slide Size Test
arthur1
0
5.8k
1920*1080pxに設定したケース / Google Slide Size Test
arthur1
0
5.7k
Other Decks in Technology
See All in Technology
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
320
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
200
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
510
会社紹介資料 / Sansan Company Profile
sansan33
PRO
31
430k
WasmをRustにする
sansantech
PRO
0
300
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
910
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
Local CI × GitHub Actions
gogutan
3
230
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
320
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
310
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
Building Applications with DynamoDB
mza
96
7.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
A Soul's Torment
seathinner
8
3.8k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Exploring anti-patterns in Rails
aemeredith
4
540
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
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