平臺是一套完整的服務。也是一套內部自洽的系統。核心在於分離,業務與通用服務隔離,業務與通用功能隔離。git
對需求方: 快速響應。能夠敏捷地進行需求迭代。docker
對第三方業務方: 以產品的方式提供服務。所見即所得。全部功能對業務方透明。api
對測試方: 簡易明瞭的測試方式。利於自動化測試,灰度測試。運維
對運維方: 持續集成,自動化編排,自動化部署。微服務
數據方: 提供多維度,詳盡的服務數據。能夠給數據方提供簡便的數據分析。工具
內部開發: 敏捷開發。迅速集成。組件化
如何實現需求的快速響應?
明確的方向,清晰的邊界。確認通用語言,核心領域。敏捷開發,快速迭代。AB 測試。測試
如何爲第三方提供產品式的服務?ui
所見即所得。詳盡的文檔。第三方調試平臺,第三方管理平臺。調試
mock 服務,自動化測試,swagger 文檔。
Devops,CI,DI 等持續集成,服務監控。
業務數據與分析數據異構存儲。提供易於分析的數據服務。
組內服務負責制度,人類最佳的合做人數是 2-3 人。因此兩人維護一個項目,一人主導,一人輔助,兩人交叉合做是一個很好的團隊合做模式。如圖造成一個網狀模式(紅色線表明主導,黑色線輔助)。這樣每個項目都將有兩個熟悉的人。
抽離變化與不變。造成基礎服務
以下面一套用戶體系,將服務抽離,將變與不變隔離。
用戶 api: 主要提供用戶相關的接口,變化大,更偏向於業務;
用戶中心: 主要管理用戶核心領域,變更不大,需穩定高可用的服務;
鑑權受權中心: 變更不大,主要管理用戶憑證核心領域;
抽離通用功能。
那些非業務的通用功能應隔離於業務以外:組件化,工具化,服務化。
如來源監控
,接口限流
,日誌分析
,應用監控
,服務依賴
,配置管理
,系統部署
等(業務人員沒必要關心這些功能相關的事情,只須要關注於具體的業務領域)。關注點分離。
如上面所涉及的,從Spring Cloud
的各大組件能夠看出,最終的方案都將走上相近的道路。
領域上下文劃分。劃分微服務項目。業務隔離,數據去中心化。服務組件化。
Spring cloud 技術棧:
細節管控
接口版本管理, gitflow 管理,項目迭代 release 版本管理,標準化,敏捷開發。
歡迎關注個人公衆號。