チーム勉強会で Feature Flag とトランクベース開発の話をしました (追加訂正と書かれているスライドは、勉強会後議論した結果を反映したものです)
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
はじめに みなさんこんにちは、物流業界の価値最大化をミッションに掲げるアセンド株式会社で取締役CTOを務めている丹羽です。 私たちはレガシー産業である運送会社さんのDXを実現すべく、運送管理SaaS「ロジックス」を開発しています。運送業にまつわる業務の全てをデジタル化・プロダクト化し繋がる世界を実現しようとしています。そのためにアセンドでは開発生産性にこだわり投資をしています。 そんなアセンドのプロダクトチームでは週間平均 8.20deploys/day を実現するなど、1段高い生産性を実現しています。今回はこの生産性を支える仕組みの1つである Feature Flag についてご紹介します。 (毎日SlackBotでデプロイ状況などのレポートを通知するようにしています) Feature Flag とは? Feature Flag とは、プロダクト開発時に新機能の公開(リリース)や変更を簡
Feature Flagで 素早くマージ 安全にリリース Rettyアプリチームの @imaizume です、新しい年度が始まり新卒社員も入社してフレッシュな気分になる今日このごろですね。 今回は最近Rettyアプリチームで利用することが増えている、Feature Flagを使った開発についてのお話です。 Feature Flagを使うことで、大規模な開発であっても開発中から継続的に差分をマージできるようになり、デリバリー効率を大きく向上させることができます。 本記事では、この方法を採用するに至った背景や実際に取り入れて感じたメリット、課題感などを書きましたので、読んでみてメリットが感じられたならぜひみなさんの開発でも取り入れてみていただければと思っています。 Feature Flagとは? FFを採用する前の開発の様子 RettyでのFFによる開発の始まり アプリチームでFFを採用したこ
本連載は、最新のソフトウェア開発の課題点を解決する手段であるフィーチャーフラグ(Feature Flag)について、概要や導入方法、ベストプラクティスを紹介します。第1回では、フィーチャーフラグとはなにか、第2回ではフィーチャーフラグの導入方法やその比較、今回の最終回では、市場に存在するサードパーティー製フィーチャーフラグの紹介と特徴を比較しながら解説していきます。 対象読者 連載の第1回と第2回の記事を読んでフィーチャーフラグに興味を持った方 フィーチャーフラグをプロダクト開発に検討している方 フィーチャーフラグサービスによって異なる機能 ここでは、フィーチャーフラグサービスに含まれるあらゆる機能の紹介と主要な各社が提供する機能をリストアップして、まとめてみました。 フィーチャーフラグサービスの機能と各社の提供状況 表中に記載の機能とその説明は以下の通りです。 フラグのステータス フラグ
本連載は、最新のソフトウェア開発の課題点を解決する手段であるフィーチャーフラグ(Feature Flag)について、概要や導入方法、ベストプラクティスを紹介します。第1回は、フィーチャーフラグとはなにか、どのようにしてプロダクト開発を変えていくのか、そのメリットと導入の際の懸念点を説明します。 はじめに 本連載はフィーチャーフラグについての連載です。最新のソフトウェア開発の課題点を解決する手段であるフィーチャーフラグに焦点をあて、フィーチャーフラグとは何なのか、どういった機能を提供するのか。フィーチャーフラグのメリット・デメリットを、具体例を使って詳細に説明します。また、導入前に考慮すべきことや、フィーチャーフラグの実装、サービスの選定の際の注意点、効率よく、かつ継続的に使用していくためのベストプラクティスも併せて解説します。さらにはサードパーティー製のフィーチャーフラグサービスの比較を行
何か Kyashでサーバサイドのエンジニアをしているhirobeです。 業務でサーバサイドのアプリケーションへのfeature flag導入を提案および設計をしました。 どのような設計や実装にするか、なぜそうしたかを整理します。 なお、アプリケーションの特性としては以下を念頭に入れていただければと思います。 新規プロダクトではなく、5年以上動いている既存プロダクトに導入する サーバサイドアプリケーションのみをスコープとする 20~30のマイクロサービスから構成されている マイクロサービス間はREST/gRPC/SQSで通信されている そもそもなぜ導入するのか? 目的を整理しておきます! featureブランチからmainブランチにmergeされるまでの期間が長いために、以下のような問題がありました。 複数の機能開発の修正がconflictする可能性があり、またそれに気づくのが遅れる可能性が
昔のflag管理 AWS AppConfigの導入 feature flagの管理 feature flagの利用 まとめ ソフトウェアエンジニアの浦川です。 clusterではサービス開発にfeature flagが活用されており、常時10+個程度のflagが並行して使われています。 これまでflagはgoのコードとしてハードコードされていたのですが、AWS AppConfigを利用してコードを修正することなく動的に変更できるようにしました。 昔のflag管理 ハードコードされたflagは1つのstructにまとめて定義されていて // feature flagを集めたもの type FeatureFlag struct { IsAvatarXxx bool // アバターを良い感じにする IsEventXxx bool // イベントを良い感じにする // (大量のフラグ) } app
最近、プロダクトにLaunchDarklyという Feature Flag を実現するサービスを導入しました。導入自体が楽で実現できることがたくさんあるので、Feature Flagや導入方法についてまとめました。 Feature Flag で実現できること そもそものFeature Flagについてですが、「コードを変更することなくシステムの振る舞いを変えることができる」[1]ことを指しています。 以下のようにコード上に機能A・機能Bを入れた上でデプロイを行い、外から enableFeature のON/OFFを切り替えることでユーザーに提供する機能を切り替えることができます。 一見とてもシンプルなFeature Flagですが、色んなことが実現できます。 デプロイとリリースのタイミングの分離 デプロイのタイミングとリリースのタイミングを分けることが可能になります。 例えば、水曜のうちに
Bucketeer is an open-source platform created to help teams make better decisions, reduce deployment lead time and release risk through feature flags. Control your featuresFeature Flags are a software development tool that ensures an efficient, low-risk release cycle by enabling or disabling features in real time without deploying new code. Bucketeer offers advanced features, such as dark launch an
Feature flags are commonly used to enable gradual rollout or experiment with new features. In a few cases, even after the purpose of the flag is accomplished, the code pertaining to the feature flag is not removed. We refer to such flags as stale flags. The presence of code pertaining to stale flags can have the following drawbacks: Unnecessary code clutter increases the overall complexity w.r.t m
本連載は、最新のソフトウェア開発の課題点を解決する手段であるフィーチャーフラグ(Feature Flag)について、概要や導入方法、ベストプラクティスを説明します。前回は、フィーチャーフラグに関する一般的な解説をしました。今回は、フィーチャーフラグの導入方法やその比較、運用に関するベストプラクティスを説明します。 対象読者 前回の記事を読んでフィーチャーフラグに興味を持った方 フィーチャーフラグをプロダクト開発に導入してみたい方 フィーチャーフラグに関する実践的な内容を学びたい方 フィーチャーフラグシステムを実際に使ってみる まず、フィーチャーフラグの導入方法や一般的な機能についてイメージを掴むために、実際に使ってみます。今回はフィーチャーフラグシステムとして、Firebaseのプロダクトの1つであるRemote Configを使用します。Remote Configを選んだ理由は、比較的機
Feature Flag & Remote Config ServiceRelease features with confidence; manage feature flags across web, mobile, and server side applications. Use our hosted API, deploy to your own private cloud, or run on-premises 1import flagsmith from 'flagsmith'; 2 3flagsmith.init({ 4 environmentID: 'QjgYur4LQTwe5HpvbvhpzK', 5}); 6 7const App = () => ( 8 <Layout 9 darkMode={flagsmith.hasFeature("dark_mode")} 10
[セッションレポート] Feature Flagで機能別にローンチをコントロールする (BOA305-R) #reinvent Amazon CloudWatch EvidentlyとAWS AppConfigを利用したFeature Flagの実装例です。Amazon CloudWatch Evidentlyを利用することでフラグの詳細な設定やA/Bテストを簡単に行うことができます。 セッション概要 動画 セッション動画も上がっていたのでこちらもご確認ください ユーザーにコードを配布することはエキサイティングなことですが、リリースにはリスクも伴います。このリスクをコントロールするために、多くの場合、デプロイメントを機能が稼動するタイミングと切り離すことを選択します。新機能は if/then 式で隠蔽され、新機能の立ち上げは一元的に制御されるようになっています。これらは、一部のユーザーに限
Feature Flag とは パラメータによって動作を変更するための実装手法です。 カナリアリリース, A/B テスト を目的として使用されます。 SaaS や OSS も提供されています。利用することでオンデマンドでの変更を可能とし、対象となるユーザの制限もできます。 注意事項 多用してしまうことにより、コードの品質や可読性に影響を及ぼす可能性があります。 また、一時的な機能の有効化は障害調査の枷となる可能性があります。 実験や検証を目的とし、リリース管理やユーザ毎の挙動に使うことは望ましくありません。 マーティン・ファウラーは機能トグルは最後の手段であるべきとして、機能トグルを利用する前に次のような手段を検討すべきと述べている 機能を小さく分割して段階的にリリースしていく方法 新機能へのエントリーポイントとなる UI を最後に作る方法 やってみた 1. サンプルアプリの構築 今回は
コードを書き換えず,フラグを使って機能を有効化するプラクティスを「Feature Flag(もしくは Feature Toggle)」と言う.Feature Flag を実現するサービスとして「Unleash」があり,単純に機能を有効化するだけではなく,有効化する条件を設定したり,カナリアリリースもできる.多くの機能が揃っていて,管理画面もある.今まで使ったことがなく「Unleash」を試していく!数記事に分割する予定! www.getunleash.io Unleash Demo まずは「Unleash」の挙動を確認するため,公開されているデモ「Interactive demo」を試す.「Unleash」を導入したフロントエンドアプリケーション(React で実装された SPA)と管理画面を操作できる.管理画面にログインするためにメールアドレスを入力必要があるけど,特に認証は求められず,
railsで作ったapiの利用可否を切り替えられるように、feature flag(機能フラグ)を導入したいということで、flipperというgemを使いました。 環境は、rails6.0.3 apiモードです。 feature flag(機能フラグ)とは アプリケーションの各種機能の有効無効を、コードはそのままに、再デプロイもせずに、実行中のプログラムの外部から切り替えるための仕組みです。 少し細かく書くと、 ある機能の使用可否を判定するフラグを用意でき、 フラグのON/OFFは、ユーザ全体だけでなく、特定のユーザや、ユーザのグループ単位でも行える フラグのON/OFFは、コードの変更なしに、railsコンソール上や、外部からweb UIやapiで行える といったことを実現するものです。 gemの導入手順 まず、Gemfileに下記を設定します。
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く