公告:Keycloak Map Store 即将停止使用

2023 年 10 月 17 日,作者:Stefan Guilhen

尊敬的 Keycloak 社区:

在过去的两年里,Keycloak 存储团队一直致力于存储层的替代方案的开发,该方案后来被称为 Map Store(地图存储)。尽管我们成功开发了许多功能,例如具有一些零停机能力的新 JPA 存储层、新的 Hot Rod 存储层、灵活的配置等等,但要使 Map Store 完全投入运营并获得支持,仍有大量工作要做。在 Map Store 达到生产就绪状态并能够为用户迁移到它提供足够的价值方面,仍然存在很多不确定性和风险。

为了提供更多背景信息,新的 Map Store 仍然缺乏对 PostgreSQL 和 CockroachDB 以外的数据库的支持、缓存层、将所有存储连接在一起的树形存储的实现、迁移到 Map Store 的策略、全面的测试以及其他功能。 这些项目中的每一个都很复杂,需要大量的开发和测试时间,并且都带有自身的风险。

这种情况,加上现在而不是在遥远的未来解决存储区域中现有问题和需求的必要性,促使我们做出了艰难的决定,即停止 Map Store 的任何开发。相反,团队将专注于改进当前存储的功能,并以更小的幅度、更快速的迭代交付这些改进。其中一项改进是完全支持跨越多个数据中心和区域的 Keycloak 高可用性设置,也称为跨 DC 支持。虽然这在过去是一个预览功能,但现在应该在未来的版本中得到完全支持,并包含有关如何在云环境中配置不同部分的指南。

不过,我们从 Map Store 开发中获得的经验不会被浪费,因为在 Map Store 中运行良好的想法和实验都是增强存储区域功能的天然候选方案。尽管如此,Map Store 将完全从主代码库中移除。拥有两种不同的存储实现极大地复杂化了维护过程,也使得用户和其他团队更难使用存储,因为他们需要了解如何在两种截然不同的实现上操作。

下一步是什么?

目前,Map Store 将在单独的分支中提供,该分支尚待创建。它的存在主要是为我们提供一种获取可能对当前存储有价值的零星片段的方式。然后,您可以预期从 Keycloak 23 开始逐步从代码库中移除 Map Storage 的相关部分。这包括但不限于关闭 Github 上的 Map Storage 问题、移除 Map Store CLI 选项以及移除 Map Store 模块。

在近期至中期未来,存储团队将继续专注于跨 DC 以及当前存储的一些选定的较小改进/重构。我们将优先处理社区高度投票的问题和拉取请求。与此同时,计划是制定一个路线图,列出我们希望在完成跨 DC 工作后为 Keycloak 存储带来的特性和功能,然后分享此路线图,以便可以根据社区的反馈进行讨论和优先级排序。

我们还要感谢 Keycloak 社区在 Map Store 开发期间的参与和反馈。我们知道放弃大量工作成果并不理想,但我们相信,从长远来看,这个决定对 Keycloak 及其用户是最有利的,因为它将使我们能够更快地交付有意义的价值。团队将继续专注于改进存储层,并期待迎接未来的所有挑战。

Keycloak 存储团队