SaaS開発で使うLaunchDarkly

SaaS開発で使うLaunchDarkly

ryudaiです、こんにちは!
皆さんはフィーチャーフラグ、使ってますか?

フィーチャーフラグ (Feature Flags) を簡単に説明すると、ある機能をコード変更なしでON/OFFできるような仕組みです。

今回、フィーチャーフラグのSaaSであるLaunchDarklyさんが、弊社向けにオフラインワークショップを開催してくださったので、そのレポートをお届けします!

■LaunchDarklyとは? 〜弊社でのユースケースを添えて〜

弊社サービスであるSaaSus Platformでは、2022年11月からLaunchDarklyを使っています。

主な活用タイミングは以下の2つです。

  1. 新機能のリリース
  2. β版機能のリリース

①新機能のリリース

フィーチャーフラグを活用すると、以下のようなフローで新機能をリリースできます。

  1. 新機能を「OFF」にしてデプロイ
  2. 任意のタイミングで新機能を「ON」にし、ユーザーが使えるようにする
  3. 仮にバグなどが見つかった場合、新機能を「OFF」にする

ON/OFFの切り替えは、LaunchDarklyのダッシュボードから簡単に行えます。

このようにすることで、新機能の開発からマージまでのサイクルを素早く回せて、開発体験を向上させることができます。

②β版機能のリリース

新機能の中でもβ版は、特定のユーザーのみに公開したい、という場合もありますね。LaunchDarklyでは、特定の属性を持つユーザーにのみ機能をONにできます。

実際にSaaSus Platformでは、β版機能の利用申請があった特定のテナントのみにご利用いただく場合があります。このとき、LaunchDarklyでは申請されたテナントの「テナントID」などの情報を保持し、そのテナントのみに機能をONにします。

β版機能のリリース用フラグの概念図

■気になる機能・ユースケース

ここではワークショップで教えていただいた内容を3つピックアップします。

①Guarded Releases

弊社のユースケースでも新機能リリース時の活用について触れましたが、LaunchDarklyでは安全なリリースをサポートするのに特化した機能 Guarded Releases があります。

Guarded Releasesを使うと、LaunchDarkly上でエラーレートやレイテンシーを監視し、しきい値を超えた場合には自動でロールバックすることができます。

例えば、「エラーレートが1%を超えたら自動でフラグをOFFにする」といった設定が考えられますね。

②Migration flags

これまでは1つのフィーチャーフラグを利用し、機能のON/OFFを切り替えていました。
Migration flagsは単純なON/OFFではなく、複数の段階を経るシステム移行を安全に管理できる機能です。

例えば、システムのDB移行が必要になった場合を考えます。
このとき、以下の4つの段階を経てDBの移行を完了する、というプランを立てたとします。

DB移行の4段階の例
  1. 旧DBのみで運用(すべての読み書きを旧DBで実施)
  2. デュアルライティング(旧DBからRead、新旧両方にWrite)
  3. デュアルライティング(新DBからRead、新旧両方にWrite)
  4. 新DBのみで運用(すべての読み書きを新DBで実施)

このような移行をフィーチャーフラグで表現する場合、複数のフラグをまとめて管理する必要があり、必要な段階が増えるほど複雑さが増します。
Migration flagsでは、この複雑さを軽減してくれるのはもちろん、変更を反映するユーザーを絞ったり、エラー時のロールバックなども行ってくれます。

③フィーチャーフラグの削除

機能がONになり安定稼働すると、ソースコードにあるフィーチャーフラグが不要になります。
では、どのような運用であれば安全にフィーチャーフラグを削除できるでしょうか?

まず、LaunchDarklyには、GitHubにあるコードを参照し、フィーチャーフラグが存在する場所をWebコンソールに表示する機能があります。
この機能を活用してWebコンソールから確認しながら、不要になったフィーチャーフラグを四半期に1度全部消す、という運用が行われているプロジェクトもあるそうです。

その他に、不要になったフィーチャーフラグを自動で検知する機能も存在するので、これらを組み合わせて定期的に削除していけそうですね。

■最後に

SaaS開発において、顧客への価値提供に繋がるビジネスロジック部分を重点的に開発し、その他は外部サービスに任せて自ら開発する部分は最小化しよう、という考え方があります。
これは開発を加速させるだけでなく、その後の運用・保守コストの削減にも繋がります。

弊社サービスであるSaaSus PlatformもSaaS開発をサポートするSaaSであり、我々はこの思想に強く共感しています。

LaunchDarklyはまさに、フィーチャーフラグの機能をまるっと提供し、SaaS提供者をサポートしてくれるSaaSです。みなさんもLaunchDarklyの肩に乗り、クイックにSaaSを開発する体制を整えていきませんか?