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
830
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
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
910
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
750
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
1.3k
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
2.1k
オブザーバビリティプラットフォームの企画からリリースまで──PO・TLから見るMackerelの裏側 / ”ユーザー体験”の起点となるUXとアプリ開発──トヨタ・Nissan・はてなのプロダクトと開発現場から見える、設計の多様なアプローチ【TECH DRIVERS Day1】
arthur1
0
160
オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い / Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編
arthur1
0
730
デフォルトの16:9(960*540px)のケース / Google Slide Size Test
arthur1
0
5k
1920*1080pxに設定したケース / Google Slide Size Test
arthur1
0
5k
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
1.1k
Other Decks in Technology
See All in Technology
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
130
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
260
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
330
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
400
AIのReact習熟度を測る
uhyo
2
680
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
190
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.5k
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
160
Kiro Ambassador を目指す話
k_adachi_01
0
130
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
330
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
180
フィジカル版Github Onshapeの紹介
shiba_8ro
0
320
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
How to train your dragon (web standard)
notwaldorf
97
6.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
Between Models and Reality
mayunak
4
350
Building Adaptive Systems
keathley
44
3.1k
Crafting Experiences
bethany
1
190
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