前端搞搭建|月飛 - 如何設(shè)計實現(xiàn)中后臺搭建PaaS平臺
時間:2023-05-31 10:24:01 | 來源:網(wǎng)站運營
時間:2023-05-31 10:24:01 來源:網(wǎng)站運營
前端搞搭建|月飛 - 如何設(shè)計實現(xiàn)中后臺搭建PaaS平臺:
下期預(yù)告
6-20,是第十期 - 跨端跨棧
https://www.huodongxing.com/go/tl106-27,是第十一期 - 女生專場
https://www.huodongxing.com/go/tl11另外,每一期都提供了全年的聯(lián)票,可以看所有場次的錄播視頻,包括下半年到年底的所有直播視頻
前端早早聊大會目標(biāo)成為用得上、聽得懂、抄得走的技術(shù)大會,計劃 2020 年辦 >= 15 期,由前端早早聊與掘金聯(lián)合舉辦,前端早早聊大會行程動態(tài)、錄播視頻/PPT/講稿資料下載請關(guān)注 「前端早早聊」 公眾號跟進(jìn)。
你的支持,是早早聊辦下去的唯一動力!
還想聽哪方面的分享,直接加 Scott 微信: codingdreamer 提需求吧!
正文
本篇為第三屆 - 前端頁面搭建專場月飛講師的分享
Hi,大家好,今天非常高興能有機(jī)會作為講師,來給大家分享關(guān)于《如何設(shè)計實現(xiàn)中后臺搭建 PaaS 平臺》這個話題。今天的分享將圍繞阿里淘系技術(shù)部飛冰系列產(chǎn)品中的中后臺搭建產(chǎn)品 iceluna 來進(jìn)行展開。
個人介紹
在正式分享之前,先自我介紹一下。我是來自阿里淘系營銷中后臺團(tuán)隊的月飛,負(fù)責(zé)中后臺搭建產(chǎn)品 iceluna,以及《阿里集團(tuán)中后臺搭建協(xié)議標(biāo)準(zhǔn)規(guī)范》的推廣和落地。2013 年加入阿里巴巴聚劃算,負(fù)責(zé) PC & 無線詳情。2016 年加入天貓,帶領(lǐng)營銷玩法團(tuán)隊,負(fù)責(zé)玩法、互動類型業(yè)務(wù)。2019 年加入淘系技術(shù)部,帶領(lǐng)營銷中后臺團(tuán)隊,負(fù)責(zé)中后臺業(yè)務(wù),專注于中后臺搭建產(chǎn)品建設(shè)。
話題介紹
今天的話題是搭建,以面向角色的不同大致可以分為面向運營和面向研發(fā)兩類搭建產(chǎn)品。面向運營的搭建產(chǎn)品主要是以可視化配置 ( No-code ) 的方式進(jìn)行完整頁面搭建,如營銷活動頁面搭建。面向研發(fā)的搭建產(chǎn)品主要以低代碼開發(fā) ( Low-code ) 的方式,搭建“中后臺系統(tǒng)”或者“無線模塊”,如商家、小二后臺系統(tǒng)的搭建,無線 Rax 模塊的搭建。今天我這邊的話題是中后臺系統(tǒng)搭建,跟營銷活動類頁面的搭建在面向角色和搭建模式上是非常不同的,接下來主要圍繞 “ iceluna 產(chǎn)品 ” 和 “ PaaS 平臺建設(shè) ” 2 個維度來展開分享。
分享大綱
這是我分享的大綱,我會先對 iceluna 這個產(chǎn)品進(jìn)行整體介紹,講解下產(chǎn)品背景、定位及現(xiàn)狀。第 2 部分會從架構(gòu)設(shè)計、功能模塊設(shè)計、研發(fā)流程設(shè)計三方面來介紹中后臺搭建產(chǎn)品的設(shè)計思路,讓大家對 iceluna 產(chǎn)品全貌有個基本認(rèn)識。第 3 部分會著重從中后臺搭建基礎(chǔ)設(shè)施維度來講一下 iceluna 是如何建設(shè)搭建基礎(chǔ)設(shè)施的。第 4 部分則會回到 PaaS 平臺這個焦點,來講解 PaaS 平臺需要建設(shè)的核心能力。最后會稍微做下總結(jié)和展望。
iceluna 產(chǎn)品介紹
產(chǎn)品演示
大家現(xiàn)在看到的是 iceluna 界面,因為目前產(chǎn)品還未開源,還未對外網(wǎng)訪問,大家可以先看一下這是我們研發(fā)中心的一個站點首頁,第 2 頁是站點區(qū)塊中心,在這里面可以看到區(qū)塊市場,區(qū)塊管理等內(nèi)容,因為演示頁面數(shù)有限,在這里還可以看到頂部 tab 還有組件和模塊等物料管理。第 3 頁是應(yīng)用研發(fā)中心,里面有頁面,應(yīng)用組件,導(dǎo)航,數(shù)據(jù)中心,發(fā)布等等一系列操作的界面。最后這 1 頁是 iceluna 的低代碼搭建編輯器,這也是 iceluna 產(chǎn)品最核心的一個能力,總體界面和產(chǎn)品形態(tài)還是比較清爽,中間搭建的是一個商品列表頁面。
產(chǎn)品背景
剛演示了 iceluna 幾個核心頁面,對整個產(chǎn)品有了一個基本的了解,iceluna 產(chǎn)品發(fā)展至今已經(jīng)經(jīng)歷了 3 年半時間,產(chǎn)品一路迭代演進(jìn)至今的低代碼開發(fā) PaaS 平臺,背后有著一系列原因。在了解這些原因之前,想先跟大家普及一個概念,今天我們一直在提的“低代碼開發(fā)”。對于 iceluna 通用搭建來說,有著自己的一點理解,它是通過可視化的方式,使具有不同經(jīng)驗水平的開發(fā)人員可以通過圖形化的用戶界面,使用拖拽組件和模型驅(qū)動來搭建網(wǎng)頁的開發(fā)模式。
了解完這個概念,我們來談下 iceluna 產(chǎn)品的背景:
- 中后臺技術(shù)之殤:在淘系整個業(yè)務(wù)偏消費者端,中后臺這一側(cè)人力投入是偏弱的,這是目前中后臺的一個困境。我們有大量的商家或小二操作系統(tǒng),前端人力相當(dāng)緊缺,大量系統(tǒng)依賴后端/外包/ ISV 負(fù)責(zé)研發(fā),由于前端工程環(huán)境復(fù)雜,技術(shù)迭代快,門檻高,在效率/質(zhì)量/體驗/可維護(hù)性等方面存在較多問題,對于如何賦能?如何改善協(xié)作模式?傳統(tǒng)源碼模式已不能滿足業(yè)務(wù)發(fā)展的訴求,對于低代碼開發(fā)模式的需求日趨強(qiáng)烈。
- 低代碼開發(fā)模式的崛起:據(jù) Forrester 市場調(diào)研結(jié)果,通過低代碼開發(fā)模式可帶來數(shù)倍甚至 10 倍以上研發(fā)效率的提升。這對于中后臺現(xiàn)狀面臨的一個業(yè)務(wù)壓力,是我們非常迫切需要解決的一個問題,那就是如何提效的問題。它給了我們足夠大的想象空間。近年來各大互聯(lián)網(wǎng)巨頭公司都以紛紛投入到低代碼或無代碼平臺的建設(shè)上來。在阿里的話,各大 BU 也是重兵投入到這一塊的。這也就衍生出來第 3 個問題,那就是搭建泛濫后的技術(shù)收斂和統(tǒng)一。
- 搭建泛濫后的收斂和統(tǒng)一:阿里內(nèi)部各 BU 針對不同業(yè)務(wù)場景構(gòu)建保守估計有數(shù)十個以上低代碼搭建產(chǎn)品,投入成本巨大,能力完善程度相對不一。在搭建這塊如何收斂和統(tǒng)一?完善搭建基礎(chǔ)設(shè)施,由集團(tuán)層面提供統(tǒng)一的搭建服務(wù)的運行和開發(fā)環(huán)境,是勢在必行。我個人作為集團(tuán)搭建協(xié)議的負(fù)責(zé)人,也是希望通過 iceluna 產(chǎn)品去解決這一塊的問題,能講 iceluna 演進(jìn)成為一個搭建 PaaS 平臺,去提供搭建底層服務(wù)的能力,服務(wù)全集團(tuán)的搭建產(chǎn)品。
產(chǎn)品定位
目前 iceluna 產(chǎn)品有著 3 層定位:
- 中后臺通用搭建產(chǎn)品:由淘系技術(shù)部研發(fā),面向全體研發(fā)人員可用,打造一個中后臺通用的搭建產(chǎn)品。由于淘系業(yè)務(wù)幾乎以商家,小二運營操作系統(tǒng)為主,業(yè)務(wù)邏輯多,交互復(fù)雜,很難抽象固定場景的業(yè)務(wù)模版或可視化配置的解決方案。因此,需要我們低代碼開發(fā)的中后臺搭建產(chǎn)品具備有極強(qiáng)的通用性和擴(kuò)展性,才能夠 100% 覆蓋復(fù)雜交互的中后臺系統(tǒng)頁面的搭建。
- 全鏈路低代碼開發(fā)平臺:集前端應(yīng)用工程創(chuàng)建、開發(fā)、調(diào)試、發(fā)布,甚至到頁面的托管,全鏈路一體化的低代碼平臺。屏蔽復(fù)雜的前端工程體系,全鏈路打通。
- PaaS 平臺:建設(shè)搭建基礎(chǔ)設(shè)施,基于標(biāo)準(zhǔn)搭建協(xié)議生產(chǎn)搭建物料,為各業(yè)務(wù)場景提供搭建服務(wù)的運行和開發(fā)環(huán)境。 目前 iceluna 的 PaaS 平臺主要以以下 2 種模式提供服務(wù):
- 平臺模式:業(yè)務(wù)研發(fā)進(jìn)入 iceluna 研發(fā)中心,全鏈路在 iceluna 平臺上進(jìn)行編輯器定制和運行,業(yè)務(wù)托管在 iceluna 平臺上;
- 中臺模式:脫離 iceluna 研發(fā)中心,對外將 iceluna 編輯器能力和低代碼能力以 npm 包形式提供出去,助力于孵化各個領(lǐng)域場景的獨立的低代碼編輯器,獨立部署。
然后,我們在目標(biāo)設(shè)定上,對應(yīng)有如下 3 個目標(biāo):
- 賦能:賦能是我們第一重要的目標(biāo),因為在目前中后臺發(fā)展的業(yè)務(wù)現(xiàn)狀下來說,賦能恰恰是目前最能消化中后臺業(yè)務(wù)壓力的一個重要手段,這是我們經(jīng)過 2 - 3 年在業(yè)務(wù)上不斷摸索下得出的一個結(jié)論,賦能可以通過后端、外包,改變與前端的一個生產(chǎn)關(guān)系,去改善和提升研發(fā)項目或者說總個研發(fā)團(tuán)隊的生產(chǎn)力,使得我們后端外包可以跨界的工作,減少一些不必要的依賴和成本。
- 提效:目標(biāo)還是降低研發(fā)成本。提效一直是我們技術(shù)永恒的話題,但就 iceluna 現(xiàn)狀來說,提效效果并不是特別的理想,在下一頁現(xiàn)狀會聊到。
- 搭建生態(tài):希望成為一個 PaaS 平臺或搭建中臺,去孵化領(lǐng)域搭建產(chǎn)品,形成搭建產(chǎn)品矩陣,在各領(lǐng)域上有更高研發(fā)效率。
產(chǎn)品現(xiàn)狀
iceluna 是一個面向集團(tuán)提供服務(wù)的通用低代碼開發(fā)平臺,基于產(chǎn)品定位和目標(biāo),iceluna 在賦能、提效、搭建生態(tài)上均取得不錯成果。
- 賦能:活躍用戶數(shù) 1000+ ,后端占比 44% ,前端占比 39% ,測試占比 11% ,外包占比 7% 。從占比可以看到,有超過 60% 的用戶屬于非前端研發(fā)人員,在使用 iceluna 進(jìn)行系統(tǒng)頁面搭建。通過數(shù)據(jù)可以看到, iceluna 在賦能上有不錯的效果。
- 提效:上線應(yīng)用 440+ ,頁面 6000+ ,覆蓋阿里多個部門中后臺應(yīng)用研發(fā),經(jīng)霍爾斯特德軟件復(fù)雜度算法模型測算(后面章節(jié)會介紹),人均研發(fā)效能提升 200% 左右。
- 搭建生態(tài):提供完備的搭建基礎(chǔ)設(shè)施服務(wù) & PaaS 平臺服務(wù),已孵化 8+ 業(yè)務(wù)場景定制的搭建產(chǎn)品。
iceluna 架構(gòu)設(shè)計
架構(gòu)設(shè)計
上圖是 iceluna 產(chǎn)品從 PaaS 角度看的一張架構(gòu)分層圖,從圖上我們可以看出,核心包含后端服務(wù)、搭建基礎(chǔ)設(shè)施、PaaS 服務(wù)、研發(fā)中心、搭建產(chǎn)品 5 層。下面對每一層服務(wù)能力做介紹。
- 后端服務(wù):基于 Node.js 的 Midway 框架實現(xiàn)的一個 Server 層,提供搭建平臺數(shù)據(jù)接口和 Socket 服務(wù)。
- 搭建基礎(chǔ)設(shè)施層:目標(biāo)提供搭建編輯器的開發(fā)環(huán)境。核心包含中后臺搭建描述協(xié)議、低代碼編輯器、插件生態(tài)、物料生態(tài) 4 個模塊能力建設(shè);
- PaaS 服務(wù)層:提供搭建編輯器的運行環(huán)境,使其能具備有完備的搭建配套服務(wù)能力。
- 研發(fā)中心層:業(yè)務(wù)研發(fā)的主陣地,提供云端一體化的研發(fā)流程。包含站點中心,應(yīng)用中心,物料中心,數(shù)據(jù)中心 4 個功能模塊。
- 搭建產(chǎn)品:最上一層是搭建產(chǎn)品層,是 iceluna 作為 PaaS 平臺或中臺,目標(biāo)孵化的各個垂直領(lǐng)域的搭建產(chǎn)品。
功能模塊設(shè)計
接下來從功能模塊設(shè)計角度來進(jìn)一步了解 iceluna 的功能全貌,還是基于剛 PaaS 角度的架構(gòu)設(shè)計核心 3 個分層來拆解里面的核心模塊。
搭建基礎(chǔ)設(shè)施這層的話,就包括基礎(chǔ)能力的建設(shè),包含搭建協(xié)議,視覺規(guī)范,工程腳手架等源碼級別的一些基礎(chǔ)能力。其次是我們搭建編輯器內(nèi)核,包含了骨架、主題包、插件、用于配置可視化屬性面板的控件,另外就是我畫布和渲染引擎 2 個核心模塊,另外還有國際化能力模塊。在插件生態(tài)模塊上,目前整體搭建編輯器上所有的功能模塊均是以插件的形式存在。比如在頂部我們會有模型驅(qū)動、圖像識別、數(shù)據(jù)驅(qū)動、邏輯編排、流程編排等插件,這樣一些插件是目前我們重點推廣或重點研發(fā)的插件,作為研發(fā)模式升級提升效率的核心主抓手。其次是編輯器上常規(guī)一些的大綱樹、屬性/事件/樣式/數(shù)據(jù)等插件,在現(xiàn)階段主要以可視化增強(qiáng)來達(dá)到提效目的。在物料生態(tài)方面,我們希望構(gòu)造一個完備的物料生態(tài),通過低代碼方式開發(fā)搭建組件、搭建區(qū)塊、搭建模版、組件實例,并進(jìn)行物料的發(fā)布和共享。對于 PaaS 和研發(fā)中心模塊就不再一一做詳細(xì)介紹。
研發(fā)流程設(shè)計
這一頁重點介紹 iceluna 研發(fā)中心的研發(fā)流程設(shè)計,主要分 2 個權(quán)限角色:
- 站定管理員:一般由專業(yè)業(yè)務(wù)前端負(fù)責(zé),創(chuàng)建站點審核通過后,可以完成站點基本信息、編輯器默認(rèn)配置、應(yīng)用默認(rèn)配置、物料默認(rèn)配置等信息。該配置講決定了在該站點下創(chuàng)建的應(yīng)用主題、搭建編輯形態(tài)、以及物料供選池子等。
- 應(yīng)用管理員:選擇進(jìn)入某個站點后,可以在該站點下創(chuàng)建應(yīng)用、創(chuàng)建多分支、進(jìn)入搭建編輯器搭建頁面或組件,在線實時調(diào)試,一鍵發(fā)布部署等操作。
中后臺搭建基礎(chǔ)設(shè)施建設(shè)
了解了 iceluna 從各個維度的設(shè)計,相信對 iceluna 的產(chǎn)品設(shè)計有了一個更全面的認(rèn)識;那么接下來,我們從實現(xiàn)層面,看看 iceluna 建設(shè)了哪些基礎(chǔ)設(shè)施能力,來保障搭建平臺的技術(shù)先進(jìn)性。
從這一頁內(nèi)容是我們整個低代碼搭建基礎(chǔ)設(shè)施的一個內(nèi)容全圖,從左側(cè)我們可以看到一個物料研發(fā)的流程,由專業(yè)前端同學(xué)研發(fā)源碼的物料,并沉淀到物料中心,這樣一個源碼的物料,通過我們一個解析模塊,可以生成一份搭建組件描述文件,有了這份描述文件,就可以入駐到我們的低代碼搭建編輯器里面來,低代碼搭建編輯器會識別這個組件,生成這個組件的屬性配置面板,并具備有良好的搭建編輯體驗。其次,編輯器可以將已入駐的源碼組件,以發(fā)布的方式上行到物料中心,沉淀成為一個搭建組件。多個搭建產(chǎn)品矩陣,基于相同協(xié)議標(biāo)準(zhǔn),與物料中心的上下行,使物料得以流通和復(fù)用,從而形成物料生態(tài)。從最右側(cè)可以看到,前后端、外包、測試都是通過搭建方式來使用低代碼編輯器,低代碼編輯器成為了最核心的一塊能力。如何保障低代碼編輯器的技術(shù)先進(jìn)性,總體建設(shè)的思路,從以下 5 個方向闡述:
- 首先要定義一個搭建描述協(xié)議的標(biāo)準(zhǔn)規(guī)范,所有搭建產(chǎn)品遵循這套搭建規(guī)范,這樣可以使物料得以流通。
- 我們要構(gòu)造一個搭建編輯器開發(fā)生態(tài),iceluna 作為 PaaS 平臺或中臺提供出來的一個能力,去低成本的孵化各場景下的低代碼編輯器;
- 就是我們提供出來的低代碼編輯器,在面向不同端的一個訴求,我們會包含 React,Rax,小程序等技術(shù)棧的搭建,需要編輯器能支持多技術(shù)棧,適配多端。
- 相比其他低代碼編輯器,它如何保持技術(shù)先進(jìn)性,有哪些核心能力建設(shè)。
- 是我們要打造的插件生態(tài) 和 物料生態(tài)。
搭建描述協(xié)議標(biāo)準(zhǔn)規(guī)范!
如何指定搭建描述協(xié)議的標(biāo)準(zhǔn)規(guī)范?從以下 4 個方面闡述我的一些思考:
- 版本化、語義化、漸進(jìn)性描述:版本控制,語義清晰,簡明易懂,可讀性強(qiáng);搭建的本質(zhì)是通過源碼組件進(jìn)行嵌套組合,從小往大、依次組合生成組件、區(qū)塊、頁面,最終通過云端構(gòu)建生成 應(yīng)用 的過程。因此在搭建基礎(chǔ)協(xié)議中,我們需要知道如何去漸進(jìn)性的描述組件、區(qū)塊、頁面、應(yīng)用這 4 個實體概念。
- 不引入新概念,可與標(biāo)準(zhǔn)源碼互轉(zhuǎn):不引入新的語法概念,代碼部分純 JS 語法,降低上手門檻;明確每一個屬性與源碼對應(yīng)的轉(zhuǎn)換關(guān)系,可生成跟手寫無差異的高質(zhì)量標(biāo)準(zhǔn)源代碼;
- 可擴(kuò)展,可流通性,面向多端:支持第三方 npm 包的引入,增強(qiáng)協(xié)議描述能力的擴(kuò)展性,以應(yīng)對不同應(yīng)用復(fù)雜多變的需求,如 Lodash ,Moment.js 等第三方工具庫;產(chǎn)物能在不同搭建產(chǎn)品中流通,不涉及任何私域數(shù)據(jù)存儲,統(tǒng)一標(biāo)準(zhǔn),構(gòu)建搭建物料生態(tài)。不能僅面向 React,還有小程序等多端;
- 支持國際化
低代碼編輯器開發(fā)生態(tài)
iceluna 作為一個 PaaS 平臺或搭建中臺,我們希望把搭建編輯器底層所有的能力都能原子化的開放出去,所以我們在建設(shè)搭建編輯器的時候考慮到了以下幾個問題:
- 分層架構(gòu):整個框架分為四層能力的建設(shè),最里層為搭建編輯器的內(nèi)核(主要有消息通訊、狀態(tài)的管理及配制的解析、骨架的加載、插件的機(jī)制的加載等能力);其次為渲染模塊,也就是渲染模塊的部分,它的輸入就是符合搭建描述協(xié)議的 Schema,通過這個模塊可以把整個頁面渲染出來;再往上為編排模塊,主要負(fù)責(zé)畫布區(qū)域的物料拖拽、下鉆編輯、點擊,快捷鍵,多設(shè)計模式等操作,提供了靈活的拓展能力;最上層為整個編輯器的框架,包括骨架、主題以及編輯器里面所有的面板都是以功能插件的形式集成進(jìn)去的。
- 模塊化解耦:這里的框架分層,每一層均為獨立 npm 包,提供原子化服務(wù)的能力去開放。比如我們可以以整體低代碼編輯器整體開放給需要的場景,也可以只以編排引擎或渲染引擎的方式去開放,如物料中心搭建物料的預(yù)覽。
- 擴(kuò)展能力及開發(fā)生態(tài):除了提供現(xiàn)有的能力之外還提供完整的骨架,插件及控件的開發(fā)腳手架及命令行工具來保證整個低代碼搭建編輯開發(fā)機(jī)制是完備完善的,同時整個骨架、插件也是可以在我們整個平臺進(jìn)行配制或定制。
低代碼編輯器多端適配
目前搭建編輯器面向的領(lǐng)域不僅僅是中后臺 React 的體系,還包含有 Vue ,小程序、Rax 的體系,這樣的一些體系因為底層的技術(shù)棧不同,對于組件的解析和渲染存在較大差異,不能通過純粹的 React 渲染模塊來把總個頁面渲染出來。所有呢,我們怎樣去適配多端,需要針對不同的技術(shù)棧,來實現(xiàn)對應(yīng)的渲染引擎,通過很薄的一層適配層來使得我們的搭建編輯器支持各個技術(shù)棧的渲染,從而達(dá)到多端適配的目的。比如,阿里表格數(shù)據(jù)報表的搭建, imgcook 消費者端搭建,淘寶小程序搭建等。
低代碼編輯器核心能力
第 4 塊內(nèi)容,就是我們?nèi)绾伪U洗罱ň庉嬈骷夹g(shù)先進(jìn)性的一些核心能力。
- 開箱即用: 提供全鏈路一體化的搭建服務(wù),不需要到線下去 2 次開發(fā)。其次支持定制搭建編輯器和定制業(yè)務(wù)主題風(fēng)格。同時在我們平臺上支持多人協(xié)作、多分支并行開發(fā),可以應(yīng)對大型復(fù)雜工程。比如淘系營銷系統(tǒng),同時會有數(shù)十個人并行開發(fā)同一個應(yīng)用,往往會建立數(shù)個分支并行開發(fā)需求。所以呢,像這樣一些大型復(fù)雜系統(tǒng),中后臺搭建系統(tǒng)不具備有多人協(xié)作和多分支并行開發(fā)的能力,那基本上在我們的業(yè)務(wù)場景上是無法落地的。所以這 2 塊能力建設(shè)非常關(guān)鍵和重要。
- 安全沙箱隔離:我們對業(yè)內(nèi)比較多的搭建產(chǎn)品做市場調(diào)研,發(fā)現(xiàn)較多搭建編輯器是沒有做好沙箱隔離的。 iceluna 發(fā)展 3 年,反復(fù)從做隔離到不隔離幾個階段的不斷迭代,最終徹底解決掉所有問題,完全實現(xiàn)沙箱隔離,從而保障搭建頁面與編輯器本身完全隔離,互不干擾,并支持獨立主題設(shè)定。
- 實時調(diào)試能力:我們的畫布是一個真實的 Runtime ,它不是一個模擬器或不完整的渲染,業(yè)內(nèi)很多低代碼編輯器在搭建狀態(tài)就是一個純 UI 的渲染,通過低代碼方式配置了交互數(shù)據(jù)或事件,它無法實時實時生效,需要通過預(yù)覽或發(fā)布等鏈路才能調(diào)試 。而中后臺場景業(yè)務(wù)邏輯非常重,往往需要高頻的實時調(diào)試,這也是跟其他搭建產(chǎn)品不同,是結(jié)合業(yè)務(wù)場景建設(shè)的一個重要能力。
低代碼編輯器物料生態(tài)
我們提供的通用搭建平臺,對于不同的業(yè)務(wù)場景,對于物料的訴求是不一樣的。今天,我們的搭建平臺服務(wù)于 400 多個前端應(yīng)用,要服務(wù)集團(tuán) 20+ 部門,或者更大的一個組織體系,如果只提供一套物料庫,那搭建平臺的可用性會因此而大打折扣。我們需要針對不同 BU 不同業(yè)務(wù)場景,能夠具備有快速接入不同物料的能力,第 1 點我們要能快速生產(chǎn)物料,第 2 點能快速接入已有的物料,第 3 點就是能夠讓這個物料流通起來,能夠變成一個生態(tài)的機(jī)制,就如 Iconfont 圖標(biāo)生態(tài)一樣。所以 iceluna 也在致力于怎樣去打造一個低代碼搭建物料的一個生態(tài)。我們在這塊做的核心工作,主要如下:
- 統(tǒng)一搭建物料描述協(xié)議:統(tǒng)一標(biāo)準(zhǔn),規(guī)范生產(chǎn),提升搭建物料的可復(fù)用性。
- 實現(xiàn)物料低成本接入:支持 React 組件 npm 包低成本的接入,不需要對組件進(jìn)行 2 次包裝或開發(fā),通過簡單配置一個表單,就可以將組件接入進(jìn)來,并且保障組件在源碼里面完整的所有屬性,在屬性配置面板可以具備完整的可視化配置能力,無論你的屬性是什么類型,數(shù)組類型也好,對象類型也好,ReactNode 類型也好,都具備有完整的可視化機(jī)制,來保障良好的編輯體驗。
- 搭建物料流通:建設(shè)搭建物料市場,形成類似 Iconfont 的生態(tài)機(jī)制。
我們回到左側(cè)圖上來看,我們的低代碼編輯器,它不僅僅是可以接入組件,最重要的能力就是通過低代碼的方式來生產(chǎn)組件,為什么?低代碼編輯器面對更廣的用戶,比如后端和外包同學(xué),他們不掌握很多的源碼知識,也不掌握源碼的工程體系環(huán)境,但是他們同樣會有做組件的訴求。其次,搭建編輯器本身就是一個提效的開發(fā)模式,無論是前端還是后端,研發(fā)頁面還是組件,低代碼開發(fā)同樣帶來開發(fā)側(cè)的效率提升。在 iceluna 上,我們也提供了物料專屬的搭建編輯器,可以在我們的平臺上通過搭建的方式搭建物料,并且把這個物料上行到我們的物料中心,最后形成物料流通的機(jī)制。
提供搭建服務(wù)的 PaaS 平臺建設(shè)
這一章節(jié),回到我們主題的核心重點— PaaS 平臺能力建設(shè)上來。對于在聽的同學(xué)來說,可能對于 PaaS 平臺的定位也不是特別清楚。PaaS:平臺即服務(wù) ( Platform-as-a-Service ),iceluna 的 PaaS 定位是把搭建編輯器的運行和開發(fā)環(huán)境作為一種服務(wù),提供給不同業(yè)務(wù)場景下的搭建產(chǎn)品。
前面我們講到了搭建基礎(chǔ)設(shè)施是提供搭建編輯器的開發(fā)環(huán)境,那上層我們還需要一個更加完善的平臺側(cè)服務(wù)能力,來提供搭建編輯器具備完整良好的運行環(huán)境,使得我們具備有一體化研發(fā)的能力,在整個能力的基礎(chǔ)之上去孵化垂直領(lǐng)域的搭建產(chǎn)品。
我們將從下面 6 個維度來介紹 Paas 服務(wù)的能力:研發(fā)中心編輯器定制、云端構(gòu)建 & 發(fā)布 & 存儲、多人協(xié)作、多分支開發(fā)、代碼回滾、效能衡量。
搭建編輯器定制服務(wù)
在我們的站點中心提供了一個可視的方式來進(jìn)行一個編輯器的配制,通過云端構(gòu)建就可以構(gòu)建出不同搭建編輯器,比如右邊的 Iceluna 搭建編輯器及下面的 imgcook 編輯器,就是在研發(fā)中心創(chuàng)建了 2 個不同的站點,分別構(gòu)建出來的編輯器。剛我們看到了編輯器的一份配置,那么編輯器具體可以配置哪些內(nèi)容呢?
- 布局定制:編輯器面向的領(lǐng)域不同,場景不同,做消費的頁面和中后臺頁面,它對于面板畫布的大小及可利用區(qū)域都是不同的,所有我們對于整個搭建編輯器面板布局是有不同的訴求。而我們可以通過這個的一個布局定制來快速構(gòu)建出不同的布局出來,再配制不同的插件可以形成一個全新的搭建編輯器。
**
- 主題定制:搭建編輯器可以嵌入不同的場景,比如在淘系里面我們可嵌入 WebIDE 跟源碼進(jìn)行一個互轉(zhuǎn)能力的打通,你可以同時切換到源碼的開發(fā),也可以同時切換到可視化的開發(fā),在 WebIDE 的下面,它整個視覺風(fēng)格就是個深色系,所以我們在平臺上面也提供了主題包配制的一個能力,然后再適配不同主題風(fēng)格搭配來定制編輯器。
- 插件定制:我們提供了一個完備的插件化機(jī)制,整個搭建編輯器上的所有面板都是以插件化的形式來承載的,目前 iceluna 編輯器上總共有 26 個插件(圖右可視),同時在插件生態(tài)池子里面,我們往后會沉淀越來越多的公共插件,并且這個插件都是可以被嵌入到搭建編輯器里面的。 如果這個插件池子里面沒有你想要的插件,我們也提供了插件開發(fā)腳手架,給你來實現(xiàn)與編輯器功能解耦,可插拔,可定制的一個獨立的插件。
云端構(gòu)建/發(fā)布/ DB 存儲服務(wù)
云端構(gòu)建服務(wù)是 iceluna 低代碼開發(fā)平臺核心鏈路之一,目前云端構(gòu)建的能力主要是把我們在應(yīng)用搭建過程中搭建出來的頁面,然后組件產(chǎn)生出來的 Schema ,存在數(shù)據(jù)庫里面之后的碎片化數(shù)據(jù),通過云端構(gòu)建的方式,去發(fā)布成應(yīng)用或組件或者編輯器資源包,同時構(gòu)建出來的這些應(yīng)用、組件它們的源代碼,我們也推送到 GitLab 作為存儲,也會發(fā)到 CDN ,申請 CDN 資源最終推送到線上去。目前云端構(gòu)建主要支持應(yīng)用(日常/線上發(fā)布)、組件(Low code/ Procode發(fā)布)、編輯器(畫布/框架的構(gòu)建)3 大功能 6 種形態(tài)構(gòu)建能力。
云端構(gòu)建架構(gòu)圖分為數(shù)據(jù)層,運行層,通信層,應(yīng)用層4層,如圖左所示。它的核心能力主要包含如下:
- 編輯器去中心化:在我們的平臺,站點下創(chuàng)建的每一個應(yīng)用均對應(yīng)一個自己的編輯器資源包,這樣的話,我們可以給每一個應(yīng)用去定制自己的主題和組件的擴(kuò)展,并帶有版本化控制的能力。
- 一鍵發(fā)布部署:進(jìn)行權(quán)限管控;對組件的依賴進(jìn)行動態(tài)分析;在分支發(fā)布過程中會需要合并主干,如果產(chǎn)生沖突的話,在線解決沖突;Webpack 構(gòu)建和 CDN 發(fā)布。
- 多系統(tǒng)打通:GitLab 存儲以及通過 GitLab 來做代碼回滾的機(jī)制,其次通過 Tair 做構(gòu)建過程的并發(fā)鎖,最后,通過 ODPS 做構(gòu)建日志的分析。
多人協(xié)作服務(wù)
在 PaaS 平臺,多人協(xié)作是一個不可缺少的一個能力,它的主要原理是通過 WebSocket 的連接加上一個文件鎖的機(jī)制,文件鎖目前在平臺上包含頁面鎖、組件鎖、應(yīng)用級別公共文件鎖這三個維度的鎖。大體思路主要是利用WebSocket 的保活的機(jī)制,與 Tair 保持一個心跳保活的消息通信。在 Tair 側(cè)則是存儲一個主動失效的分布式樂觀鎖,然后去存儲這個鎖的信息,大概 10 秒鐘之內(nèi)沒有新的心跳過來,這個鎖就會失效。所以說一旦客戶端或 Server 端的 client 斷了之后,那這個文件鎖就會被自動釋放這樣一個機(jī)制來做的多人協(xié)作服務(wù)。我們也對業(yè)界多人協(xié)作的方案做了一些調(diào)研,比如釘釘文檔、Google Docs 等都利用了業(yè)界比較先進(jìn)的 OT 技術(shù),實現(xiàn)相對復(fù)雜,功能也更強(qiáng)大。對于低代碼搭建編輯器場景來說,編輯鎖的能力已經(jīng)夠用了。左側(cè) iceluna 編輯器上紅線框出來的點,都是有鎖的功能。
多分支并行服務(wù)
多分支并行的能力最重要解決的一個問題是沖突解決,對于源碼來說,沖突解決是已經(jīng)存在的一個能力,但對于低代碼云端工程體系來說卻是一個非常難解決的問題。截止目前為止 iceluna 沖突解決的代碼仍然是搭建描述協(xié)議 Schema 的代碼,比對時相對比較困難,這是問題之一。其次,總個沖突解決的流程,多分支并行,包括代碼回滾到數(shù)據(jù)庫 DB ,這一塊總個機(jī)制的構(gòu)建也是相對比較復(fù)雜的??傮w的流程如上圖所示。
代碼回滾服務(wù)
代碼回滾服務(wù)主要利用的就是基線同步的機(jī)制,這個機(jī)制保障我們可以指定任意 commit hash 進(jìn)行編輯器應(yīng)用代碼回滾。因為我們在低代碼平臺的每一次發(fā)布,都會將代碼同步到 Git ,所以任何一次發(fā)布的代碼都可以回滾到我們的低代碼編輯器。這里最大的難點就是 “ 數(shù)據(jù)庫的碎片化信息 ” 與 “ Git 倉庫上源碼工程文件 ” 能具備有一一轉(zhuǎn)換的關(guān)系。
搭建效能衡量體系
最后一頁內(nèi)容提到了低代碼搭建平臺的效能衡量體系,其實它跟技術(shù)不太相關(guān),但為什么要講效能衡量這個體系呢?我們在做搭建平臺 3 年,還有其他兄弟團(tuán)隊的搭建平臺都面臨一個問題,就是都說搭建能提效,但沒有一個很精確衡量提效多少的方法或策略,所以我們花了很長時間去研究,怎樣有一個策略來衡量搭建是不是真的提效了。具體的實現(xiàn)方式,衡量標(biāo)準(zhǔn)是我們借助業(yè)界霍爾斯特德軟件復(fù)雜度測量算法模型,這個算法模型可以將搭建頁面時產(chǎn)出的 Schema 作為一個輸入,它通過 Schema 里面的如表達(dá)式個數(shù),代碼長度等數(shù)十個算子,可以計算出 Schema 的復(fù)雜度以及預(yù)計開發(fā)時長。
當(dāng)然,這個預(yù)計開發(fā)時長需要反復(fù)去調(diào)參,比較符合真實情況后會得到一個相對準(zhǔn)確的數(shù)字。另外呢,低代碼搭建相對于源碼開發(fā),有一個好處就是用戶都是在我們的平臺上進(jìn)行操作,平臺側(cè)可以通過埋點,操作日志等手段記錄每一個研發(fā)人員在某個頁面上的操作記錄,在 2 次操作間隔時長在 10 分鐘之內(nèi)的算有效開發(fā)時間段,有效時間段的總和就是實際開發(fā)時長。通過計算公式 研發(fā)效能 = 預(yù)計開發(fā)時長/實際開發(fā)時長 就可以知道該用戶開發(fā)效能是提升還是降低。在 iceluna 平臺上數(shù)據(jù)中心會有專門一個效能中心,來反饋總個平臺的總體人均研發(fā)效能、個人研發(fā)效能等數(shù)據(jù)。所以說這一點非常有價值,所以分享給大家。
總結(jié)&展望
- 前路總結(jié):中后臺通用搭建產(chǎn)品建設(shè)成本超高,能很好的解決賦能&協(xié)作的問題,但研發(fā)提效未達(dá)數(shù)倍甚至 10 倍的預(yù)期,需要往模型驅(qū)動、智能搭建等 Nocode 新研發(fā)模式升級,或建設(shè)領(lǐng)域搭建產(chǎn)品矩陣來達(dá)成數(shù)倍提效的目標(biāo)。
- 展望未來:致力于將 iceluna 打造為中后臺領(lǐng)域的 hpaPaaS 平臺(超高生產(chǎn)力平臺)。如果志同道合,期待的你的加入!
投遞簡歷方式
最后,就是我們團(tuán)隊的一個招聘,如果有意向的話,可以聯(lián)系我一下
團(tuán)隊產(chǎn)品鏈接:
- 飛冰:https://ice.alibaba-inc.com/
- 淘系前端博客:https://fed.taobao.org/
- 淘系前端本站專欄:https://zhuanlan.zhihu.com/tmallf2e
歡迎加入我們的團(tuán)隊?。?br>
近兩年 Scott 觀察到前端行業(yè)已經(jīng)完全進(jìn)入競爭的深水區(qū),各大小公司的前端 TL 剛剛上任,初帶團(tuán)隊,針對前端工程師這個群體,應(yīng)該怎么管人理事,搭臺拿結(jié)果,幫帶有成長,就成立了這個前端技術(shù)主管學(xué)習(xí)交流群,在人的選用育留上互相學(xué)習(xí)成長,入群的門檻是你有實線或者虛線在帶團(tuán)隊,請加 Scott 微信: codingdreamer 邀請入群:
看完若有啟發(fā),就請點贊評論轉(zhuǎn)發(fā)三連吧
關(guān)鍵詞:實現(xiàn),后臺,平臺,設(shè)計