簡單、快速|DeployKit 雲部署套件

img


本文作者:楊蘇博

解讀 Serverless

Serverless 是一種雲計算模型,它使開發人員能夠構建和運行應用程序而無需爲服務器基礎架構或運行時環境管理任何資源。相反,開發人員只需編寫應用程序代碼,將其上傳到雲提供商的服務中,然後該服務會負責根據請求的需要自動擴展或縮小應用程序。在 Serverless 模型中,開發人員只需爲實際使用的應用程序資源付費,而不是爲預配或閒置的資源付費,這使得 Serverless 模型更加經濟高效。Serverless 不是沒有服務器的意思,而是指開發人員不需要管理服務器。

Serverless 的優勢

  • 降低成本:Serverless 在應用部署中,只需要根據實際使用情況付費,無需像傳統的雲服務器一樣預先購買資源,從而降低了成本。
  • 自動擴容:Serverless 可以根據應用的實際使用情況自動擴容,無需手動干預,從而提高了應用的可擴展性。
  • 減少維護工作:Serverless 服務由雲服務提供商負責維護和管理,用戶無需關注底層基礎設施的管理和維護工作,從而節省了時間和精力。
  • 更高的可靠性:Serverless 服務由雲服務提供商負責管理和監控,可以提供更高的可靠性和可用性。
  • 更快地部署:Serverless 應用可以很快地部署和更新,因爲無需關注底層基礎設施的管理和維護工作,從而提高了應用的部署速度。

Serverless 的挑戰

Serverless 讓應用的託管變得簡單,但是也存在一些挑戰,其中,最大的兩個挑戰是 Serverless 應用的可移植性和冷啓動問題

不同的 Serverless 平臺無論是工具,還是開放接口都存在不少的差異。對於開發者來說,在開發應用之前,必須得先決定用哪個 Serverless 平臺。因爲 Serverless 應用的開發細節往往會與特定的 Serverless 平臺耦合。而對於冷啓動問題,是一個非常有挑戰的事情。不同的 Serverless 平臺也在這方面做了很多努力,比如通過預留實例、單實例多請求、通過機器學習預測流量前準備資源等等;在開發側,也可以通過對代碼的構建、打包、壓縮等方式減少代碼的體積,從而加快應用的部署上傳過程和應用的冷啓動時間(因爲減少了代碼拉取和應用啓動的時間)。

DeployKit 的誕生

我們發現應用的開發到部署這個過程,存在很大的優化空間,特別是在 Serverless 技術背景下。因爲 Serverless 已經讓應用變得足夠簡單了。所以我們能做這麼一個工具:幫忙開發者將自己的應用一鍵部署到 Serverless 平臺。而且這個過程應該是簡單且快速,以滿足應用高頻部署的需求。

DeployKit 的願景

DeployKit 的願景是希望幫助開發者把任意應用部署到任意平臺,所以 DeployKit 的口號是 Deploying Anything Anywhere。

DeployKit 的挑戰

要想實現我們的目標,我們需要解決兩個挑戰:如何適配各式各樣的應用?如何適配各式各樣的平臺?

我們將應用生命週期做了一層抽象,定義了一套統一的應用適配規則。DeployKit 會根據適配規則構建、編譯和部署當前應用。爲了簡化部署,實現一鍵部署能力。DeployKit 對市面上常見的前後端框架的應用做了預先定義,當 DeployKit 識別當前應用爲某個特定的框架應用時,自動匹配合適的規則並應用上。這樣就可以做到零配置,一鍵部署。這些框架的適配規則是開源的,社區其他人員也可以適配自己想要的框架。目前支持 30+ 款框架,以及 6 個部署平臺

單單隻有適配規則還不夠,我們需要實現相關的功能來解釋這些規則。爲了能夠滿足應用和平臺的多樣性需求。DeployKit 設計了一種組件化機制。將對不同平臺的適配實現爲一個個組件,然後根據規則激活響應的組件共同完成應用的部署操作。這些功能組件可以提前預置好,也可以按需下載安裝然後使用。

DeployKit 設計與實現

  • DeployKit 架構圖

img

DeployKit 以組件作爲原子能力,根據匹配到的框架、平臺和語言激活需要的組件,通過這些激活的組件共同完成一次部署操作。未來滿足不同場景下使用 DeployKit 的部署能力,採用 CLI 方式提供接口。這樣可以方便與 VS Code 編輯器、代碼倉庫的持續集成工具結合使用。

爲了適配任意應用和部署到任意平臺,DeployKit 抽象了一套通用的部署規則,開發者可以根據自己業務應用情況,使用 deploy.yml 配置文件自定義部署規則。同時,DeployKit 默認預置了很多常用開發框架的部署規則,這些常用框架,我們可以做到零配置,一鍵部署。

DeployKit 智能適配過程

img

爲了簡化部署,實現零配置,一鍵部署能力。DeployKit 預置了對常用主流框架和主流的部署平臺做了默認適配。正如上圖所示,一個開發者先選擇了一個部署平臺,如騰訊云云函數,本質是激活了一個騰訊雲部署的一個模式;然後 Deploy 根據項目代碼特徵智能識別出當前是一個什麼框架,上圖識別出是一個 vite 框架,DeployKit 則認爲這是一個靜態站點項目,會自動激活 static 模式;最後 DeployKit 會根據騰訊雲和 static 這個模式共同作用域運行時,並激活相應的組件和配置,共同完成部署任務。

其中,模式本質就是一組配置項,DeployKit 會將常用的配置預定義好,我們只需要簡單通過一個模式配置就能完成一組複雜的原子能力。

DeployKit 支持的框架與平臺

目前 DeployKit 支持 30+ 前後端主流開發框架,以及 6 個部署平臺。開發框架如 Next.js、Koa.js、Malagu、Nest.js、Vite、Vue、React、Angular、Flet、UmiJS 等等前後端框架;部署平臺有騰訊云云函數、阿里雲函數計算、Azure Functions(正在開發中)、AWS Lambda、Vercel 平臺、雲服務器。

DeployKit 效果演示

DeployKit 未來規劃

DeployKit 未來將向兩個方向演進:支持更多的前後端框架,以及支持更多 Serverless 平臺。如今,市面上框架很多,以後也會有越來越多的新框架出現,對於部署平臺也是一樣情況。我們希望藉助於社區開發者的力量,一起來共建,讓 DeployKit 能夠支持更多框架和平臺。

img

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章