深度-低代碼開發(fā)平臺和微服務(wù)架構(gòu)的優(yōu)勢與挑戰(zhàn)(低代碼開發(fā)平臺 架構(gòu))
前言
低代碼開發(fā)平臺和微服務(wù)架構(gòu)是當(dāng)前軟件開發(fā)領(lǐng)域的兩個熱門話題。它們都是為了更高效、更靈活地構(gòu)建和開發(fā)應(yīng)用程序而出現(xiàn)的解決方案。本文將以一款基于微服務(wù)架構(gòu)的OneCode引擎為案例來探討低代碼開發(fā)平臺和微服務(wù)架構(gòu)的優(yōu)勢和挑戰(zhàn)。
一,微服務(wù)架構(gòu)在低代碼平臺中的優(yōu)勢
(1) 微服務(wù)設(shè)計優(yōu)勢
微服務(wù)架構(gòu)是一種面向服務(wù)的架構(gòu)風(fēng)格,將應(yīng)用程序拆分為一組小型、自治的服務(wù)。以下是微服務(wù)架構(gòu)的一些主要優(yōu)勢:
1. 高度可擴(kuò)展:微服務(wù)架構(gòu)將應(yīng)用程序拆分成多個服務(wù),每個服務(wù)負(fù)責(zé)不同的業(yè)務(wù)功能。這種拆分使得應(yīng)用程序的各個模塊之間相互獨立,可以獨立部署和擴(kuò)展。當(dāng)某個服務(wù)需要擴(kuò)容時,只需增加該服務(wù)的實例即可,不會影響其他服務(wù)的性能。
2. 靈活性和可維護(hù)性:由于微服務(wù)架構(gòu)將應(yīng)用程序拆分成多個服務(wù),每個服務(wù)負(fù)責(zé)特定的功能,因此開發(fā)人員和團(tuán)隊可以更專注于某個特定領(lǐng)域的開發(fā)和維護(hù)。這提高了問題追蹤和修復(fù)的效率,同時也增加了應(yīng)用程序的靈活性,可以更快地適應(yīng)業(yè)務(wù)變化。
(2)低代碼平臺為什么要采用微服務(wù)設(shè)計
1,企業(yè)內(nèi)部整合開放式API需要微服務(wù)架構(gòu)
在企業(yè)應(yīng)用中,數(shù)據(jù)和業(yè)務(wù)通常會分散在不同的業(yè)務(wù)系統(tǒng)中,按照業(yè)務(wù)部門可以分為人事行政、項目、銷售、研發(fā)、生產(chǎn)等等;按照當(dāng)前的軟件類別又可以分為ERP、SCM、CRM、OA、PLM、MES等等,但在企業(yè)的數(shù)字化應(yīng)用場景中,按照業(yè)務(wù)類型通常包括數(shù)據(jù)信息管理、業(yè)務(wù)審批、各類報表分析以及其他業(yè)務(wù)。在低代碼應(yīng)用初期主要場景還在于基于各業(yè)務(wù)開放API之上的快速應(yīng)用擴(kuò)展,但發(fā)展到一定階段后,這些擴(kuò)展則會形成一些新的資源池。而這個資源池的最佳的管理方式則是采用微服務(wù)架構(gòu)的 apaas 平臺。在低代碼平臺設(shè)計中易用以及便捷性是首選但作為企業(yè)級應(yīng)用而言,對于基于 開放API的管理也是其必選的一個基礎(chǔ)性功能,而微服務(wù)則是這一管理應(yīng)用的最合適選擇。
2,低代碼平臺引擎化設(shè)計最佳實踐
我們在解釋什么是低代碼平臺時,最常用的關(guān)鍵字是:圖形化、拖拉拽方式快速實現(xiàn)。但這些簡單特性的背后,則是低代碼平臺的高復(fù)雜度設(shè)計,高度抽象概括,直至衍生出來一些專為低代碼應(yīng)用而生的“專職”低代碼引擎如:可視拖動引擎、流程驅(qū)動引擎、模型驅(qū)動設(shè)計(DDD)引擎、存儲引擎、以及專為各垂直行業(yè)而匹配的“IOT低代引擎”,“電商低代引擎”等等。這些引擎的設(shè)計為低代碼平臺賦予了更廣闊的應(yīng)用空間,但同時也為低代碼平臺帶來更多的復(fù)雜性。這在低代碼平臺自身的“內(nèi)部生態(tài)”中微服務(wù)設(shè)計則是不二的技術(shù)首選。
3,應(yīng)用服務(wù)持續(xù)集成devops最佳方式
在企業(yè)級應(yīng)用中,低代碼作為新生的事務(wù)。必然會先從一些邊緣業(yè)務(wù)開始,逐步向核心業(yè)務(wù)靠攏。而有實力嘗試低代碼引擎這種新技術(shù)的企業(yè),多數(shù)都具備了相對完善的發(fā)布和管理的流程。對每一個應(yīng)用的上線運行都有比較嚴(yán)格的流程安全規(guī)范。低代碼應(yīng)用如果仍然采用傳統(tǒng)部署方式上線則需要根據(jù)企業(yè)的自身的應(yīng)用發(fā)布測試流程進(jìn)行整合,完成代碼入庫、版本管理,發(fā)布腳本,測試腳本等等眾多技術(shù)性的要求。這顯然與低代碼本身的設(shè)計理念相悖,同時這些定制化也會大幅增加平臺服務(wù)方與用戶方工作量。解決這一問題最簡單的方式便是提供獨立的DevOps支持,特事特辦,針對輕應(yīng)用的特點,提供獨立的運行、測試、發(fā)布部署環(huán)境支持。在企業(yè)原有服務(wù)中作為一個獨立的服務(wù)中間件。而這些獨立的應(yīng)用服務(wù)則是微服務(wù)架構(gòu)的最佳實踐。
二,OneCode微服務(wù)私有云整體設(shè)計
onecode私有云結(jié)構(gòu)
OneCode私有云是OneCode低代碼引擎的開發(fā)依賴環(huán)境 ,OneCode低代引擎運行需要依賴一些集成環(huán)境來支持,這些支持可以根據(jù)具體的用戶場景來配置同時,OneCode也為這些提供了一些默認(rèn)的微服務(wù)實現(xiàn)。包括:
(1)支撐服務(wù)
- 開發(fā)代碼協(xié)同管理的 onecode-vfs 虛擬目錄服務(wù)
- onecode-org用戶認(rèn)證
- onecode-cluster集群節(jié)點管理
(2)應(yīng)用類服務(wù)
- onecode-bpm流程服務(wù)
- onecode-iot物聯(lián)網(wǎng)應(yīng)用支持
- onecode-jmq 消息服務(wù)
- onecode-index檢索服務(wù)
每一組服務(wù),onecode也都提供了獨立的SDK支持方便集成調(diào)用。
三,OneCode低代碼微服務(wù)私有云技術(shù)特點
(1)基于微服務(wù)結(jié)構(gòu)提供完備的集群分發(fā)及服務(wù)注冊發(fā)現(xiàn)服務(wù)
(2)獨立云存儲結(jié)構(gòu)實現(xiàn)高安全高彈性擴(kuò)展支持hdfs塊存儲便于超大規(guī)模部署
(3)基于事件響應(yīng)設(shè)計,采用實時架構(gòu)設(shè)計,支持mqtt協(xié)議便于高效便捷的接入設(shè)計
(4)提供采用微服務(wù)結(jié)構(gòu)的流程云引擎,支持標(biāo)準(zhǔn)XPDL2.0,BPMN協(xié)議流程導(dǎo)入
(5)獨特的多開發(fā)者、多應(yīng)用(租戶)支持,實現(xiàn)模板、主鍵、場景模型等多種資源共享公用
四,OneCode 私有云微服務(wù)配置
OneCode 在第四季度開放了,私有云的部署。并且在gitee碼云上上傳了,可以終身免費使用的低代碼開發(fā)云。
OneCode私有云部署包,本身是一個可以伸縮的部署程序包??梢酝ㄟ^調(diào)整本地的配置文件來完成各引擎是以微服務(wù)方式部署還是嵌入式部署:配置修改方式為修改配置包中 : /useresbbean_config.xml 文件。
(1)嵌入式啟動
如果是嵌入式部署則在pom文件中引入引擎jar
<dependency> <groupId>cn.raddev</groupId> <artifactId>onecode-vfs</artifactId> <version>1.1.1</version></dependency>
同時在useresbbean_config.xml 增加本地服務(wù)檢索。
//本地服務(wù)裝載AR<configid>esb</configid><esb> <cnname>本地服務(wù)</cnname> <path>/../lib/:^onecode.*.jar;./lib/:^onecode.*.jar;</path></esb>//檢索本地Class裝載服務(wù)<configid>local</configid>2<local> <templetname>檢索本地Class</templetname> <path>*com.ds</path></local>
(2)微服務(wù)配置
在pom中添加對應(yīng)的遠(yuǎn)程訪問SDK接口jar
<dependency> <groupId>cn.raddev</groupId> <artifactId>onecode-vfs-web</artifactId> <version>1.1.1</version></dependency>修改用戶服務(wù)配置文件 useresbbean_config.xml<configid>bpmservice</configid><bpmservice> <cnname>工作流服務(wù)</cnname> <path>bpm_tempbean_config.xml</path><tokenType>user</tokenType> <serverUrl>http://bpm.raddev.cn:9080</serverUrl> </bpmservice>
(3)通過云控制臺修改配置
五,OneCode應(yīng)用服務(wù)微服務(wù)支持
低代碼平臺引擎的微服務(wù)支持是低代應(yīng)用的核心特性。但如何管理好應(yīng)用服務(wù)并且能有機(jī)的融合到微服務(wù)體系中,成為微服務(wù)的關(guān)鍵組成部分則是更為關(guān)鍵的一個設(shè)計。
(1)應(yīng)用微服務(wù)開發(fā)組織方式
onecode在應(yīng)用服務(wù)開發(fā)方面采用了,多租戶的開發(fā)者模型設(shè)計。允許開發(fā)者使用開源的OneCode Studio使用開發(fā)者賬號登錄微服務(wù)開發(fā)云。并采用企業(yè)客戶,微服務(wù)工程管理,允許用戶自定義工程并將工程作為一個獨立部署的微服務(wù)節(jié)點發(fā)布。
(2)OneCode“工程”容器微服務(wù)技術(shù)設(shè)計
應(yīng)用服務(wù)發(fā)布需要三方面的資源做支撐,分別是用戶通過設(shè)計完成的頁面及功能交互,通過特定的特定的出碼模板完成相應(yīng)的技術(shù)棧前端轉(zhuǎn)換形成的前端頁面目錄。而后端應(yīng)用則根據(jù)則是用戶通過基礎(chǔ)數(shù)據(jù)建模形成的領(lǐng)域模型文件,這些領(lǐng)域模型文件通常會按照,資源庫、支撐域工程域等模型方式來獨立打包方便后期版本管理及個體更新。另外第三塊則是方便工程啟動運行以及訪問控制,對外暴露監(jiān)控等相關(guān)的工程配置信息。
(1)后端打包結(jié)構(gòu)總覽
低代碼應(yīng)用中如果要具備完整的建模以及對外應(yīng)用管理功能,就必然會涉及到后端數(shù)據(jù)建模以及基礎(chǔ)的邏輯編排功能,不同的平臺面向的開發(fā)者群體也會有所不同,有以解決簡單數(shù)據(jù)的增刪改查為目的初級數(shù)據(jù)庫建模應(yīng)用也有面向?qū)I(yè)開發(fā)者的領(lǐng)域建模應(yīng)用。但不管哪一類的平臺,在打包編譯輸出的時候。通常會采用一下模型來完成。
(2)服務(wù)模型微服務(wù)描述
服務(wù)模型接口描述,通常采用的是Rest的web服務(wù)模式,每個工程會設(shè)定相應(yīng)的命名控件,然后根據(jù)具體頁面的服務(wù)地址進(jìn)行重新的編排以樹形的的結(jié)構(gòu)來管理和展示webapi結(jié)構(gòu)。
在接口描述中通常會包含:
URL地址:標(biāo)識可通過WEB訪問的地址。
頁面綁定服務(wù)對象:當(dāng)通過數(shù)據(jù)接口獲取數(shù)據(jù)后將數(shù)據(jù)和前端的容器、列表、表格、樹形等具體的組件進(jìn)行綁定。
后端接收綁定:當(dāng)前端數(shù)據(jù)發(fā)生變化時通過ajax或者表單提交等方式將數(shù)據(jù)同步到后端數(shù)據(jù)模型。
服務(wù)模型接口描述,在打包應(yīng)用中是一個必備的選項,在完成打包后需要通知應(yīng)用服務(wù)器完成相關(guān)的服務(wù)注冊同時也為應(yīng)用服務(wù)權(quán)限等提供策略服務(wù)支撐。
資源(物料)目錄樹
用戶工程目錄樹:
用戶目錄樹是由用戶自行建立,同時也是工程編輯的入口,用戶通過目錄配置頁面路由。串聯(lián)相關(guān)功能。同時一些個性化的定義也有此導(dǎo)入。
前端支撐庫
主要跟開發(fā)者出碼時選擇的技術(shù)棧有關(guān),通常也是作為導(dǎo)出模板配置的基本屬性。在基礎(chǔ)基礎(chǔ)棧中會配合相應(yīng)的調(diào)試以及運行集成頁面,達(dá)到開箱即用的匹配能力。
后端服務(wù)
通用域打包