FaaS
FaaS,功能即服务,也可以翻译成函数即服务。简单来说就是,我们只用把代码写好,交给平台,让平台去处理部署相关的一切。
作为 serverless 的集大成者和未来的方向,我一直都有在关注和尝试,也梦想着该技术成熟之后,轻松的开发体验:自动部署,秒级扩容,按量收费。
目标
在体验过阿里云 FC,Cloudflare 的 Worker,AWS 的 lambda 以及其他的 serverless 服务之后。我给我自己提出的目标主要有以下两点:
- 渐进式
- 不与服务商绑定
渐进式
说到底,其实 FaaS 现在还不是很成熟,还没有一个统一的标准,各种配套设施也还不是很完善,导致开发体验很差。
比如说最近写 cloudflare 的 worker,CICD 需要自己用 Action 搭建,专有的库没有类型提示,本地调试还用不云端的数据库,总之开发体验非常差,可能是我的方式不太对,但下次肯定不会选择了。
这只是一部分问题,其他服务商也有各种各样的问题。比如说本地不好调试之类的。
所以,我认为 FaaS 应该是渐进式的。能在你的平台上面跑起来的,就一定要能够在我自己的环境上面运行,且行为必须一致。
不与服务商绑定
这个比较显然了,方便自己做选择,避免被套牢。
解决方案
现有应用迁移
既然是渐进式,那就先尝试把现在在传统环境里面跑的,搬到 FaaS 平台上面吧。
看到一个在 lambda 上面跑 fastapi 的示例:https://github.com/awslabs/aws-lambda-web-adapter/blob/main/examples/fastapi/README.md
基于 Lambda 开发
由于 aws 的领先地位和先发优势,大家都模仿着 lambda 做的产品,所以大多数时候其他的运行时也兼容 lambda,和 s3 是一个道理。
看到了个项目,https://github.com/fission/fission,在 k8s 上面跑 lambda,有空试试,还有 Knative。