Malagu 框架是平台无关的,可以部署在各种 Serverless 平台、传统服务器之上。Malagu 框架抽象了一套统一的后端接口,不同平台只需要适配统一的后端接口即可。一般一个平台对应着一个适配器组件(可以多个),使用不同平台的适配组件,适配并部署到不同的平台。适配器组件屏蔽掉平台底层细节,让平台的学习成本几乎为零。目前框架已经适配的平台:

使用方法

首先,确定我们需要运行和部署的平台,选择合适的适配器组件添加到项目依赖中。比如 @malagu/express@malagu/fc-adapter@malagu/scf-adapter@malagu/lambda-adapter@malagu/vercel-adapter 。Malagu 组件是一个普通的 npm 包,可以通过以下命令安装:

  1. # 安装阿里云函数计算适配器组件
  2. yarn add @malagu/fc-adapter # 或者 npm i @malagu/fc-adapter

安装好后,默认不需要任何配置,我们也不必知道该组件与函数计算的底层细节。当我们使用 malagu deploy 命令进行部署的时候,该组件会按照约定的部署规则将我们的代码部署到对应的平台。

对于阿里云函数计算,约定的部署规则是创建的服务名为 malagu,函数名为项目的名称,别名为 test 等等。约定的部署规则可以通过组件之间的属性覆盖自定义。

首次部署

当我们首次部署应用到平台,框架自动判断并提示我们输入平台账号相关的信息,对于阿里云函数计算、腾讯云云函数等云计算厂商平台,我们需要输入 AKSK 信息,告诉框架部署到平台哪个账号下。

下次部署的时候,我们不需要再次输入账号相关信息,这些账号相关的信息会持久化在合适的位置。

适配器组件职责

一个适配器组件往往包含两个主要职责:应用入口文件适配构建后的代码部署。不同的平台,应用入口的定义往往是不同的,比如阿里云函数计算与腾讯云云函数的入口是不一样,甚至阿里云函数计算自身的 API 网关与 HTTP 函数对应的入口定义也是不一样。

不同平台的部署实现也不一样,使用框架提供的 Deploy 插件能力,结合平台提供的 SDK 或者工具实现部署功能。

任意平台适配器组件,框架都是基于约定大于配置原则,在尽量保证不同平台风格统一的情况下,零配置,开箱即用,且无需关心平台底层细节。