
FF4j は、フィーチャートグルパターンの実装です。
フィーチャートグル: デプロイなしで実行時に機能を有効化・無効化できます。コード内では、動的述語(if/then/else)で保護された複数のパスを実装します。
ロールベースのトグル: フラグ値だけで機能を有効化するだけでなく、ロールやグループ(カナリアリリース)でアクセスを制御できます。Spring Security をはじめとするさまざまなフレームワークに対応しています。
ストラテジーベースのトグル: 機能が有効かどうかを評価するカスタム述語(ストラテジーパターン)を実装できます。ホワイトリスト/ブラックリスト、時間ベース、式ベースなど、すぐに使えるものが用意されています。Drools ルールエンジンのような外部ソースにも接続できます。
AOP駆動のトグル: ネストした if 文を避けてアノテーションを使用することで、コードをクリーンで読みやすく保てます。Spring AOP により、ターゲット実装は実行時に選択されるため、機能ステータスによって駆動されます。
機能監視: ff4j は各機能の実行ごとに述語を評価するため、イベントやメトリクスを収集・記録し、優れたダッシュボードを算出したり、時間の経過に伴う機能使用状況の曲線を描いたりすることが可能です。
監査証跡: すべての操作(作成、更新、削除、トグル)は、トラブルシューティングのために監査証跡に記録・保存できます。権限管理(AuthorizationManager)により、ユーザーを特定することも可能です。
Webコンソール: Web UI で FF4j(機能とプロパティを含む)を管理できます。ライブラリにサーブレットとして同梱されているため、バックエンドアプリケーションに組み込んで公開できます。約10言語に対応しています。
豊富なデータベース対応: 誇りとして、機能・プロパティ・イベントを保存するための20以上のデータベース技術をサポートしています。同じビジネスモデルで複数の実装を提供します。拡張ポイントがあるため、独自の実装も簡単に構築できます。
Spring Boot Starter マイクロサービスに ff4j-spring-boot-starter の依存関係をインポートすると、Webコンソールと REST API がすぐに動作します。(バックエンドアプリケーション用に使用します。Spring Boot 2x に対応済み: 👉 SAMPLES)
REST API WEB API を通じて FF4j を操作できます。これは、ff4j を他の言語、特に JavaScript フロントエンドで使用する際に最適な方法です。(また、FeatureStoreHttp を活用すれば、マイクロサービスが DB に直接接続するのを回避できます。)
プロパティ(CMDB) 機能ステータスだけでなく、あらゆるプロパティ値も保存できます。実行時に変更できるプロパティを作成できます。Spring、Archaius、commons-config、Consul など、最もよく使われるフレームワークと統合されています。
(分散)キャッシュ 述語の評価は DB に負荷をかける可能性があります(ヒット率が高い場合)。ff4j はこれを軽減するためにローカルキャッシュと分散キャッシュを提供します。(機能を編集するとキャッシュも破棄されます)。JSR-107 を活用することで、ほとんどのキャッシュソリューションをサポートします。
コマンドラインインターフェース 自動化のため、または Web ポートがブロックされている場合(本番環境ではよくあることですが...)に、コマンドラインインターフェース(cli)、シェル #devOps を使用して SSH 経由で作業できます。ストレージと直接対話します。
JMX と MBeans JMX を通じて限られた一連の操作を実行できます。ff4j は、外部ツール(Nagios など)からメトリクスを読み取ったり機能をトグルしたりするための MBean を公開しています。すべてのアプリケーションが Web ベースとは限りません。(バッチ、シェル、スタンドアロンなど...)
詳細は ff4j.org または wiki の リファレンスドキュメント をご覧ください。
ホームページ
機能
モニタリング
このプロジェクトは、貢献してくださるすべての方々のおかげで成り立っています。[コントリビュート]。
すべてのバッカーの皆様に感謝します! 🙏 [バッカーになる]
スポンサーになってこのプロジェクトを支援してください。あなたのロゴがウェブサイトへのリンク付きでここに表示されます。[スポンサーになる]