API低代碼開發(fā)平臺實踐(低代碼app開發(fā)平臺)
API低代碼開發(fā)平臺實踐。
一、前言
API低代碼平臺是面向業(yè)務人員和IT人員雙向驅(qū)動管理的能力平臺,擁有通用場景的可視化配置能力,滿足運營創(chuàng)新場景需求實現(xiàn),還具有優(yōu)異的開放性和擴展性,能夠通過二次開發(fā)實現(xiàn)企業(yè)規(guī)劃設計時的各類個性化場景需求,擴展方式不僅限于是代碼開發(fā),插件擴展,以及社會化插件引用等。
API低代碼平臺的技術(shù)門檻低、交付周期短、開發(fā)效率高、敏捷創(chuàng)新快等特點,能夠幫助企業(yè)在數(shù)字化轉(zhuǎn)型中快速實現(xiàn)“業(yè)務數(shù)字化”到“數(shù)字業(yè)務化”,完全符合數(shù)字化轉(zhuǎn)型趨勢的場景化,扁平化和在線化,是數(shù)字化轉(zhuǎn)型中必不可少的數(shù)字技術(shù)工具平臺。
二、API生命周期管理
上圖是完整的API低代碼平臺,整個API低代碼平臺簡單來講分為四個子系統(tǒng),即API服務網(wǎng)關、API開發(fā)子系統(tǒng)、API運維子系統(tǒng)、API引擎子系統(tǒng)。API服務網(wǎng)關提供API注冊和發(fā)現(xiàn)功能。PI開發(fā)子系統(tǒng)開發(fā)API服務接口。API引擎子系統(tǒng)暴露標準的API服務接口。API運維子系統(tǒng)負責從從引擎采集日志信息以及進行API性能監(jiān)控和日志監(jiān)控分析。API治理子系統(tǒng)實現(xiàn)API接口從設計、開發(fā)、測試、部署上線的全生命周期管理,也可以理解為API開發(fā)、API引擎、API 運維、API服務網(wǎng)關你的的一個統(tǒng)一管理門戶,實現(xiàn)和各的子系統(tǒng)集成,可以支持自動部署配置完成的API到微服務運行平臺。API運行環(huán)境則為API低代碼平臺提供可擴展、動態(tài)伸縮的運行環(huán)境。
三、API網(wǎng)關
API網(wǎng)關更多的是解決運行態(tài)的問題,API網(wǎng)關本身應該輕量化設計,主要實現(xiàn)API注冊、限流、熔斷、鑒權(quán)、反向代理等,不做太多的協(xié)議轉(zhuǎn)換、適配、數(shù)據(jù)映射等工作,這些工作應該放到API開發(fā)平臺來完成。在筆者的實踐中,采用了Kong API網(wǎng)關來擔當API低代碼平臺的服務網(wǎng)關,充分利用Kong強大的API實現(xiàn)API接口的注冊與發(fā)現(xiàn)、健康檢查、OAuth協(xié)議認證等。Kong作為API網(wǎng)關提供了API管理功能,及圍繞API管理實現(xiàn)了一些默認的插件,另外還具備集群水平擴展能力,從而提升整體吞吐量。Kong本身是基于OpenResty,可以在現(xiàn)有Kong的基礎上進行一些擴展,從而實現(xiàn)更復雜的特性。
在權(quán)限控制方面,通過服務網(wǎng)關OAuth2.0 authentication和安全控制插件ACL或Basic等插件,實現(xiàn)系統(tǒng)級權(quán)限認證和接口級權(quán)限認證,保證權(quán)限的安全。在流量控制方面,通過Rate-Limiting實現(xiàn)Consumer、Credential、IP、Service級別的限流,實現(xiàn)Second、Minute、Hour、Day、Month粒度的流控。
四、API開發(fā)子系統(tǒng)
API開發(fā)子系統(tǒng)最終就是開發(fā)完成并暴露一個標準的HTTP API接口,并將接口注冊和接入到API網(wǎng)關。API設計和開發(fā)的核心思想仍然應該是基于領域?qū)ο蠼r?qū)動,通過領域?qū)ο蠼:芎玫膶崿F(xiàn)接口和底層數(shù)據(jù)庫,數(shù)據(jù)庫表之間的解耦,也方便實現(xiàn)底層多數(shù)據(jù)庫,多表的支持能力。當前很多API快速開發(fā)平臺都是基于數(shù)據(jù)庫對象或表,直接發(fā)布類似CRUD的API接口服務,但是基于是數(shù)據(jù)庫表的直接發(fā)布,我們?nèi)匀唤ㄗh逆向?qū)ο筮@層,方便后續(xù)在對象層進行相關的組合,規(guī)則擴展等操作。
API開發(fā)子系統(tǒng)通過可視化頁面生成接口邏輯,并用腳本語言來描述API的業(yè)務邏輯和處理返回的數(shù)據(jù)結(jié)構(gòu)體,比如采用JavaScript。在接口設計過程中,常常預留可編程接口,比如本例中的API查詢腳本和API預后處理。下圖是API業(yè)務邏輯的例子。
在API開發(fā)子系統(tǒng)創(chuàng)建對象,并對數(shù)據(jù)項進行定義,對象是一個多層的樹狀結(jié)構(gòu)實體。一個對象可以向數(shù)據(jù)庫生成多張表。對于已經(jīng)存在的數(shù)據(jù)對象,也可以進行組合,將多個組合為一個復合對象結(jié)構(gòu)。對象的好處即是一個完整的對象屬于同一生命周期,可以一起進行事務控制。一個設計好的對象可以默認生成標準的POST,GET,DELETE等接口操作方法,類似下圖,整個對象接口契約的生成也應該是自動的。
五、API引擎子系統(tǒng)
API引擎子系統(tǒng)利用API開發(fā)平臺生成的接口配置信息,生成可利用的API接口,并通過API服務網(wǎng)關對外提供標準協(xié)議的API服務。API查詢腳本和API預后處理通常采用腳本語言來描述API的業(yè)務邏輯,比如采用JavaScript。API腳本常常采用JavaScript語言來表達,利用JS強大的語言特性,生成API的業(yè)務邏輯。通過腳本解釋器生成可執(zhí)行的腳本,然后發(fā)送到數(shù)據(jù)庫,并將執(zhí)行的結(jié)構(gòu)封裝成JSON結(jié)構(gòu)體。API預后處理采用預留接口來處理返回的數(shù)據(jù),比如采用JavaScript來處理查詢引擎返回JSON結(jié)構(gòu)體,然后返回給服務調(diào)用者。
六、API運維子系統(tǒng)
API運維子系統(tǒng)主要包括監(jiān)控和日志兩方面。監(jiān)控主要包括調(diào)用量、調(diào)用失敗次數(shù)、響應時間、調(diào)用數(shù)據(jù)量等。日志主要包括平臺自身日志和API日志,在本例中采用ES存儲日志。
七、API治理
API接口發(fā)布:對于完成的對象定義,可以選擇具體發(fā)布哪些API接口服務能力。比如可以只選擇發(fā)布查詢接口,也可以只選擇發(fā)布數(shù)據(jù)導入的POST接口等。注意API接口的發(fā)布,具體可以基于全局的對象建模,配置具體需要發(fā)布到接口的數(shù)據(jù)項信息。很多時候我們對數(shù)據(jù)對象的操作,并不是操作整個對象全集,而僅僅是部分數(shù)據(jù)項。
API接口模擬測試和驗證:可以對發(fā)布的API接口進行模擬測試和驗證,因此需要提供在線的API測試工具,能夠方便在線進行API接口的測試工作。同時可以對測試過的用例和測試數(shù)據(jù)進行保存。
API接口文檔生成:支持自動生成API接口文檔的能力。這個地方可以直接對接類似開源Swagger等工具來實現(xiàn)API接口文檔的自動生成功能。
八、總結(jié)
API低代碼平臺可以快速生成API接口,可以將多個對象或多個API接口服務打包到一個微服務應用再進行部署和發(fā)布,對微服務API進行打包處理。打包完成的微服務可以導出為獨立的JAR包進行部署,也可以直接在API開發(fā)平臺進行托管部署。對于API開發(fā)平臺本身應該對接到微服務運行平臺。