作者:京東零售 李春麗
作為一個(gè)技術(shù)架構(gòu)師,不僅僅要緊跟行業(yè)技術(shù)趨勢(shì),還要結(jié)合研發(fā)團(tuán)隊(duì)現(xiàn)狀及痛點(diǎn),探索新的交付方案。在日常中,你是否遇到如下問(wèn)題 “ 業(yè)務(wù)需求排期長(zhǎng)研發(fā)是瓶頸;非研發(fā)角色感受不到研發(fā)技改提效的變化;引入ISV 團(tuán)隊(duì)又擔(dān)心質(zhì)量和安全,培訓(xùn)周期長(zhǎng)“等等,基于此我們探索了一種新的技術(shù)體系及交付方案來(lái)解決如上問(wèn)題。
背景
嗨,大家都知道軟件研發(fā)需要許多角色共同協(xié)作,包括客戶(hù)、產(chǎn)品經(jīng)理、研發(fā)工程師、測(cè)試人員、實(shí)施運(yùn)營(yíng)團(tuán)隊(duì)等等。在這眾多角色中,研發(fā)工程師的人數(shù)占比最高,但是研發(fā)資源畢竟有限,隨著需求量不斷增加,在項(xiàng)目中還會(huì)聽(tīng)到如下吐槽:
1、研發(fā)團(tuán)隊(duì)排期瓶頸,非研發(fā)角色感受不到研發(fā)技改提效的變化。
2、引入ISV 團(tuán)隊(duì)又擔(dān)心質(zhì)量和安全問(wèn)題,而且培訓(xùn)成本高、周期長(zhǎng),在核心復(fù)雜系統(tǒng)中,不敢也無(wú)法短時(shí)間大規(guī)模引入。
不過(guò),如果有一種方法能夠?qū)崿F(xiàn)生態(tài)化交付和全民開(kāi)發(fā)的愿景,那就可以解決上述問(wèn)題了!這種方法可以讓所有角色,無(wú)論是技術(shù)還是非技術(shù)的,以安全、更簡(jiǎn)單的方式參與進(jìn)來(lái)。
這樣一來(lái),就可以在不增加團(tuán)隊(duì)人數(shù)的情況下,提高團(tuán)隊(duì)的吞吐量,實(shí)現(xiàn)更高效的需求交付,是不是很奇妙呢?
挑戰(zhàn)
為了達(dá)到生態(tài)化交付和全民開(kāi)發(fā)的愿景,我們需要解決如下幾個(gè)問(wèn)題?
1、如何讓非技術(shù)角色實(shí)現(xiàn)研發(fā)的交付?
2、如何讓全民開(kāi)發(fā)者完整實(shí)現(xiàn)一個(gè)需求閉環(huán),而非僅僅實(shí)現(xiàn)其中一部分需求?
3、如何解決交付中核心系統(tǒng)安全問(wèn)題?
我們帶這幾個(gè)問(wèn)題看下解決方案。在講技術(shù)方案之前,我們先站在客戶(hù)角度,從整體看一下,一個(gè)系統(tǒng)的需求都來(lái)自哪里?而我們都知道比起從0-1新做一個(gè)系統(tǒng),二次擴(kuò)展類(lèi)需求更加復(fù)雜,我們今天就以二次擴(kuò)展類(lèi)需求入手和大家一起分享下,在京東智能供應(yīng)鏈Y做的一些實(shí)踐。
方案
設(shè)計(jì)思路
如上圖就是任意一個(gè)系統(tǒng)中二次擴(kuò)展類(lèi)需求分類(lèi)的最大集合,主要有8類(lèi):API類(lèi)、參數(shù)類(lèi)、模版類(lèi),界面類(lèi)、流程類(lèi)、規(guī)則類(lèi)及數(shù)據(jù)庫(kù)類(lèi)。
1、API類(lèi):主要是新增API和在原有API的擴(kuò)展,例如,原有API上新增一些屬性。
2、模版類(lèi):主要是新增一個(gè)模版。例如,制作一類(lèi)新的合同模版或問(wèn)卷調(diào)研,各部門(mén)填報(bào)填寫(xiě)。
3、參數(shù)類(lèi):主要是新增KV類(lèi)的參數(shù)。例如,新增“是否包括自營(yíng)商品“參數(shù),并讓這些參數(shù)在某些邏輯中起到作用。
4、UI類(lèi):主要是新增菜單、按鈕、布局、圖表、校驗(yàn)規(guī)則等。例如新增一個(gè)外呼按鈕,并調(diào)用外呼系統(tǒng) 接口。
5、流程類(lèi):在原有流程節(jié)點(diǎn)中新增新的節(jié)點(diǎn)。
6、規(guī)則類(lèi):在原有的規(guī)則前、后等,新增新的規(guī)則。
7、數(shù)據(jù)庫(kù)類(lèi):在原有表中增加新的屬性,或者新增一個(gè)子表。
8、最后還有一類(lèi)其他:無(wú)法劃分為某一類(lèi),需要復(fù)雜的邏輯處理實(shí)現(xiàn)。例如 數(shù)據(jù)重新聚合與邏輯運(yùn)算
我們就基于這些研發(fā)的需求類(lèi)型,設(shè)計(jì)一套技術(shù)體系,實(shí)現(xiàn)生態(tài)化交付和全民開(kāi)發(fā)的愿景。
技術(shù)方案
我們把軟件系統(tǒng)分成三層,建立完整的全鏈路擴(kuò)展技術(shù)體系,在把這些能力通過(guò)零低代碼手段把他們進(jìn)行打通、包裝和開(kāi)放,就可以實(shí)現(xiàn)屏蔽源代碼的情況下,對(duì)系統(tǒng)進(jìn)行安全、簡(jiǎn)單、閉環(huán)的二次增強(qiáng),進(jìn)而達(dá)到全民開(kāi)發(fā)的目標(biāo)。具體包括:
1、界面層:該層擴(kuò)展主要手段就是零低代碼技術(shù)。
2、接口層:該層擴(kuò)展主要手段就是依靠不同模型之前的映射來(lái)解決,而模型的擴(kuò)展就可以依靠對(duì)象擴(kuò)展來(lái)解決。
3、服務(wù)層:該層擴(kuò)展主要依靠流程、規(guī)則引擎來(lái)實(shí)現(xiàn),這個(gè)業(yè)界有很多開(kāi)源工具,例如activity和drools等。另外還有很多場(chǎng)景是復(fù)雜的邏輯變更,這個(gè)可以依靠插件、事件驅(qū)動(dòng)模式來(lái)實(shí)現(xiàn)。
4、模型層:該層擴(kuò)展主要手段就是依靠元數(shù)據(jù)驅(qū)動(dòng),通過(guò)依賴(lài)元數(shù)據(jù)對(duì)象,而非底層物理數(shù)據(jù)庫(kù)。
以上能力,在通過(guò)最后零代碼技術(shù)的加持和封裝,實(shí)現(xiàn)可視化配置,形成一個(gè)工作空間,在對(duì)工作空間進(jìn)行分角色授權(quán),讓不同角色以熟悉的語(yǔ)言進(jìn)行操作,這樣就可以實(shí)現(xiàn)生態(tài)化交付和全民開(kāi)發(fā)的愿景。
所以說(shuō)擴(kuò)展的技術(shù)體系不是一個(gè)單一的解決方案,它需要零低代碼、插件、業(yè)務(wù)事件、元數(shù)據(jù)驅(qū)動(dòng)、流程規(guī)則引擎等技術(shù)共同協(xié)作才可以。而難點(diǎn)是這幾個(gè)技術(shù)需要互相搭配好,實(shí)現(xiàn)擴(kuò)展的互認(rèn),例如我們?cè)趯?duì)象模型擴(kuò)展中增加了一個(gè)屬性,這個(gè)屬性需要在界面展示、需要在接口中透?jìng)鳌⑿枰谝?guī)則中校驗(yàn),這就需要做好頂層架構(gòu)設(shè)計(jì)。
我們通過(guò)幾個(gè)案例來(lái)描述,它需要和可以實(shí)現(xiàn)哪些能力?
案例
案例1:讓非技術(shù)參與進(jìn)來(lái),體會(huì)技術(shù)提效的變化
需求描述:基于業(yè)務(wù)變化,一個(gè)核心系統(tǒng),需新增 “渠道類(lèi)型” 這個(gè)屬性,改動(dòng)涉及:
1、數(shù)據(jù)模型變化(技術(shù)上:數(shù)據(jù)庫(kù)字段變化)
2、后端服務(wù)及規(guī)則變化(技術(shù)上:接口變化、對(duì)象變化、判斷規(guī)則變化等)、
3、展現(xiàn)界面變化(技術(shù)上:UI 界面增加帶數(shù)據(jù)權(quán)限的查詢(xún)條件、表格新列及圖表增加等),
也就是需要軟件不同層次的進(jìn)行變化。通常,這些特別技術(shù)的需求變更,只能技術(shù)排期做,但是通過(guò)這種新方式。產(chǎn)品經(jīng)理/客戶(hù)就可以在無(wú)需等待,7 分鐘內(nèi),全程零代碼的模式下完成。
1、在對(duì)象擴(kuò)展中,增加新的屬性。
2、在規(guī)則引擎中,基于新的屬性,編排增加新的校驗(yàn)。
3、在界面擴(kuò)展中,把在對(duì)象擴(kuò)展中的新列拖拽出來(lái),展示為查詢(xún)條件,并制作一個(gè)新的餅狀圖展示到界面。
通過(guò)這個(gè)案例,也就是說(shuō)我們可以把黑盒的研發(fā)工作,安全、高效的交付給其非研發(fā)角色自助完成,提升交付效率,減低溝通成本。另外還有一點(diǎn)值得一提,這種方式也讓非技術(shù)人員,可以直觀的感受到技術(shù)提效的變化。
案例2:不觸及代碼情況下,實(shí)現(xiàn)安全一站式開(kāi)發(fā)
需求描述:基于業(yè)務(wù)變化,一個(gè)核心系統(tǒng),需要與客服系統(tǒng)集成,實(shí)現(xiàn)對(duì)某類(lèi)特殊業(yè)務(wù)的客服外呼,改動(dòng)涉及:
1、新增一個(gè)外呼按鈕
2、新增前端規(guī)則校驗(yàn),只有履約數(shù)據(jù)滯留2天的才需要進(jìn)行客服介入。
3、調(diào)用外呼接口,組裝數(shù)據(jù)增加復(fù)雜邏輯并傳遞。
4、發(fā)送郵件通知相關(guān)角色。
同樣,這些也是特別技術(shù)的需求變更,原來(lái)只能原廠技術(shù)開(kāi)發(fā)來(lái)排期做,但是通過(guò)這種新方式。客戶(hù)IT或ISV,就可以在不觸及代碼的情況下,通過(guò)統(tǒng)一平臺(tái)一站式完成需求的變更。
1、在界面層中,通過(guò)零低代碼手段完成按鈕新增。
2、在界面層中,通過(guò)零低代碼手段完成規(guī)則校驗(yàn)的新增。
3、在服務(wù)層中,通過(guò)插件方式,實(shí)現(xiàn)代碼邏輯處理,并調(diào)用外呼接口。
4、在服務(wù)層中,通過(guò)事件訂閱方式,監(jiān)聽(tīng)外呼狀態(tài),配置郵件模版,實(shí)現(xiàn)郵件自動(dòng)發(fā)送。
通過(guò)這個(gè)案例,我們可以看出來(lái),業(yè)務(wù)需求具有多變性,不能僅僅依靠一種手段完成擴(kuò)展,需要多種方式進(jìn)行搭配,才能實(shí)現(xiàn)大幅度提效。
結(jié)束
其實(shí)零低代碼、插件、業(yè)務(wù)事件、元數(shù)據(jù)驅(qū)動(dòng)、流程規(guī)則引擎等技術(shù)在行業(yè)中并不是一個(gè)新事物,而這些技術(shù)可以互相搭配,實(shí)現(xiàn)完美集成和互認(rèn),讓用戶(hù)在一個(gè)平臺(tái)針對(duì)不同業(yè)務(wù)的場(chǎng)景使用合適的技術(shù),完成需求的自助化,是個(gè)難點(diǎn)。它不僅僅需要平臺(tái)技術(shù),還需要對(duì)業(yè)務(wù)系統(tǒng)需要合理的抽象、抽取。
最后,我們?cè)诨剡^(guò)頭看看最開(kāi)始的技術(shù)挑戰(zhàn)。是不是都解決了呢?
1、如何讓非技術(shù)角色實(shí)現(xiàn)研發(fā)的交付?答:通過(guò)零低代碼模式進(jìn)行封裝和開(kāi)放。
2、如何讓全民開(kāi)發(fā)者完整實(shí)現(xiàn)一個(gè)需求閉環(huán),而非僅僅實(shí)現(xiàn)其中一部分需求?答:需要全鏈路開(kāi)放和打通,并不僅局限一種技術(shù)手段。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-418202.html
3、如何解決交付中核心系統(tǒng)安全問(wèn)題?答:屏蔽源代碼的完整擴(kuò)展體系。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-418202.html
到了這里,關(guān)于軟件架構(gòu)生態(tài)化-多角色交付的探索實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!