我在阿里做中后臺(tái)開發(fā)
作者信息:趙吉彤,花名牧?xí)?/span>
阿里云智能-銷售管理部前端工程師,負(fù)責(zé)前端基礎(chǔ)設(shè)施建設(shè)。
從 WebIDE 講起
自建的過(guò)程與挑戰(zhàn)
-
Client: 客戶端也是最重要的端,將代碼編輯等本地功能移植到瀏覽器中。 -
Server: 服務(wù)端也是控制端,包括管理數(shù)據(jù)交互及資源調(diào)度。 -
Container Pool: 運(yùn)行時(shí),用戶代碼真正運(yùn)行的容器環(huán)境。
服務(wù)端設(shè)計(jì)
編輯器 & IPC
關(guān)鍵性問(wèn)題
-
完全冷啟動(dòng):未知鏡像的情況很難優(yōu)化,但垂直場(chǎng)景下可以做到 1 分鐘內(nèi)。 -
預(yù)置容器池 + Container Buffer:體驗(yàn)很好,但造成一定的浪費(fèi)。
全流程在線化戰(zhàn)役
環(huán)境定制
插件開發(fā)
-
由于插件運(yùn)行在瀏覽器端,所以點(diǎn)擊「預(yù)覽」時(shí)通過(guò) socket 向容器端發(fā)送指令查詢當(dāng)前可用端口。 -
排除 ****IDE 及插件自身使用的端口,排除外部不可訪問(wèn)的(0.0.0.0),排除非 Node 進(jìn)程開放的端口,剩下的基本上是我們的目標(biāo)端口,實(shí)際使用下來(lái)體驗(yàn)也是比較好的。 -
通過(guò)內(nèi)置的規(guī)則(倉(cāng)庫(kù)、人員信息、項(xiàng)目信息)來(lái)判斷實(shí)際預(yù)覽需要用到的域名,感謝 ****IDE 團(tuán)隊(duì)的支持,目前我們可以在三個(gè)域名下進(jìn)行預(yù)覽開發(fā)。
-
啟動(dòng) dev server -
綁定 hosts local.foo.aliyun.com 來(lái)獲取官網(wǎng)登陸狀態(tài)聯(lián)調(diào)接口 -
打開瀏覽器
-
容器運(yùn)行時(shí)啟動(dòng) dev server -
綁定 hosts local.foo.aliyun.com 到容器的 IP
-
容器運(yùn)行時(shí)啟動(dòng) dev server -
提供統(tǒng)一的域名 preview.ide.alibaba-inc.com 并通過(guò) pathname 區(qū)分不同空間
-
容器運(yùn)行時(shí)啟動(dòng) dev server -
提供可變的泛域名來(lái)隔離不同空間 [uniqueId]-[port].id*****io.aliyun.com
項(xiàng)目初始化
-
最開始的刀耕火種時(shí)代,我們自己維護(hù)了測(cè)試環(huán)境的 K8S 集群,使用 Jobs 來(lái)完成 init 操作。 -
后面由于太麻煩,遷移到了 ECI。 -
最后由于 ECI 沒有走「鏡像預(yù)熱」,導(dǎo)致初始化時(shí)間太長(zhǎng)(1-3 min),又從 ECI 遷移到了其他編排系統(tǒng)。
場(chǎng)景化落地
-
XCloud VC 組件開發(fā):中后臺(tái)低代碼物料 -
鴻蒙 ACE/國(guó)際站 組件開發(fā):營(yíng)銷搭建物料 -
Dawn 工程:服務(wù)于外包同學(xué)及其他快速開發(fā)場(chǎng)景 -
云查詢 FaaS:Serverless 場(chǎng)景快速項(xiàng)目開發(fā)
戰(zhàn)疫情,我們?cè)谛袆?dòng)
推薦閱讀:
代碼優(yōu)化實(shí)戰(zhàn):我又優(yōu)化了一百個(gè)if else!
阿里內(nèi)部員工,排查Java問(wèn)題常用的工具單
優(yōu)秀的 Java 項(xiàng)目,代碼都是如何分層的?
推薦閱讀:

點(diǎn)擊閱讀原文,領(lǐng)取2020Java電子書資料(持續(xù)更新
評(píng)論
圖片
表情
