公告:Keycloak 的 Map Store 停止開發

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

親愛的 Keycloak 社群:

在過去兩年中,Keycloak 儲存團隊一直致力於開發一個儲存層的替代方案,這個方案後來被稱為 Map Store。儘管成功開發了許多功能,例如新的具有部分無停機功能(no downtime capabilities)的 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 以及當前儲存層的一些選定的較小改進/重構。我們將優先處理社群提供的高度投票的問題和 Pull Request。同時,計畫為我們希望在完成跨 DC 工作後引入 Keycloak 儲存層的功能和能力制定路線圖,然後分享這個路線圖,以便根據社群的回饋進行討論和優先排序。

我們也想感謝 Keycloak 社群在 Map Store 開發過程中給予的參與和回饋。我們知道放棄大量的工作並不理想,但我們相信這個決定從長遠來看對 Keycloak 及其使用者最有利,因為這將使我們能夠更快地交付有意義的價值。團隊仍然專注於改進儲存層,並期待迎接未來的挑戰。

Keycloak 儲存團隊