行程平臺中臺化建設

中臺的理解

中臺化建設不是簡單的技術建設,整個運營、產品、技術團隊的組織架構劃分都會影響中臺化建設。中臺化建設最重要的是實現能力的靈活複用和擴展的成本最小化。由此會帶來的中臺臃腫導致的穩定性問題,環境資源競爭問題會在中臺化建設中凸顯。

中臺化帶來的不僅是技術上的變革,更帶來的是產品思維模式的轉變。中臺能力一旦成熟,新的業務線接入、或者是老業務線接入中臺其他業務線通用能力,從產品側應該考慮的是基於中臺現有能力基礎上,最好、最快的實現新需求的開發,和新業務線的快速接入。

技術角度

通過抽象和組件化的設計,搭建一個靈活的、可快速應對變化的架構,最大程度的實現相同邏輯的複用,實現差異點的最小化改造。

業務角度

藉助中臺現有能力,通過對能力的組合和擴展,快速支持業務創新,降低新需求和新業務的試錯成本,從而快速應對不可預知的市場變化。

業務身份

解釋

基於業務特性和業務規劃轉化爲技術特徵的全鏈路透傳和隔離標識。基於業務身份可做差異化配置,差異化代碼隔離,差異化流程編排等差異化邏輯的處理。基於業務身份可以進行整個業務的全鏈路的呈現和管理。業務身份之間的數據和權限應該嚴格隔離。

業務身份定義

團隊之前達成的業務身份定義的一些共識

基於業務身份中臺化的建議

業務線的差異在業務發展過程中會因爲用戶的需求不同的變化,中臺要做的是在業務身份從單個拆成多個,或者從多個合成單個的時候,能夠快速支持業務身份的變更。

拓展點

基於業務身份實現業務差異化最小化開發的能力。由中臺抽象擴展點的能力,業務方根據自身需求,實現個性化的邏輯處理。在此基礎上,中臺也可提供擴展點的幾種通用實現,業務方可根據業務特性進行抉擇。

業務中臺架構

普惠中臺化簡易架構

特點

  1. 前臺之間的流量入口統一,業務線向上對接端面邏輯,向下對接中臺主鏈路。

  2. 業務擴展點只貫穿業務中臺內部。不同業務線對中臺同個結果的不同解析通過業務線的應用層單獨處理,如:同個業務處理的異常的不同展示,同個字段的不同展示文案。

優勢

業務擴展點只貫穿整個業務中臺,擴展點較爲收攏,並且在業務中臺之前,業務方可在對接端面那層做前置邏輯處理,從而避免擴展點的濫用,大大降低了擴展點的梳理和擴展邏輯的梳理,後期可維護性較高。

劣勢

整個業務中臺不直接對接端面,有新業務線出現的時候,必須新起一個新的應用,對接業務中臺和端面,有一定的成本,對快速支持新業務友好性偏低。

行程平臺中臺化的落地

行程平臺業務架構

行程平臺中臺化技術架構

行程平臺基於原子組件和 BCF 流程編排,對原子組件進行編排,從而組合成爲一個個組件(如:開城校驗原子組件 + 司機認證原子組件 + 其他多個原子組件,編排爲司機發單組件)。

原子組件內部之間的差異通過 BCF 擴展點進行代碼的隔離和差異的開發。業務中臺通過組建對接業務線,業務線通過業務特性可對行程平臺的組件進行編排。

BCF 流程編排示例

BCF 擴展點示例

擴展點的演進思路

模式一

特點

中臺業務邏輯層直接集成業務線的擴展點 jar 包或者子項目進行開發、打包、編譯、部署。一次請求處理的 N 多個擴展點都屬於本地調用。

優勢

擴展點本地調用,性能較好。子項目可以通過單獨的 jar 包進行隔離,可做到代碼完全隔離。

劣勢

  1. 由於中臺依賴所有擴展點的實現包,因此在擴展點越來越大的情況下,中臺包會越來越大,且擴展點內部可以做內存處理,也可以做遠程調用,因此中臺依賴的包會越來越多,由此帶來的穩定性問題會增加。

  2. 多個業務線同時修改各自業務方擴展點帶來的編譯衝突,發佈衝突會越來越嚴重。

  3. 中臺通用邏輯會對所有業務線生效,如果中臺通用邏輯出現 bug,可能會導致所有業務線的不可用。

模式二

特點

中臺業務邏輯層只定義擴展的 spi,所有的擴展點業務邏輯實現都在業務方的單獨應用進行實現。中臺邏輯調用擴展點是遠程調用。

優勢

  1. 擴展點的實現都是遠程調用,且中臺業務層不直接依賴擴展點的實現,可以有效規避由此帶來的項目臃腫問題。

  2. 可規避由於業務線對相同的依賴導致的包版本不同的衝突問題,穩定性問題。

  3. 各業務線之間,業務線和中臺之間在代碼開發,編譯,發佈過程中完全隔離。

劣勢

  1. 擴展點遠程調用,性能較差。且擴展點的實現在業務方,中臺無法把控業務方的具體實現。

  2. 中臺通用邏輯會對所有業務線生效,如果中臺通用邏輯出現 bug,可能會導致所有業務線的不可用。

模式三

特點

中臺通用能力通過 jar 包方式集成在業務線的邏輯中,中臺根據業務需求不斷的演進和沉澱中臺通用能力,業務線可根據自己需求選擇中臺相應版本的 jar 包。且擴展點的調用都是本地調用。

優勢

  1. 擴展點本地調用,性能較好。

  2. 業務線直接的代碼開發、編譯、發佈互不影響。且業務線只依賴中臺的通用 jar 包和自己的擴展點實現 jar 包,可規避由於業務線對相同的依賴導致的包版本不同的衝突問題,穩定性問題。

  3. 中臺通用邏輯會對只對當前業務線生效,如果中臺通用邏輯出現 bug,只會影響當前業務。

劣勢

中臺的通用 jar 包版本升級需要考慮兼容問題。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/vvvDi-KVbNzX8XlXcrzskg