概述
Serverless作为一种通用Paas服务,其实已经发展了很久了,从各种信息源可以看到,Serverless正逐渐走向成熟期,本文希望参考资料,并总结Serverless的发展历程。
内容
Serverless的发展阶段
事件驱动Faas
此时的Faas本质上是一个HTTP服务,Faas框架负责解析或代理CloudEvent请求,用户只需要写好一个Handler,并将Handler交给Faas框架托管,就能实现一个事件驱动的服务,典型的事件有:
- MQ消费
- Timer
- HTTP请求
Serverless/Faas 应用
这个阶段,Faas其实需要支持多种使用方式
- 指定语言和指定框架
Faas框架内部支持一些主流语言的主流框架,主流框架下又支持多个大版本,用户只要用了这些主流框架,迁移到Faas的成本就非常低。
- Custom Runtime
用户可以自定义使用任何语言,任何运行时版本,此时容器的镜像为Debian等通用镜像。Custom Runtime必须实现为一个HTTP Server,而且必须遵从Faas的相关约定,例如监听的端口,Connection需要设置为Keep-Alive,HTTP Server需要在120秒内启动完毕
Serverless App Engine
是一种面向大型微服务场景的Serverless,阿里云解决的就是Java微服务上云的问题,以Paas服务的形式帮助Java应用上Serverless
Midway Serverless
准确来说,Midway是一个以nodejs为基础的前后端一体的Faas开发框架,前端一般基于React,后端直接使用Baas服务,同时它支持离开Faas进行调试。本质上Midway把应用和Faas进行了最强的绑定,限定了你的Faas平台必须支持Midway框架才能正常运行,同时限定了你的开发框架必须使用Midway。这种极致绑定带来的是极致的开发效率。
Serverless 容器服务
这里的Serverless就和Faas关系不那么大了,它指的是一种Kubernetes的托管方式,这种托管方式是Serverless的,即Kubernetes用户感知不到Node的概念,也无需对Node进行运维
边缘函数计算
主要用于IoT设备,这些设备支持运行本地Faas,拥有本地内存,他们会对边缘数据进行筛选、简单计算等工作,然后才将数据上传到云端的Faas
Serverless GPU
主流的应用是GPU在线推理,因为这个特别符合Serverless的无状态场景。AWS Lambda已经广泛支持
Serverless DB
存储的Serverless化正在快速进行中,阿里云已经上线了PolarDB Serverless,那么它跟普通的云原生DB有什么区别呢?
- 计算和内存彻底解耦,用户想升级哪个就升级哪个,不需要绑定升级
- 资源彻底池化,用户使用的是一个DB的租户,一群用户共享一个大的DB实例
- 内存进一步池化,形成三层池化(内存与计算/存储),成本下降
Serverless开发工具
本地端Devs工具
本质上是基于开源项目和nodejs开发的类VSCode IDE,支持函数本地调试、远程开发和一键部署等功能
Web端Devs工具
直接在Faas中进行开发,随时开发,随时部署
Serverless 工作流
正如其名,即Serverless + 工作流
- Serverless指的是,为了实现一个场景,你拆分成了多个Faas,但是你希望能系统地管理这些Faas
- 工作流帮助你进行函数编排,本质上是通过yaml进行编程
- 直观上来看,这种开发模式体验可能并不好
AWS application composer
组装式研发Serverless,目前还处于初级阶段