素材巴巴 > 程序开发 >

简单、快速|DeployKit 云部署套件

程序开发 2023-09-10 17:32:04

img


本文作者:杨苏博

解读 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 设计与实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gnW0jvgk-1685089268659)(null)]

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


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。