https://github.com/serverless/serverless 是github上star比较多的一个用于部署serverless应用的工具,对于新手来说有一定的帮助。下文简称serverless框架
优点
归集了几个公有云厂商(gcp cloudfunction/aws lambda/腾讯云 serverless)的serverless服务特性,并做了抽象。通过建立一份配置,即可以快速把应用部署到不同的平台。
天然问题
这个项目主要贡献者是腾讯,对于腾讯云的serverless应用支持比较好。对于另外的厂商来说,则略微逊色。比如gcp cloudfunction的instance设置,就支持不是很好。这就牵涉出来一个问题:
### serverless配置的学习成本 serverless的配置,与云厂商原生配置,是存在mapping关系的。如果你需要深入了解配置的生效方式,就需要你有较强的nodejs代码阅读能力,才能快速trace到serverless框架配置是怎么mapping到云厂商的原生配置。换句话说,使用serverless框架,是有一定的学习成本的,而且debug成本也相当高。
### 你的应用是否需要跨厂商部署 serverless框架本身希望做成general的工具,一次编写配置,支持部署到多个云厂商。所以主要方向还是支持通用功能的部署。但是,如果你的应用本身没有跨厂商部署的必要,那么,使用云厂商的原生配置效率是否会更高,这个需要权衡一下。
serverless厂商的高级特性是否重要
加入云厂商的高级特性对项目很重要,在serverless框架又没有这个特性。解决这个问题,常见的有两种思路
- fork仓库,自行修改,使用本地版本,或者提pr到serverless框架项目等待合并再使用
- patch方式,先用serverless框架部署,再调用云厂商的部署工具设置高级特性 成本与收益自行衡量,没有银弹的serverless工具,最终还是要看项目的特性。serverless框架毕竟只是一个部署工具,相比于项目就没那么重要了。