
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 を操作できます。これは、他の言語、特に JavaScript フロントエンドで ff4j を使用するための方法です。(また、FeatureStoreHttp を利用して、マイクロサービスが DB に直接接続することを回避できます。)
プロパティ(CMDB) フィーチャーの状態だけでなく、あらゆるプロパティ値を格納できます。実行時に変更できるプロパティを作成できます。Spring、Archaius、commons-config、Consul など、よく使われるフレームワークと統合されています。
(分散)キャッシュ 述語の評価は DB に負荷をかける可能性があります(ヒット率が高い)。ff4j はこれを支援するローカルおよび分散キャッシュを提供します。(フィーチャーを編集するとキャッシュも無効化されます)。JSR-107 を活用して、ほとんどのキャッシュソリューションに対応しています。
コマンドラインインターフェース 自動化のため、または Web ポートがブロックされている場合(本番環境ではよくありますよね...)に、SSH 経由でコマンドラインインターフェース(cli)、つまり当社のシェル #devOps を使用して作業できます。ストレージと直接やり取りします。
JMX と MBeans JMX を介して限られた一連の操作を実行できます。ff4j は、外部ツール(Nagios など)からメトリクスを読み取ったりフィーチャーをトグルしたりするためのいくつかの MBean を公開しています。すべてのアプリケーションが Web ベースとは限りません(バッチ、シェル、スタンドアロンなど)。
詳細は ff4j.org または wiki の リファレンスドキュメント をご覧ください。
ホームページ
フィーチャー
モニタリング
このプロジェクトは、貢献してくださるすべての方々によって成り立っています。[コントリビュート]。
すべてのバッカーの皆様に感謝いたします! 🙏 [バッカーになる]
スポンサーになることでこのプロジェクトを支援してください。あなたのロゴがウェブサイトへのリンク付きでここに表示されます。[スポンサーになる]