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

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