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 平台提供的功能