お知らせ: Keycloak Map Store の廃止

2023年10月17日 Stefan Guilhen 著

Keycloak コミュニティの皆様へ

過去 2 年間、Keycloak ストアチームは、ストレージ層の代替となるもの、後に Map Store として知られるようになったものの開発に取り組んでまいりました。多くの機能、例えば、ダウンタイムなし機能がいくつか備わった新しい JPA ストレージ層、新しい Hot Rod ストレージ層、柔軟な構成など、の開発に成功したにもかかわらず、ストアが完全に運用可能になり、サポートされるようになるまでに残された作業量は依然として非常に多くあります。ストアが本番環境に対応できるようになり、ユーザーが移行するのに十分な価値を提供できるようになるまでには、依然として多くの不確実性とリスクが伴います。

より詳細な状況をご説明しますと、新しい Map Store は、PostgreSQL および CockroachDB 以外のデータベース、キャッシング層、すべてのストアを統合するツリーストアの実装、Map Store への移行戦略、徹底的なテストなどをまだサポートしていません。これらの項目はそれぞれ複雑であり、かなりの開発およびテスト時間を必要とし、それぞれに固有のリスクが伴います。

このような状況と、やや遠い将来ではなく、今すぐストレージ分野における既存の問題と要求に対処する必要性とが相まって、Map Store の開発をすべて中止するという苦渋の決断に至りました。代わりに、チームは現在のストアの機能を向上させることに注力し、これらの改善をより小さな単位で迅速な反復で提供していきます。これらの改善の 1 つは、クロス DC サポートとしても知られる、複数のデータセンターとリージョンにまたがる Keycloak の高可用性セットアップを完全にサポートすることです。これは過去にプレビュー機能でしたが、今後のリリースで完全にサポートされるようになり、クラウド環境でさまざまな部分を構成する方法に関するガイドが含まれる予定です。

Map Store の開発から得られた経験は無駄にはなりません。Map Store でうまく機能したアイデアや実験はすべて、ストレージ分野の機能強化の自然な候補となります。それでも、Map Store はメインコードベースから完全に削除されます。2 つの異なるストレージ実装を持つことは、メンテナンスプロセスを大幅に複雑にし、ユーザーや他のチームがストアを操作する際にも、2 つの非常に異なる実装の操作方法を理解する必要があるため、より困難になっています。

今後の予定

当面の間、Map Store はまだ作成されていない別のブランチで利用可能になります。これは主に、現在のストアに役立つ可能性のある断片を取得するための手段を提供するために存在します。その後、Keycloak 23 以降、コードベースから Map Storage のビットが徐々に削除されることが予想されます。これには、特に、Github での Map Storage の issue のクローズ、Map Store CLI オプションの削除、Map Store モジュールの削除などが含まれます。

近い将来から中期的な将来にかけて、ストアチームはクロス DC と、現在のストアに対する選択されたいくつかの小さな改善/リファクタリングに引き続き注力します。コミュニティから投票数の多い issue やプルリクエストへの対応を優先します。並行して、クロス DC 作業の完了後に Keycloak ストアに導入したい機能と能力のロードマップを開発し、コミュニティのフィードバックに基づいて議論および優先順位付けができるように、このロードマップを共有する予定です。

Map Store の開発期間中の Keycloak コミュニティの皆様の関与とフィードバックに感謝いたします。多大な作業を破棄することは理想的ではないことは承知していますが、この決定は Keycloak とそのユーザーにとって長期的に最も有益であると確信しています。なぜなら、より迅速に有意義な価値を提供できるようになるからです。チームはストレージ層の改善に引き続き注力しており、今後のすべての課題に対応することを楽しみにしています。

Keycloak ストアチーム