SaaS可配置化:功能可配置

對SaaS系統(tǒng)而言,推崇的就是“按需購買”,依據(jù)用戶的實際需求為用戶配置對應(yīng)的功能。但SaaS的多租戶模型決定了系統(tǒng)不可能參照傳統(tǒng)軟件模式,在為用戶部署時去掉不必要的功能。為適應(yīng)多變的用戶需求,SaaS軟件只能實現(xiàn)功能可配置。那么SaaS如何才能做到功能可配置呢?
一、劃分原子功能
所謂的原子功能也就是系統(tǒng)最小的組成單位,原子功能與原子功能間相互獨立,互不重疊,所有的原子功能具有如下原則:
- 每個功能都具有價值
- 每個都不可細分
- 功能間互不重疊
- 功能間不循環(huán)依賴
- 整個系統(tǒng)功能是完整的
劃分原子功能的最基本原則就是“每個功能都具有價值“,而且這種價值是相對用戶而言的。只有對用戶具有價值的功能才會被用戶購買。
例如新建賬號時,系統(tǒng)會對管理員輸入的手機號及信息進行驗證,但這種驗證只是新建賬號的一個步驟,并不能為用戶帶來任何價值,也就不能劃分成單獨的一個原子功能。
除關(guān)注功能所具有的價值外,劃分原子功能時,需基于既定功能架構(gòu)盡量細化,做到每個劃分的原子功能都是不可細分的。例如針對表單的錄入,用戶在創(chuàng)建時往往會區(qū)分新建表單和提交表單,這兩個操作對用戶而言都是具有意義的,所以劃分原子功能時,拆分新建表單和提交表單兩個原子功能,會更清晰,更靈活。
在進行分解時,還需要關(guān)注原子功能之間的關(guān)聯(lián)關(guān)系,做到不可細分,互不重疊。
注意,功能的分解需要保持系統(tǒng)的完整性,也就是說,劃分出來的所有原子功能,要覆蓋整個系統(tǒng)的功能,而不存在沒有被劃分的系統(tǒng)功能,確保系統(tǒng)功能的完整性
二、功能定義及依賴
在實際操作過程中,作為產(chǎn)品人員,還需要對劃分的原子功能進行定義和建立原子功能間的依賴關(guān)系。
所謂功能定義其實就是對原子功能進行描述,定義它的名稱,關(guān)鍵字,內(nèi)容等相關(guān)信息。其中名稱和內(nèi)容便于對原子功能進行詳細的描述,而關(guān)鍵字,重在對該原子功能進行唯一標(biāo)識,在系統(tǒng)上需要時刻確保改該標(biāo)識的唯一性。
除對原子功能進行描述,在劃分過程中我們會發(fā)現(xiàn),并不是所有的原子功能都可單獨使用,有些功能需要依賴其他功能才能使用,功能與功能間存在一定的依賴關(guān)系。
例如,很多B端管理系統(tǒng)都具有“查看操作日志”這種功能,但“查看操作日志”往往依賴于“查看數(shù)據(jù)列表”,如果租戶沒有購買“查看數(shù)據(jù)列表”這個功能,那“查看操作日志”也是不能使用的。
所謂的功能依賴,就是指一個功能在沒有另外某些功能的情況下是不能使用的 。
三、功能包設(shè)計
通過劃分原子,對原子功能進行定義,及設(shè)計原子功能的依賴關(guān)系。我們基本實現(xiàn)了對系統(tǒng)功能的梳理,回到我們的出發(fā)點:為應(yīng)對客戶的“按需購買”而實現(xiàn)功能的可配置。
但其實,光具有原子功能,并不能高效的實現(xiàn)功能的可配置。
通過逐步細化及劃分,系統(tǒng)原子功能數(shù)量急劇增加,可達到幾十個,甚至可達到上百個。直接對這些原子功能進行管理是超級復(fù)雜的事情。而且這些原子功能之間的使用并不是完全獨立,很多功能操作是相關(guān)。
例如客戶的新建,查看,編輯,刪除這些功能都是一起使用,往往不存在單獨使用的情況。并且在前一步中我們也了解到,劃分的原子功能之間是存在依賴關(guān)系的,而這些具有依賴關(guān)系的原子功能總是綁定起來一起使用,從使用場景也可以看出,具有相同使用場景的原子功能不是具有操作關(guān)聯(lián)性就是具有依賴性。
所以在原子功能的基礎(chǔ)上,整合具有操作關(guān)聯(lián)性及依賴性的原子功能,以功能包的形式統(tǒng)一管理是十分有必要的。
所謂的功能包就是一組具有關(guān)聯(lián)性,依賴性的原子功能的集合體,功能包的設(shè)計遵循高內(nèi)聚,低耦合的原則,具有關(guān)聯(lián)性的原子功能聚合在一起,而功能包與功能包盡量減少依賴關(guān)系,進而保證每個功能包都盡可能單獨的進行操作使用。
四、定義銷售包
功能包已經(jīng)將具有關(guān)聯(lián)性的原子功能集合在一起了,但對于客戶而言,定義好的功能包仍不能單獨使用。所以為了讓客戶購買后能夠充分使用系統(tǒng),還需要按不同的商業(yè)意圖構(gòu)建適合用戶使用銷售包。
銷售包只是一種以向用戶銷售而定義功能包。例如但凡成型的SaaS應(yīng)用都會有最小版,標(biāo)準(zhǔn)版,完整版?;虼嬖诎纯蛻羲鶎傩袠I(yè)而定義的服務(wù)行業(yè)版,制造行業(yè)版等。這些都可以稱之為銷售包。
五、功能使用校驗
在前面已經(jīng)定義了原子功能,功能包,銷售包。在實際使用過程中,對用戶操作權(quán)限的校驗還是基于原子功能的,通過驗證改用戶是否具有改原子功能的操作權(quán)限,進而實現(xiàn)系統(tǒng)功能權(quán)限的控制。
上述基本是針對功能可配置的大致簡述,因為工作的需要,在不斷實踐及學(xué)習(xí)SaaS產(chǎn)品架構(gòu),前期已推出《SaaS可配置:數(shù)據(jù)可配置》,后期將會根據(jù)實際需要,不斷完善。
本文由 @老鬼 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash ,基于 CC0 協(xié)議
你好,請問有saas產(chǎn)品架構(gòu)方面的書籍推薦嗎
深度好文
hi~你好,看了你的配置化的系列文章,很有感觸,有點還不太明白,可以加你Wx詳細了解下么
原子功能包就是最小粒度權(quán)限了吧
最近在改造內(nèi)部的一個系統(tǒng)做SaaS平臺,一直在想多底拆到多細的粒度才合理,看了作者的文章,很受啟發(fā)
ess
我們做建筑行業(yè)垂直saas服務(wù),核心的業(yè)務(wù)自己研發(fā),但是其他cem想找pass外包商做,有能做成可配置的功能模塊的服務(wù)商么?
原子功能模塊的架構(gòu)設(shè)計,后期能極大的增加擴展性
難就難在原子服務(wù)的劃分和編排,太小了通信開銷成本增加,太大則耦合度太高
這已經(jīng)是我第三遍看該系列文章了,你說得這點確實值得更深入講解,期待大佬新文