
1.4 Serverless的应用场景
Serverless.com公司在2019年的一份调研报告表明,Serverless当前的典型使用场景可以归纳为以下几种。
1. RESTful & GraphQL API
调研表明,RESTful API的Serverless应用场景占比高达70%,REST(Representational State Transfer,表现层状态转移)的主要作用是为HTTP API提供通用的访问格式和规范,让其更易理解,更加通用。由于API的增删改查(CRUD)操作是通过触发实现的,和Serverless架构的实现天然匹配,并且适用于弹性扩缩容,因此很多企业通过Serverless架构提供RESTful API服务。
2. Web框架支持
因为Serverless具备弹性扩缩容的特性,所以也适合搭建Web框架提供服务。不同开发语言的Web框架都可以支持Serverless部署,例如Python Flask、Node Express.js、 Next.js、PHP Laravel等。但由于Serverless FaaS层事件触发、无状态的特性,针对Web框架的支持需要一定的适配成本,可以通过中间层来实现,这部分内容在后续章节的实战中也会详细说明。
3. 数据管道——流数据处理
在流式消息处理的架构中,如果要对流数据做一些分析和处理,可以采用Serverless架构。通过队列中的消息/日志等触发函数的计算平台,对数据进行处理后再次投递到后端做备份存储和离线分析,Serverless的计算节点可以很好地根据数据量大小扩缩容,并且无须考虑节点的运维。
4. CI/CD流程自动化
持续集成(CI)和持续部署(CD)是DevOps的核心概念,利用CI/CD流水线可以很好地实现测试/发布自动化,降低错误率,提升软件开发效率。而Serverless通过事件触发能力,可以完整串联构建、测试、部署的流程,实现自动化的CI/CD流水线。
5. 物联网
物联网具备事件触发的特性,Serverless非常适合作为物联网设备后端,处理物联网设备的消息,例如智能音箱触发语音指令、摄像头图片的处理和转储等。
从上述场景也可以看出,这些典型应用都充分利用了Serverless架构的优势和特点,即弹性伸缩、事件触发、无状态等。后续的章节会对Serverless架构做进一步解析,通过实战案例帮助读者更好地理解这些典型的应用场景。