引言
Fineract 是 Apache Foundation 認證的開源金融應用平臺,專為微金融與普惠金融設計。隨著業務規模擴張,傳統架構難以支撐高吞吐量與多租戶需求,因此雲原生(Cloud Native)技術成為關鍵轉變方向。本文探討 Fineract 在雲原生架構下的可擴展性實踐,涵蓋設計原則、技術實現與實際應用案例。
技術定義與核心概念
可擴展性三維模型
可擴展性透過三維策略實現:
- X軸(水平擴展):透過多實例部署提升吞吐量,支援資料庫複製與多資料庫實例連接
- Y軸(功能拆分):將功能模組化,實現獨立運行與擴展
- Z軸(租戶隔離):基於租戶概念的系統實例化
雲原生架構特性
Fineract 透過 Kubernetes 容器化、微服務拆分與自動化部署,實現高可用性與彈性擴展。其核心特性包含:
- 無狀態服務:透過 Deployment 管理,支援自動擴縮
- 有狀態服務:使用 StatefulSet 管理批次處理器等關鍵組件
- 服務發現與負載均衡:透過 Ingress 路由與 DNS 解析策略確保流量正確分發
實施改進與技術細節
Kubernetes 部署優化
- 服務分離設計:
- 將讀寫 API、只讀 API 與批次管理 API 拆分為獨立實例
- 使用 Ingress 進行 HTTP 方法與 URI 路由,例如:
- GET/HEAD 路由至只讀實例
- 特定 URI 路由至批次管理實例
- 預設 API 路由至讀寫實例
- 批次處理架構:
- 引入批次管理器(Batch Manager)與批次工作者(Batch Workers)分離
- 透過控制器動態分配工作負載,支援高帳戶數量的業務處理
液態基礎(Liquibase)配置
- 資料庫升級策略:
- 執行升級後立即停止實例,降低資料庫鎖競爭
- 預升級 Hook 執行 Liquibase 腳本,確保升級過程穩定
- HAM Chart 集成:
- 支援跨可用區部署,升級後自動啟動服務端口
- 提供 500+ 行 Helm Chart 配置,涵蓋讀寫、批次、前端與 Liquibase 實例池
可用性增強措施
- 資源分配策略:
- 基於 Pod 請求配置 CPU 核心數(如 100m CPUs 對應 1 個 CPU)
- 使用 G1 GC(互動請求)與 Parallel GC(批次處理)混合策略
- 跨可用區部署:
- 配置
Max Q
參數控制 Pod 分佈,確保不同可用區數量差異不超過 1
- 調整 DNS 解析策略,禁用緩存並定期重新解析資料庫位址,減少故障切換中斷時間
實例模式演進與應用案例
2020 年規劃與實際實施
- 原始設計:
- 支援讀寫 API、只讀 API、批次處理與專用前端實例
- 資料庫需配合讀寫複製與只讀複製
- 透過消息系統(Kafka/ActiveMQ)協調實例間通訊
- 實際變更:
- 拆分批次管理 API 為獨立實例,提升系統模組化
- 前端實例獨立於 API 實例,避免前端請求影響後端穩定性
管理平臺調整
- Jenkins 集中管理:
- 支援環境配置與部署流程,確保服務連續性
- 自動化 infra 結構變更後的服務恢復
- 企業客戶適配:
- 部分企業使用自有 AWS 架構,需獨立管理
- 系統測試驗證資料庫遷移的穩定性,確保故障切換無中斷
技術限制與未來方向
當前挑戰
- Kubernetes Ingress 侷限:
- 無內建 HTTP 方法路由能力,需依賴 AWS Load Balancer Controller 實現特定路由
- HAM Chart 配置複雜度:
- 包含 500+ 行配置,支援跨雲服務器部署(目前僅限 AWS EKS)
- 生產環境配置不足:
- 需額外 Docker Compose 檔案與 Kubernetes 範例
- 存在 GDB/GDBC 驅動程式參數覆寫等 Bug
未來計劃
- Guard Rails 設計:
- 透過 Terraform 與 Jenkins 代碼提供基礎設施限制,確保部署一致性
- 歸檔功能開發:
- 討論貸款資料處理方式(刪除、遷移、導出重載)
- 待與客戶需求與社區協商後決定最終方案
- 開源貢獻目標:
- 將 Helm Chart 改進提交至 Apache 儲存庫,提升非功能性特質(如可用性、可擴展性)
總結
Cloud Native Fineract 透過 Kubernetes、微服務拆分與自動化部署,實現高可擴展性與可用性。其核心價值在於:
- 透過 X/Y/Z 軸擴展策略,支撐多租戶與高吞吐量需求
- 利用 Helm Chart 與 Ingress 路由,實現靈活的部署與流量管理
- 透過 Liquibase 與 DNS 策略優化,提升資料庫升級與故障切換穩定性
實際應用中需注意 Kubernetes Ingress 的限制與 Helm Chart 的配置複雜度,未來將持續優化歸檔功能與開源貢獻,以強化 Fineract 在雲原生環境下的實用性與可擴展性。