微服務(wù)SaaS如何做私有化部署
這周聊了個(gè)需求,評(píng)估下給客戶做一套私有化部署方案要多少成本。
本身我們是一個(gè)比較純粹的saas公司,整個(gè)技術(shù)架構(gòu)都是基于云端構(gòu)建,沒有太多私有化部署的經(jīng)驗(yàn)。
奈何客戶給得多呢,也得試著搞一搞。
不過還沒確定方案,簡(jiǎn)單理一理思路吧。
1、微服務(wù)saas是怎樣的
圖片
這是我們一個(gè)比較直觀的架構(gòu)圖。
以公有云資源為底座,包括云主機(jī)和云數(shù)據(jù)庫。
在這之上構(gòu)建我們的微服務(wù)體系,包括k8s、中間件、微服務(wù)、監(jiān)控系統(tǒng)、CI/CD系統(tǒng)。
這么一套東西,該怎么做私有化部署呢?
2、私有化部署的需求有哪些
私有化的需求分為兩類,「功能性需求」和「非功能性需求」。
「功能性需求」比較好理解,就是需要哪些產(chǎn)品能力。包括前端哪些功能,以及后端哪些API。
「非功能性需求」是私有化部署的核心,如何將服務(wù)部署到用戶的私有化環(huán)境中。
這種私有化環(huán)境還能分為兩種模式。
一種是「專有云模式」,客戶自己基于公有云的獨(dú)立賬號(hào)購買資源,然后我們把代碼部署過去。
另一種是「私有云模式」,客戶自己的IDC提供服務(wù)器,然后我們?cè)诜?wù)器上部署數(shù)據(jù)庫和各類服務(wù)。
兩種模式能不同程度保護(hù)客戶數(shù)據(jù)安全性。
3、微服務(wù)的私有化之痛
首先根據(jù)客戶需求,確定產(chǎn)品功能所需的后端服務(wù)以及相關(guān)API。
這個(gè)說起來容易,做起來難。
為什么呢?
因?yàn)槲⒎?wù)架構(gòu)看似松耦合,但是疏于治理,沒有真正按照領(lǐng)域能力做模塊化隔離,各種服務(wù)間無序調(diào)用。
基本上只能認(rèn)為是一個(gè)分布式大單體。
所以很難理想化地根據(jù)產(chǎn)品功能,來劃分出獨(dú)立的后端服務(wù)集合。
往往是像一棵大樹,拔起一點(diǎn)點(diǎn),就能帶出一整個(gè)盤根錯(cuò)節(jié)的樹根。
如果不管三七二十一,直接整套部署,那幾百個(gè)微服務(wù)所需要的服務(wù)器資源成本將會(huì)極高,根本沒法用。
幾十個(gè)接口的功能,總不能打包一個(gè)k8s集群、若干中間件、幾百個(gè)微服務(wù)和數(shù)據(jù)庫的大禮包吧。
怎么辦?
短期看,可能只能按梳理的功能,臨時(shí)把所需要的API抽取,集合到一個(gè)新的單體服務(wù)中,做一些簡(jiǎn)單的改造適配,成本相對(duì)可控。
長期來看,如果要在微服務(wù)架構(gòu)下靈活交付不同私有化版本,需要做好微服務(wù)治理,把分布式大單體按照業(yè)務(wù)領(lǐng)域、功能模塊進(jìn)行合理劃分,做好隔離,這樣才有可能按需組合使用。