Serverless
仅依赖云端服务来管理业务逻辑和状态的应用或服务,一般称为 BaaS (Backend as a Service) 事件驱动且短时执行应用或服务,其主要逻辑由开发者完成,但由第三方管理(比如 AWS Lambda),一般称为 FaaS (Function as a Service)。目前大火的 Serverless 一般是指 FaaS。
- 用户无需配置和管理服务器
- 用户服务不需要基于特定框架或软件库
- 部署简单,只需要将代码上传到 serverless 平台即可
- 完全自动化的横向扩展
- 事件触发,比如 http 请求触发、文件更新触发、时间触发、消息触发等
- 低成本,比如 AWS Lambda 按执行时间和触发次数收费,在代码未运行时无需付费
当然,serverless 也并非银弹,也有其特有的局限性
- 每次函数调用的时间一般都有限制,比如 AWS Lambda 限制每个函数最长只能运行 5 分钟
- 启动延迟,特别是应用不活跃或者突发流量的情况下延迟尤为明显
- 平台依赖,比如服务发现、监控、调试、API Gateway 等都依赖于 serverless 平台提供的功能
- OpenFaas: https://github.com/openfaas/faas
- Fission:
- Kubeless: https://github.com/kubeless/kubeless
- OpenWhisk:
- Fn: https://fnproject.io/
- AWS Lambda:
- Azure Container Instance (ACI): https://azure.microsoft.com/zh-cn/services/container-instances/
- Azure Functions:
- Google Cloud Functions: https://cloud.google.com/functions/
- Huawei CCI:
- Aliyun Serverless Kubernetes: https://help.aliyun.com/document_detail/71480.html