1.1.5 生态工具
除Serverless Framework之外,Serverless Devs同样是无厂商锁定的多云开发者工具。目前按照Serverless Devs的官方仓库显示,其已经支持AWS Lambda,阿里云函数计算,腾讯云云函数,华为云Serverless工作流以及百度智能云函数计算等产品。与Serverless Framework不同的是,Serverless Devs主打的是Serverless应用全生命周期管理工具。
如下图所示,以阿里云函数计算为例,Serverless Devs可以支持包括脚手架、调试、发布、运维等多个流程多种功能:
另外值得一提的是,Serverless Devs不仅支持拥有完善的工具链产品,其在2021年还对外正式发布Serverless Devs Model(Serverless开发者工具模型:SDM):
通过Serverless Devs,开发者同样可以非常简单快速的使用各个厂商/平台的Serverless产品,以阿里云函数计算为例:
# 安装
npm install -g @serverless-devs/s
# 配置密钥
s config add --AccessKeyID AccessKeyID --AccessKeySecret AccessKeySecret
# 创建一个项目
s init node.js12-http -d fc-hello-world-demo
# 进入项目
cd fc-hello-world-demo
# 部署项目
s deploy
开发框架
在传统架构下,开发者想要进行业务开发有着诸多的开发者个框架可供选择,以Web框架为例,Node.js语言类的有Expree.js,Nuxt.js,Egg.js等,Python语言类的有Django,Flask等,Java类的也有SpringBoot等,但是随着Serverless架构的不断发展,传统框架迁移到Serverless是一种解决Serverless应用开发者框架匮乏的方案之一,但是实际上这些框架并不是针对Serverles是架构设计的,很有可能有诸多的优秀特性丧失,例如某些框架的异步处理能力,尽管Serverless平台都已经提供了异步触发能力,但是框架本身的异步处理能力在Serverless架构下就很难被利用起来,所以针对Serverless架构所设计的Serverless First框架,就显得尤为重要。
目前在社区生态中,有诸多优秀的Serverless应用层面的开发者框架,例如基于原有 Midway 的 IoC 体系设计,复用原有装饰器和解耦能力的同时,将代码分解到不同的函数中,并发布到各个云平台的Midway Serverless;基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架Malagu等。
以Midway Serverless为例,Midway Serverless 是用于构建 Node.js 云函数的 Serverless 框架,帮助开发者在云原生时代大幅降低维护成本,更专注于产品研发。Midway Serverless拥有诸多优点,例如:
跨云厂商:一份代码可在多个云平台间快速部署,不用担心产品会被云厂商所绑定。
云端一体化:提供了多套和社区前端 React、Vue 等融合一体化开发的方案。
代码复用:通过框架的依赖注入能力,让每一部分逻辑单元都天然可复用,可以快速方便地组合以生成复杂的应用。
传统迁移:通过框架的运行时扩展能力,让 Egg.js 、Koa、Express.js 等传统应用无缝迁移至各云厂商的云函数
通过该框架,开发者可以快速构建的全栈应用,也可以发布的函数服务,Restful 接口等,也可以加上前端(react,vue)代码构建中后台项目,也可以使用 Midway 提供的方案迁移传统的 Egg/Koa/Express 应用上弹性容器等。以全栈应用为例:
# 安装
npm i @midwayjs/faas-cli -g
# 创建一个项目
f create --template-package=@midwayjs-examples/midway-hooks-react
# 部署项目
f deploy
除Midway Serverless之外,Malagu也是一款社区驱动的Serverless First框架。Malagu 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架,又叫 M 框架。使用同一套编程语言和 IoC 设计,用于开发前端、后端和前后端一体化应用。并且结合了 OOP(面向对象编程)、AOP(面向切面编程)等元素,借鉴了很多 Spring Boot 设计思想。在后端,Malagu 抽象一套接口,方便适配任意的平台和基础框架,是一个平台或基础框架无关的上层框架。平台如阿里云函数计算、腾讯云云函数、AWS Lambda、Vercel 等,基础框架如 Express、Koa、Fastify 等。与大部分传统开发框架不同的是,Malagu 是一个全栈应用开发框架,如果只看后端部分,Malagu 与 Spring Boot 是同一层次的东西,如果只看前端部分,Malagu 是 React、Vue 等前端框架之上的更上层的抽象,所以 Malagu 是前端框架无关的。Malagu 与传统框架比较,Malagu 提供了前后端渐进式一体化方案,在前后端之上做了一层抽象,让前后端在开发、测试、部署拥有一致的体验。传统框架一般不考虑应用部署环节,Malagu 借助 Serverless 技术优势,让部署环节变得流畅且低成本。另外,Malagu 也是一个 Serverless 优先的框架,屏蔽了 Serverless 底层的细节,开箱即用。针对 Serverless 场景做了很多优化,如冷启动、数据库操作等等;同时,也提供了很多开箱即用的能力,比如安全、认证与授权、OAuth2.0、OIDC、数据库操作、缓存、前端框架集成、依赖注入、AOP、微服务等。