Midway Serverless v1.0 发布之后,有不少同学来试用,提建议,感谢大家。
Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,走过路过麻烦到 Github 点 Star!
Midway Serverless 在函数开发的部分提供了 一层特殊的防腐层,能让同样的代码,在不同的平台运行,即所谓的运行时适配。而如今,这层适配器不仅仅开发给函数,也开放给传统数以万计的应用,让它们能够快速的迁移到现有的云平台,享受弹性容器的红利。
具体的防腐层设计,我们将在后面的文章详述,现在来看看这个功能如何使用。
使用举例
我们拿传统的 EggJS 应用举例。
整个传统应用迁移的部分和 Midway Serverless 的函数部分使用的基本模式相同,在项目根目录添加一个 f.yml
文件,即可使用 f deploy
发布。
service: my-egg-demo ## 应用发布到云平台的名字
provider:
name: aliyun ## 发布的云平台,aliyun,tencent 等
deployType: egg ## 部署的应用类型
整个过程相对比较简单,底层使用的运行时适配和函数是一致的,也达到了一套代码适配多平台的目的。
和平台的迁移方案的区别
Midway Serverless 从 v1.1 版本开始提供了一套应用迁移到 Serverless 容器的方案,而各个平台也已经有自己的方案,比如阿里云的 customRuntime 接入方案,以及腾讯云的各种 Component 组件。 这其中的区别有几个:
- 1、Midway Serverless 提供的平台迁移方案和函数部分相同,是跨平台的,即方案不受限于阿里云或者其他云平台,代码和应用时期一致,不需要(或者很少)做修改
- 2、复用函数的运行时适配能力,可以和函数享受同样稳定的能力,这套适配能力由 Midway Serverless 本身提供,代码开源,也方便排查和定位问题,或者增强能力
- 3、Midway Serverless 这套能力比较通用,私有化部署或者 适配其他应用框架非常容易
Midway Serverless 运行时提供了通用的生命周期,社区的大部分平台我们都会做一层防腐适配,同时这套运行时方案也适合于不同公司的私有化平台,给内部应用使用提供了便利。
上周 7.25 我们在上海阿里云 Serverless 云开发 Workshop 上做了这层运行时防腐层的分享,后续也将提供文字版,欢迎关注。
一些能力限制
Midway Serverless 提供了简单的方案,能够将现有的应用迁移到各家云平台,但是本身还是有一些限制和注意事项,我们列举如下。
- 1、平台网关的限制,比如阿里云和腾讯云网关,超时时间,POST 大小、文件上传等,和函数是一样的,即函数不能做的事情,在这套应用部署方案中依旧不能做
- 2、应用的包部署不宜过大,如果比较大,可以使用云平台的对应方案来解决,比如阿里云的 NAS,或是腾讯云/AWS 的 Layer
- 3、应用在函数容器中的带状态的部分,由应用本身处理,这套方案不负责解决这个问题
- 4、应用在函数容器中部署模型为 单进程,稳定性由弹性容器本身来解决
- 5、应用中有 long runing 或者定时任务的部分,在无流量情况下不会触发,请使用其他方案代替。
- 6、应用中 socket 等非 HTTP 协议,不会生效
最后
函数体系发布之后,我们将依旧回归的到应用本身,去思考如何让函数和应用结合到一起,让应用和函数在不同场景下能够发挥各自最大的作用,