In their paper “Serverless Computing: One Step Forward, Two Steps back”, Hellerstein et. al summarized the existing issues of serverless computing.
Serverless computing的好处是autoscaling,Function as a service是对云计算环境编程的一个跃进。
坏处是:
- 忽略了数据处理效率的重要性
- “stymie”阻滞了分布式系统的发展
作者的意见是虽然FaaS功能强大,对于Embarrassingly parallel functions最合适,其它的需要多个Functions组合的就呵呵了。
“FasS is a data-shipping architecture",把数据送给程序,而不是把程序送给数据。
具体问题:
- 15分钟就shutdown。
- I/O瓶颈。给Lambda函数的网络带宽Quota过低。
- 两个Lambda函数只能通过存储通信。Lambda函数可以Init网络连接,但是自己不能被连接(no addressability),所以状态只能通过存储比如S3做状态保存,彼此通信。通信效率太差。阻滞了分布式系统的发展也是这个原因。分布式算法都是基于网络连接的。
- 没有专用硬件。只能用CPU和RAM。
未来改进:
- Infrastructure需要提供灵活的fluid代码和数据的placement。采用High-level,data centric DSL语言定义。SQL+UDFs,MapReduce,TensorFlow,然后基础设施把代码ship到数据。优化调度。
- 多种硬件。用户定义SLO,基础设施匹配硬件资源
- Long-running, addressable virtual agents. 像传统OS里的线程,端口一样,可以被访问(addressible)
- Disorderly programming 程序需要被在时间和空间中被移动。新的编程语言不假设程序有order。
- 灵活的编程语言,统一的intermediate representation (IR)。统一的IR可以做统一的优化。(是不是向java的字节码一样?)在云上哪里都可以运行。
- SLO保证
- 安全考虑。安全是由基础设施保证了。
From me
两个大方向:
- fluid code and data placement, 包括语言,addressibility能力等
- 基础设施保证SLO和安全,自动按照DSL匹配。
一个Model:
用户定义行为,基础设施搞定。就是Serverless的目标。