Serverless 的使用场景
虽然 Serverless 的应用很广泛,但是其也有局限性,Serverless 比较适合以下场景:
- 异步的并发,组件可独立部署和扩展
- 应对突发或服务使用量不可预测(主要是为了节约成本,因为 Serverless 应用在不运行时不收费)
- 短暂、无状态的应用,对冷启动时间不敏感
- 需要快速开发迭代的业务(因为无需提前申请资源,因此可以加快业务上线速度)
Serverless 的使用场景示例如:
- ETL
- 机器学习及 AI 模型处理
- 图片处理
- IoT 传感器数据分析
- 流处理
- 聊天机器人
CNCF Serverless Whitepaper v1.0 中给出了诸多 Serverless 使用场景的详细描述。
示例
我们以一个游戏应用为例,来说明什么是 serverless 应用。
一款移动端游戏至少包含如下几个特性:
- 移动端友好的用户体验
- 用户管理和权限认证
- 关卡、升级等游戏逻辑,游戏排行,玩家的等级、任务等信息
传统的应用程序架构可能是这样的:
- 一个 app 前端,iOS 或者安卓
- 用 Java 写的后端,使用 JBoss 或者 Tomcat 做 server 运行
- 使用关系型数据库存储用户数据,如 MySQL
这样的架构可以让前端十分轻便,不需要做什么应用逻辑,只是负责渲染用户界面,将请求通过 HTTP 发送给后端,而所有的数据操作都是有由后端的 Java 程序来完成的。
这样的架构开发起来比较容易,但是维护起来确十分复杂,前端开发、后端的开发都需要十分专业的人员、环境的配置,还要有人专门维护数据库、应用的更新和升级。
而在 serverless 架构中,我们不再需要在服务器端代码中存储任何会话状态,而是直接将它们存储在 NoSQL 中,这样将使应用程序无状态,有助于弹性扩展。前端可以直接利用 BaaS 而减少后端的编码需求,这样架构的本质上是减少了应用程序开发的人力成本,降低了自己维护基础设施的风险,而且利用云的能力更便于扩展和快速迭代。
当前内容版权归 Jimmy Song 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Jimmy Song .