公告:Keycloak 地图存储的停止

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

尊敬的 Keycloak 社区:

在过去两年中,Keycloak 存储团队一直在努力 更换存储层,该存储层被称为地图存储。 尽管成功开发了许多功能,例如具有某些无停机功能的新 JPA 存储层、新的 Hot Rod 存储层、灵活的配置等等,但要使存储完全可操作并获得支持,还有大量工作要做。 在存储准备投入生产并能够为用户提供足够的价值以迁移到它之前,仍然存在很多不确定性和风险。

为了提供更多背景信息,新的地图存储仍然缺乏对 PostgreSQL 和 CockroachDB 之外的数据库的支持,缺少缓存层,缺少将所有存储捆绑在一起的树存储的实现,缺少到地图存储的迁移策略,缺少全面测试等等。 这些项目中的每一个都非常复杂,需要大量的开发和测试时间,并且自身也存在风险。

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

不过,我们在地图存储开发中积累的经验不会白费,因为在地图存储中运行良好的想法和实验都是存储领域增强功能的自然候选者。 尽管如此,地图存储将完全从主代码库中删除。 拥有两个不同的存储实现极大地复杂了维护过程,也使用户和其他团队更难以使用存储,因为他们需要了解如何在两种截然不同的实现上进行操作。

下一步是什么?

目前,地图存储将在一个单独的分支中可用,该分支尚未创建。 它主要存在是为了为我们提供一种方法来获取对当前存储有价值的片段。 然后,您可以期待从 Keycloak 23 开始逐步从代码库中删除地图存储位。 这包括(除其他事项外)关闭 Github 上的地图存储问题,删除地图存储 CLI 选项,以及删除地图存储模块。

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

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

Keycloak 存储团队