コードを書き換えず,フラグを使って機能を有効化するプラクティスを「Feature Flag(もしくは Feature Toggle)」と言う.Feature Flag を実現するサービスとして「Unleash」があり,単純に機能を有効化するだけではなく,有効化する条件を設定したり,カナリアリリースもできる.多くの機能が揃っていて,管理画面もある.今まで使ったことがなく「Unleash」を試していく!数記事に分割する予定!
Unleash Demo
まずは「Unleash」の挙動を確認するため,公開されているデモ「Interactive demo」を試す.「Unleash」を導入したフロントエンドアプリケーション(React で実装された SPA)と管理画面を操作できる.管理画面にログインするためにメールアドレスを入力必要があるけど,特に認証は求められず,また管理画面の操作ログにも表示されるため,ダミーアドレスにしておくと良さそう.
Step 1: Enable/disable feature toggle
Step 1 では,フラグを使って機能を有効化する.管理画面でフラグ demoApp.step1
を開いて enabled in default
に変更をすると,フロントエンドアプリケーション上に画像が表示された.コードを書き換えずに機能を有効化できている.
Step 2: Enable for a specific user
Step 2 では,特定のユーザーに限定して機能を有効化する.管理画面でフラグ demoApp.step2
を開いて「Strategies(戦略)」に「UserIDs」を設定すると,フロントエンドアプリケーション上に画像が表示された.
Step 3: Gradual rollout
Step 3 では,割合を指定して一部のユーザーに限定して機能を有効化する.管理画面でフラグ demoApp.step3
を開いて「Strategies(戦略)」に「Rollout 25%
」を設定すると,フロントエンドアプリケーション上に画像が表示された.
Step 4: Variants
Step 4 では,全ユーザーに機能を有効化しつつ「Variants(バリアント)」を使って挙動を変更する.「Variants(バリアント)」は機能の中に複数の実験項目を含めることができる仕組みで,A/B テストとしても使える.
管理画面でフラグ demoApp.step4
を開いて「Variants」に「BlueButton 50%
」と「GreenButton 50%
」を設定すると,フロントエンドアプリケーション上に異なるボタンが表示された(右画面は Chrome のシークレットウィンドウを使っている).ユーザーによって異なる挙動を有効化できている.
まとめ
今回は Feature Flag を実現するサービス「Unleash」を試した.まずは挙動を確認するため,デモを使って「計4種類」の仕組みを試すことができた.次回は実際に Unleash SDKs を使ってコードを書いていく!続く〜