通過簡單的拖拉拽操作,而不用編寫復雜的代碼,實現(xiàn)少寫代碼或者不寫代碼,就能快速高效完成業(yè)務目標。
01 低代碼平臺演進
1. 低代碼概念
低代碼是無需編碼(0 代碼)或通過少量代碼就可以快速生成應用程序的開發(fā)平臺。
通過可視化進行應用程序開發(fā)的方法,具有不同經(jīng)驗水平的開發(fā)人員可以通過圖形化的用戶界面,使用拖拽組件和模型驅(qū)動的邏輯來創(chuàng)建網(wǎng)頁和移動應用程序。
2. 低代碼衍生歷程
- 20 世紀 80 年代,第四代編程語言出現(xiàn)。
- 2000 年 VPL 可視化編程語言的誕生,是低代碼產(chǎn)品的前驅(qū),都可以通過一些可視化的界面來進行操作。
- 2014 年 業(yè)界咨詢機構(gòu) Forrester 低代碼/零代碼概念。
- 2016 年 國內(nèi)低代碼平臺相繼發(fā)布。
- 2018 年 業(yè)界咨詢機構(gòu) Gartner 提出 aPaaS 和 iPaas 的概念。
- 2021 年 中國市場低代碼生態(tài)體系逐步建立。
3. 為什么要用低代碼 ?
1)降本增效,便捷開發(fā)
低代碼開發(fā)能夠為企業(yè)降低成本,提升效率。在過去,低代碼平臺出現(xiàn)之前,傳統(tǒng)的原生代碼開發(fā)平臺需要進行代碼開發(fā),開發(fā)完成之后需要進行測試以及 bug 修復的一系列繁瑣工作。
此外,傳統(tǒng)的原生代碼開發(fā)平臺涉及到一些上下游合作方是緊耦合的串行開發(fā)模型,依賴方不提供接口,上游服務也沒有辦法進行該接口的開發(fā)工作。這增加了開發(fā)過程中大量的溝通成本和時間成本。
低代碼開發(fā)平臺出現(xiàn)后,研發(fā)人員可以通過前端圖形化的拖拉拽實現(xiàn)需求,實現(xiàn)了研發(fā)效率的提高,使用低代碼平臺降低了研發(fā)人員的工作量和對編碼人員開發(fā)技能的要求。低代碼平臺套用封裝代碼,基本消除測試修復 bug 的環(huán)節(jié)。同時,低代碼開發(fā)平臺是松耦合的并發(fā)開發(fā)模型,大大降低開發(fā)中對合作方的依賴性,從而降低溝通和時間成本。
2)打破業(yè)務瓶頸,增強跨職能溝通
傳統(tǒng)開發(fā)模式下:業(yè)務、產(chǎn)品、設計、開發(fā)、測試與運維人員各司其職,且各有一套領(lǐng)域內(nèi)的工具和語言,長久以來很容易形成一個個 “豎井” ,讓跨職能的溝通變得困難而低效。
有了低代碼后,我們能夠基于低代碼快速地進行開發(fā),這一狀況將得到改善。由于低代碼上手容易,無需經(jīng)過太多專業(yè)的訓練,業(yè)務人員也可以快速上手,通過“拖拉拽”,基于模板或者可視化界面快速生成應用,從而打破業(yè)務壁壘。
3)提高產(chǎn)品的靈活性
企業(yè)可以利用低代碼平臺發(fā)可以輕松地更改應用和業(yè)務流程,而無需花費大量時間編寫代碼。應用和系統(tǒng)的靈活性、可操作性和可更改性大大提高。
4)加快數(shù)字化轉(zhuǎn)型
在經(jīng)濟新常態(tài)下,為了提高經(jīng)營效率和經(jīng)營表現(xiàn),數(shù)字化轉(zhuǎn)型是大多數(shù)傳統(tǒng)企業(yè)的目標,而低代碼技術(shù)可以幫助企業(yè)更快更好地完成數(shù)字化轉(zhuǎn)型。
相比于純代碼開發(fā),使用低代碼開發(fā)企業(yè)應用能將項目的交付周期大幅縮短,從而更敏捷地完成項目交付,大幅提升企業(yè)數(shù)字化的速度。敏捷交付的背后是更多次數(shù)的迭代,以及軟件系統(tǒng)與企業(yè)貼合度的大幅提升,而這點是企業(yè)數(shù)字化轉(zhuǎn)型成敗的關(guān)鍵。
4.全代碼&低代碼&無代碼對比
此處用一個象限圖來說明業(yè)界低代碼的演進方向,首先從看到圖中的箭頭,左下到右上,我們從傳統(tǒng)的編程模式是逐漸向無碼化來演進的。
左下的代碼編程,就是我們傳統(tǒng)的編程階段。前提是需要有一些比較強的編程能力。從早期的低級語言、到高級語言、進而到類庫的提供、以及組件的使用。
右上的無碼操作,指的是無代碼、通用 SaaS 類的產(chǎn)品是可以讓我們進行簡單快捷地進行操作生成應用,但他們的靈活性是不夠的,如果要支持靈活性和擴展性往往需要我們改變他們。
有沒有一種更好的方式,能夠支持這種情況?我認為最理想的情況是,在開發(fā)者不懂前端語言(JavaScript 等)或者不懂后端語言(Php、Java 等)的情況下,依然能開發(fā)一個足夠靈活、足夠通用的應用。我認為,低代碼平臺就是最接近這一個領(lǐng)域的手段,因其可以同時兼顧靈活性和業(yè)務邏輯,從而達到最適合開發(fā)小白的需求的理想狀態(tài)。
5.低代碼市場分析
低代碼行業(yè)最近幾年一直被知名咨詢機構(gòu) Gartner 所關(guān)注。目前,國內(nèi)外都有很多企業(yè)在加入低代碼平臺搭建,足以說明這個行業(yè)的市場認可程度。
從咨詢機構(gòu) Gartner 的市場分析來看,2023 年全球超過 50% 的大中型企業(yè)將把低代碼應用平臺作為主要的占領(lǐng)應用平臺之一。預計到 2024 年,低代碼應用程序開發(fā)將占總應用開發(fā)的 65%以上。
6.低碼平臺核心能力
低代碼的平臺具備的核心能力要素,我認為有四點:
- 可視化開發(fā)
- 數(shù)據(jù)模型驅(qū)動
- 擴展性
- 工程化
圖片
下面針對以上四點逐一分析:
(1) 可視化開發(fā)
業(yè)務人員基于可視化的頁面或工具能夠進行簡單拖拉拽、可以形成一個頁面信息。
他們也能夠基于可視化界面來配置定義數(shù)據(jù)源和數(shù)據(jù)模型、簡單定義一個流程,可以執(zhí)行工作流。
總而言之,就是前端拖拉拽可以形成前端的交互語言,進而生成后端可以執(zhí)行的計算機語言。
(2) 數(shù)據(jù)模型驅(qū)動
低代碼平臺,能夠可以通過頁面上的操作進行定義一個模型定義,可以靈活的定義模型中的字段、也可以進行相關(guān)數(shù)據(jù)表的關(guān)聯(lián)操作,以及設置數(shù)據(jù)模型的規(guī)則和索引。
a. 模型定義
進行數(shù)據(jù)庫模型的設計、添加字段,設置字段的類型以及索引
b. 模型關(guān)聯(lián)
建立數(shù)據(jù)庫表與表之間的關(guān)系,具體表現(xiàn)為 1 對 n,n 對 n,n 對 1、1 對 1 等關(guān)聯(lián)關(guān)系
c. 數(shù)據(jù)操作
基于數(shù)據(jù)庫表對外提供一個 CRUD 的操作,讓應用能夠操作該數(shù)據(jù)模型
(3) 擴展性
是指低代碼平臺是否可以提供一些機制來進行擴展。
具體的擴展方式有以下三點:
a. 擴展語言
低代碼平臺是否能夠我熟悉的語言來擴展,假如我是前端開發(fā)者,能否提供前端熟悉的語言來擴展,假如我是后端開發(fā)者,能否基于寫一些后端代碼(Java 、Go 等)來擴展。
b. 邏輯擴展
低代碼平臺能否通過定義一些流程圖也進行業(yè)務邏輯的擴展,來執(zhí)行業(yè)務 if、else 的流程來做業(yè)務上的一些調(diào)用。
c. API 集成
低代碼平臺是否可以通過低碼平臺搭建的應用與第三方公司已有的系統(tǒng)或者服務做集成,能否在低碼中通過 API 做集成過來,供我的應用來調(diào)用集成。
(4) 工程化
低代碼平臺是否可以進行本地開發(fā)調(diào)試、版本控制、自動構(gòu)建發(fā)布上線、免運費以及監(jiān)控的一些能力。簡單來說是否在該平臺上一站式配套的能力。
a. 擴展語言
低代碼平臺要能夠進行本地的開發(fā)調(diào)試。
b. 版本管理
低代碼平臺可以進行版本回退操作,以及有能力可以預留體驗,回退體驗的時候不會影響到發(fā)布態(tài)的產(chǎn)物。
c. 自動化
低代碼平臺可以自動構(gòu)建發(fā)布上線、免運費以及配套監(jiān)控的一站式能力。
02 微搭低代碼架構(gòu)和開發(fā)簡介
1. 微搭低代碼介紹
微搭低代碼平臺是高效、高性能的拖拽式低代碼開發(fā)平臺,向上連接前端的行業(yè)業(yè)務,向下連接云計算的海量能力,助力企業(yè)垂直上云。微搭以云開發(fā)作為底層支撐,云原生能力將應用搭建的全鏈路打通,提供高度開放的開發(fā)環(huán)境。
微搭低代碼是低代碼應用程序平臺(LCAPS) 多維體驗開發(fā)平臺(MXDP)的結(jié)合體。
我們有以下能力:
1)多端支持
一套代碼,可以同時支持多端、小程序、web、pc 都可用。
2)生態(tài)集成
我們內(nèi)部集成了騰訊文檔,騰訊會議、微信支付、企微等能力,可以一站式用用戶提供能力。
3)高階組件
內(nèi)部提供了模型組件、企業(yè)工作臺等高階組件。
- 開箱即用提供了開箱即用的能力,可以通過我們的應用市場、模板中心可以快速的進行業(yè)務開發(fā)和發(fā)布。
- 云端一體底層是 serverless 云原生技術(shù),業(yè)務開發(fā)完成之后,業(yè)務上的是免運維免部署。
- 統(tǒng)一管理提供了框架開發(fā)的規(guī)范,便于統(tǒng)一的管理。
- 高擴展性支持高擴展性,高擴展性能夠自定義組件、第三方數(shù)據(jù)源完成自定義邏輯的擴展。
- 混合開發(fā)業(yè)務模式上支持 可視化開發(fā)、低代碼開發(fā)的能力。
2. 微搭低代碼產(chǎn)品架構(gòu)
微搭低代碼提供了應用開發(fā)的一站式低代碼開發(fā)服務,從底層能力迭代至行業(yè)級方案,云原生全鏈路支撐為您的應用保駕護航,讓您能夠完全專注于業(yè)務場景,小白也可以極速搭建出成熟、專業(yè)的應用。
3. 微搭低代碼后端實踐
我們看下微搭低代碼的后端實踐,那么我們思考下后端低代碼需要解決什么問題?我認為應該有四點,以及具體在微搭低代碼平臺是如何實踐的:
1、業(yè)務數(shù)據(jù)如何存?如何實現(xiàn)自定義數(shù)據(jù)存儲?
微搭低代碼抽象出了數(shù)據(jù)模型。
2、如何實現(xiàn)業(yè)務流程流轉(zhuǎn)?
微搭低代碼基于工作流來進行業(yè)務流程流轉(zhuǎn)。
3、業(yè)務數(shù)據(jù)和流程流轉(zhuǎn),那些人可以訪問和控制?
微搭低代碼建立了用戶權(quán)限平臺,來進行人員角色的控制。
4、如何進行服務端邏輯的自定義擴展?
微搭低代碼通過云函數(shù)來實現(xiàn)后端服務的自定義擴展能力。
所以我們微搭低代碼后端開發(fā)實踐分為以下四種:
數(shù)據(jù)模型、工作流、角色權(quán)限、服務端擴展。
我們逐一看下具體每個是如何設計的:
1、數(shù)據(jù)模型
數(shù)據(jù)模型基于業(yè)界標準的能力 JSONSchema 來進行擴展,數(shù)據(jù)模型分為內(nèi)部數(shù)據(jù)源和外部數(shù)據(jù)源兩種。
數(shù)據(jù)模型 – 內(nèi)部數(shù)據(jù)源:
為我們提供數(shù)據(jù)模型定義,索引、以及各種數(shù)據(jù)模型的關(guān)系。
我們可以靈活的來自定義數(shù)據(jù)字段,以及字段的索引功能。
也能過提供標準通用的能力,比如新增、刪除、查詢、更新等。
數(shù)據(jù)模型 – 外部數(shù)據(jù)源
連接器:
連接器可以打通外部應用數(shù)據(jù)或調(diào)用外部應用開放的服務,開發(fā)者只需要對連接器完成授權(quán)或少量填寫一些配置信息,即可使用對應產(chǎn)品的服務接口。
我們內(nèi)部集成一些企業(yè)級的應用,比如騰訊會議、騰訊文檔、騰訊地圖、微信支付等應用,方便快速提供一些企業(yè)級的能力給到開發(fā)者。
自定義連接器
自定義連接器支持調(diào)用第三方服務接口或使用代碼來實現(xiàn)業(yè)務邏輯。開發(fā)者可以在應用、工作流、自定義數(shù)據(jù)模型中使用。
分為 http 和云函數(shù)模式:
http:開放式 API,用戶來鏈接外部的服務,與外部 API 來做集成。
云函數(shù)模式:完全自定義,當用戶以上所有的場景均不能滿足的時候,可以通過云函數(shù)的來手動寫一些代碼來自定義一些邏輯,實現(xiàn)業(yè)務上的邏輯擴展。
2、工作流
工作流基于業(yè)界標準 bpmn 協(xié)議來擴展,數(shù)據(jù)展示和存儲基于標準 JSON 來處理可讀性更高。
微搭工作流的觸發(fā)時間:
- 可配置觸發(fā)時機:
即時時機、也支持定時觸發(fā)??梢酝ㄟ^配置一些節(jié)點,來執(zhí)行業(yè)務邏輯的操作。
- 操作節(jié)點:
我們支持審批節(jié)點、自動化節(jié)點、數(shù)據(jù)源變更通知、加簽、轉(zhuǎn)簽等操作。通知節(jié)點與消息模板集成,可以發(fā)送系統(tǒng)站內(nèi)信、與企微打通,可以發(fā)送企微系統(tǒng)消息。我們也支持本地調(diào)試,支持版本回溯能力。
3、角色權(quán)限
角色權(quán)限整體遵循 RBAC 模型來進行設計的,業(yè)務上可靈活的支持擴展。具體用戶能夠訪問哪些頁面、數(shù)據(jù)源、以及流程權(quán)限等,我們也支持設置一些權(quán)限集,以便于靈活地進行業(yè)務上權(quán)限的擴展。
從下邊的圖可以看到,我們可以控制普通應用的訪問權(quán)限,頁面權(quán)限以及頁面下的按鈕權(quán)限,也可以控制模型應用的權(quán)限;
可以控制數(shù)據(jù)源的行記錄,數(shù)據(jù)源方法權(quán)限,數(shù)據(jù)源列權(quán)限,也能夠?qū)α鞒痰脑L問權(quán)限做控制,還可以控制企業(yè)工作的訪問和登錄權(quán)限等操作。
4、服務端擴展
服務端的擴展基于云函數(shù)的能力,通過頁面可視化編寫代碼來進行服務端邏輯的擴展??梢宰鲆恍?shù)據(jù)表的聚合,以及 CRUD 等操作方法。
云函數(shù)(Serverless Cloud Function,SCF)是騰訊云為企業(yè)和開發(fā)者們提供的無服務器執(zhí)行環(huán)境,幫助您在無需購買和管理服務器的情況下運行代碼。您只需使用平臺支持的語言編寫核心代碼并設置代碼運行的條件,即可在騰訊云基礎設施上彈性、安全地運行代碼。
4. 微搭應用開發(fā)流程
此處將介紹基于微搭拖拉拽來快速構(gòu)建一個應用的生命周期,整個低碼應用開發(fā)和運行的生命周期,以及低碼在設計態(tài)和運行態(tài)做了什么。
在微搭的應用開發(fā)流程中,微搭應用的生命周期分為設計態(tài)和開發(fā)態(tài)。
1)設計態(tài)
我們通過前端可視化的界面和組件,進行表單定義模型及定義模型關(guān)聯(lián)關(guān)系。我們還可以針對表單配置用戶和權(quán)限、也可以通過頁面來操作配置一些工作流。我們可以拖拉拽配置一些頁面,生成頁面的 DSL。配置數(shù)據(jù)模型,生成數(shù)據(jù)的 JSONSchema DSL。配置流程生成流程的 BPMN 擴展,基于角色綁定用戶權(quán)限,生成 RBAC 模型的 DSL。
在發(fā)布的時候,我們前端 H5 會生成 Reat 代碼、小程序會生成小程序代碼。發(fā)布之后,前端代碼會發(fā)布在靜態(tài)托管中,服務端自定義擴展服務邏輯是部署在云函數(shù)中。
2)運行態(tài)
客戶會從 web 或者小程序發(fā)起調(diào)用,會經(jīng)過訪問經(jīng)過我們的靜態(tài)托管以及云函數(shù)和云數(shù)據(jù)庫,進而將請求分為到微搭側(cè)后端中心化服務,和企業(yè)第三方服務。
5. 微搭高可用服務能力
一個高可用的服務需要從部署、變更、預案、監(jiān)控、安全等多方面考慮。達到 99.99%服務高可用的目標,需要各角色的工程師共同努力。本文簡單介紹下微搭在消除單點和彈性伸縮這塊的實踐。
消除單點
單點有兩種場景:一種是某個模塊僅部署了一個實例;第二種是某個模塊雖然部署了多個實例,但任意實例故障都會導致服務整體或者大面積不可用。如何識別系統(tǒng)單點?通過排查模塊的實例數(shù)量和進行破壞性測試來發(fā)現(xiàn)系統(tǒng)中是否存在單點。對于已知的單點,則應該盡量做好預案,減少故障時長。
針對這種情況,微搭一是在每個集群部署了多個 POD 來消除集群內(nèi)單點,另外一塊針對集群 1 整體掛掉的情況下,也可快速切換集群來消除單點,保障服務的穩(wěn)定性。
彈性伸縮
彈性伸縮是根據(jù)業(yè)務需求和策略,針對無狀態(tài)的服務,通過定時、閾值設定等方式,自動調(diào)整集群規(guī)模,舉例來說,對于大促,機房故障等災難場景,能夠很好的提升可用性。伸縮顧名思義,有伸也有縮,縮的特性,可能讓集群維持在一個合理的規(guī)模上,從而避免造成不必要的成本浪費。因此,彈性伸縮也是常態(tài)下系統(tǒng)保持可用性的重要手段。
微搭是基于 serverless 自動彈性伸縮云原生的能力,來保證我們后端服務整體的高可用。當流量高的時候自動來擴容機器,當流量低的來實時縮容服務器。
03 微低代碼的未來趨勢
從 2020 年開始,低代碼成為了業(yè)界熱點,無論是資本市場還是企業(yè)用戶都紛紛追捧。那么在未來,低代碼平臺會如何發(fā)展呢?在我個人理解中,低代碼平臺開發(fā)將會沿兩個緯度演進:
1、通用性,也就是語言屬性維度;隨著低代碼開發(fā)平臺的不斷成熟和發(fā)展,低代碼開發(fā)平臺逐漸具備通用場景的開發(fā)能力,例如可以開發(fā)網(wǎng)站、游戲、3D 場景、電商、企業(yè)應用、個人應用;支持的系統(tǒng)也會更加全面,例如支持 WebApp、iOS/Android、Windows/Mac/Linux、小程序等各種應用。
2、便捷性,也就是指代碼量不斷降低的過程,最終將實現(xiàn) 0 代碼編程。
但是通用性和便捷性要想同時實現(xiàn),是非常困難的,這也是低代碼開發(fā)平臺急需解決的問題和下一個挑戰(zhàn)。最終使“去掉程序語法,保留程序邏輯”成為可能。
最后也回答下大家比較關(guān)心的一個問題:低代碼會取代程序員嗎?
我認為低代碼解決的是可抽象的,通用的且可復用的產(chǎn)品能力,程序員作為高端技術(shù)人才,市場缺口巨大,低代碼工具是將程序員從現(xiàn)有的重復的枯燥的接口開發(fā)中解放出來。程序員應該更關(guān)注業(yè)務創(chuàng)造方面的技術(shù)研究和開發(fā)。低代碼是工具,低代碼與程序員之間的關(guān)系就像翻譯軟件與譯者,數(shù)據(jù)統(tǒng)計系統(tǒng)與數(shù)據(jù)分析師,工具的目的是減少重復的勞作而將人力投入更有意義、有價值的研究之中。
本文作者:
謝艷祥
騰訊云微搭高級工程師,專注于后端研發(fā)效能提升,工程化體系建設。
在性能優(yōu)化、研發(fā)效能、架構(gòu)高可用設計等方向有一定的落地實踐經(jīng)驗。
騰訊云微搭低代碼(https://cloud.tencent.com/product/weda)是高效、高性能的企業(yè)級低代碼平臺。幫助開發(fā)者快速搭建支持多種業(yè)務場景的小程序、H5、PC WEB 應用,通過簡單的拖拉拽操作,而不用編寫復雜的代碼,實現(xiàn)少寫代碼或者不寫代碼,就能快速高效完成業(yè)務目標。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。