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
Feature Flagの活用術
Search
Shouya Higuchi
February 24, 2025
Programming
76
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Feature Flagの活用術
Shouya Higuchi
February 24, 2025
More Decks by Shouya Higuchi
See All by Shouya Higuchi
LT資料:ゼロからはじめるスクラム開発
shouya31
1
760
Other Decks in Programming
See All in Programming
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
共通化で考えるべきは、実装より公開する型だった
codeegg
0
240
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
160
act1-costs.pdf
sumedhbala
0
230
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
380
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
120
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
170
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
360
5分で問診!Composer セキュリティ健康診断
codmoninc
0
240
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
130
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
210
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Between Models and Reality
mayunak
4
370
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Transcript
Feature Flagの活⽤術
はじめに ・実運用におけるFeature Flagの活用についてお話します! ・Feature Flagとは何か? ・Feature Flagのメリット ・Feature Flagの利用事例 1~3
・Feature Flagの失敗事例 1~2
Feature Flagとは ・機能の有効化・無効化をソースコードの修正や再デプロイ不要でできるようにする仕組 み(要するに、if文で表示・非表示を切り替えできる) 関数の実行時に true / falseが決まっている(例:環境変数、実行環境など)
Feature Flagのメリット 継続的デリバリの実現 ・機能をOFFの状態でリリースして、必要なタイミングでONにする ・→ リリース時期を待つことなくリリース可能に リリース時における不確実性の低減 ・ビックバンリリースの回避 ・一部のユーザーのみに公開できる ・A/Bテストの簡略化
開発中の新機能を隠す ・段階的にリリース(Feature FlagがOFFの状態なので顧客は利用できない) ・最低限、サイドメニューのリンクを隠すだけでもOK ・事前に複数顧客に触って欲しい場合などはこっちの方がいいかも ・絶対に利用されたくない場合は、ルーティングごと隠してアクセス無効に Feature Flagの活用事例①
一部の顧客でのテスト検証 ・課題を解決し得る機能かどうかを検証するために、一部の顧客のみに限定公開して一 定期間使ってもらう(結果次第ではボツ機能にすることも検討) Feature Flagの活用事例②
データベース移行時にも Feature Flagを活用できる! 背景 ・開発初期はHerokuのPostgreSQL (DB1) を使用していたが、 AWS RDS (DB2)
へ移行 Feature Flag を活用した段階的な移行 1. Feature Flagを使い、DB1 ⇔ DB2 を動的に切り替え可能にする 2. リポジトリを統一し、どちらの DBにも対応できる設計 3. テーブルごとにFeature Flagを作成し、影響範囲を最小限に抑える 段階的リリースでリスクを軽減 1. 最初はHeroku の DB1 を使用 2. 一部のテーブルを AWS RDS (DB2) に切り替えて動作確認 3. 問題なければ、他のテーブルも順次 DB2に移行 4. Feature Flagを削除し、完全移行完了! 番外編:Feature Flagの活用事例③
Feature Flagの設定漏れ ・リリース後、本来は全ユーザーが利用できるはずの機能が、Feature Flagの設定ミス により一部のユーザーに対して非表示のままになっていた💦 → 最後いつ・誰が設定変更するかの考慮が漏れていた → 泥臭い方法ですが、Feature Flag設定時に記録を残して、いつ・誰が編集すべきか
を明記していました(例:事前にタスクを切っておく、コメントアウト) Feature Flagの失敗例①
RTのテストケース作成時に... 既存機能に対して、Feature Flagで一部ユーザーに限定公開している場合、RTのテス トケース作成時の工数が肥大化する(Feature Flagがon/offの場合など) → ユーザーが利用している以上QAする必要がある! → ただ、リソースが足りない場合は事前の期待値コントロールをした上で、offの場合は QA項目から除外するのもあり(ただし機能による)
Feature Flagの失敗例②
まとめ Feature Flagを用いることで様々なメリットあり ・段階的にリリースをすることで、大規模な障害を避けられる ・全体リリース前に一部の顧客からFBをもらえる 一方でデメリットもあり ・事前に運用を決めておかないと設定漏れやリソースの圧迫が起こる → 機能ごとにチームで合意をとった上でFeature Flagを使用する体制が好ましい