作者:花三(王俊)
Serverless 應用引擎 SAE 是阿里云推出的一款零代碼改造、極簡易用、自適應彈性的容器化應用托管平臺,面市以來為幾萬家企業客戶提供服務,運行穩定,廣受好評。
SAE 的出現解決了眾多企業想用 K8s,但是又上手困難的問題,可以用非常低的門檻享受到 K8s 的技術紅利。尤其是 SAE 在應用的構建和發布時的順滑體驗,更是幫助中小企業用戶極大地提升了研發效能。
本文將主要介紹,如何通過 SAE 快速實現項目從源碼到應用的交付與上線。
SAE 兩步完成應用交付
在 SAE 上,從源碼到應用的交付部署,僅需要進行兩步操作:準備代碼倉庫和創建應用。 完成這兩步后,基于持續部署的能力,就可以愉快地進行應用版本的迭代了。
第一步:準備代碼倉庫
接下來,將以開源項目 excalidraw 為例進行演示,在無需修改任何代碼的前提下,在 SAE 上進行應用的快速部署。首先,需要將 excalidraw 項目的開源倉庫 fork 到您的個人倉庫,當然您可以使用其他的開源項目。
excalidraw 是 GitHub 上一款開源的手繪風格畫板項目,開源熱度很高。
GitHub 地址:https://github.com/excalidraw/excalidraw
版權許可:MIT License
第二步:創建應用并綁定源碼倉庫
創建部署應用,這里需要填寫應用名、HTTP 監聽端口、請求超時時間這幾個配置項,其他配置項采用默認值即可。
- HTTP 監聽端口號,即在線應用對外提供 web 服務的端口號,用于 HTTP 流量全托管場景下的請求轉發,這里配置 HTTP 監聽端口為 3000(excalidraw 項目中默認使用的端口);
- 請求超時時間,excalidraw 服務初始化啟動時,需要耗費一定的時間,因此配置為 60 秒。
綁定源碼倉庫,選定部署方式為“從源碼倉庫持續部署”,而后配置綁定具體的倉庫和分支即可。
- 構建類型配置為“系統自動檢測并構建鏡像”——無需 Dockerfile;
- 啟動命令,配置啟動 excalidraw 服務的命令;
cd ./excalidraw-app && vite --host
- 配置完成后,選擇“跳過高級設置,創建應用”,觸發應用創建和應用版本的構建部署。
在這里,可以對 SAE 源碼部署的能力,有一個全局性的了解:
- 倉庫類型,支持多種類型的 Git 源,包括 GitHub、Gitee、公網 Gitlab、Codeup;
- 構建類型,支持基于 Dockerfile 的鏡像構建方式,同時支持系統自動檢測編譯的方式,無需提供 Dockerfile,完全由 SAE 自動檢測自動編譯,最終自動構建打包成鏡像;
- 觸發模式,可滿足多樣的持續部署需求;
- 鏡像倉庫,SAE 默認提供鏡像的倉庫存儲能力,不強要求開通 ACR,當然也支持推送鏡像到個人 ACR;
- 啟動命令和工作目錄,主要為滿足個性化的構建要求,同時更多的可拓展可自定義配置的能力陸續研發中,盡請期待。
可視化流程
在應用版本的構建部署過程中,在具體的構建記錄中可以查閱所有的環節,包括各個環節的日志和耗時,全流程可觀測。構建部署成功后,會生成一個應用的新版本。此時,手動在版本列表-流量配置中,將流量全切換至新版本即可。
測試驗證
流量配置完成后,可以直接通過 SAE 默認提供的測試域名,直接訪問應用,方便進行快速驗證和調試。至此,應用上線完畢,后續可以利用 SAE 提供的持續部署能力,進行迭代。
代碼安全,源碼即資產
SAE 通過完全隔離和用完即銷毀的運行時環境,保證用戶的代碼安全。
在每一次構建的生命周期中,資源上,運行時環境之間是完全相互獨立的,網絡上,運行環境之間是完全互相隔離且安全的;Serverless 的構建環境,每一次構建都是從零拉起一個完整的構建環境,用完即毀,達到真正的一次性;源碼僅初始化環境時被拉取一次,構建完成后,隨著構建環境一起被銷毀,期間不留任何痕跡。
云端構建部署,性能與體驗
在性能方面,為了保證云端構建耗時能與本地相近,帶來最好的云端體驗。SAE 不僅對運行時環境的快速拉起做了很多優化,同時還綜合分析了每一類編程語言在編譯時的不同表現和特征,包括編譯型語言和解釋型語言,設計實現了一套多級緩存的機制,用于加速項目編譯構建時獲取外部依賴資源的速度。
- 運行時優化 + 鏡像緩存,實現運行環境的迅速拉起,冷啟動耗時 3S 內;
- 高頻依賴或資源直接存在運行時環境的鏡像中,可直接本地加載,進行復用;
- 多樣化的、中等頻度的依賴或資源,以 OSS 作為緩存媒介,高速拉取,無需走外網;
- 個性化的、低頻的依賴或資源,以鏡像作為緩存媒介,第一次拉取的時候需走外網,會存在冷拉取的現象。但是二次構建可以直接從緩存中拉取,進行資源復用,無需再走外網,實現加速。
SAE 2.0 能力升級回顧
彈性能力升級: 彈性效率優化到百毫秒級,支持縮容到 0。并提供閑置計費能力,無請求時 CPU 不計費,彈后更省。
開發者體驗升級: 零改造遷移,秒級創建應用,一鍵灰度。提供 S2A 等豐富的平臺工程能力,研發提效。
適用場景升級: 除支持開源微服務 /XXL -job、ElasticJob、Spring Task 等無縫遷移外,新增支持 Web 應用類型,從實例托管到流量托管。