系统级挑战
1. 开销
对于Serverless,开销是最基本的挑战,这包括最小化Serverless函数在执行时和空闲时所使用的资源。另外一个方面是定价模型。例如,目前来说,CPU密集型应用使用Serverless函数更经济,而I/O密集型应用仍然是使用传统的虚拟机或者容器更便宜。
2. 冷启动
Serverless的一大特点是能够将函数在空闲时,缩容至0实例,并且此时是不计费的。然而,这种做法造成了冷启动的问题,因为使函数从0实例到准备执行需要消耗一定的时间。如何在保持缩放到0实例的同时,最小化冷启动所带来的消耗,是一个值得研究的话题。
3. 资源限制
为了使Serverless平台能够处理流量峰值以及预防攻击,一般需要对资源进行限制,这里包括对Serverless函数的内存,执行时间,带宽,CPU使用率等进行限制。并且,还可能会有对多个函数甚至整个平台应用的总资源限制。
4. 安全
多个用户的函数会运行在同一平台上,因此函数之间的完全隔离非常关键。
5. 伸缩
Serverless平台必须保证用户函数的可伸缩性和弹性,这里主要指的是平台需要响应函数当前的负载,并预期未来的负载,从而调整提供的资源。这是一个很有挑战的问题,因为这些预测和调整资源的决策都是要在几乎没有应用层信息的情况下进行的。例如,系统虽然可以利用请求队列的长度来预测负载强度,但是却看不见请求的内容。
6. 混合云
随着Serverless越来越受欢迎,一个平台不太可能具有所有功能