伯克利:serverless是下一代计算范式

摘要:Serverless技术正是云厂商的基于规模经济的一个选择。

引子

刚过去的HC2020,华为面向多样化算力的时代,发布了DC分布式计算的三个开发套件,其中一个是元戎组件。元戎是基于函数计算的分布式并行应用开发框架,希望能够帮助开发者定义DC分布式计算的开发模式和运行模式。关于的这里的函数计算,不断有同事询问这个和Serverless的关系或者区别呢?

在公司不同的场景,推动serverless技术的使用也有两年时间了,现在也是借这个引子,说说自己的理解。

1.Serverless的本质

Serverless当前相对比较正式的定义(CNCF白皮书)有几个特征:是云计算形态的进一步发展,相对于当前云计算,它带来两个关键好处:NoOPSPay as You Run。现阶段Serverless技术的实现形态,以AWS发布的Lambda为代表,其他还包括微软Azure Function,谷歌Cloud Functions等。在2019年伯克利发布《Cloud Programming Simplified》展望中,把Serverless定义为云计算的下一代计算范式。云计算从微服务技术主导到Serverless技术的演进,我们看看云计算的本质就可以比较好的理解这些技术背后的逻辑,也就能理解为什么伯克利继成功断言云计算的兴起之后,把目光聚焦在Serverless技术上呢?

图1:当前serverless技术的阶段和形态

1.1云计算兴起到云原生生态的演进

云计算的兴起,在CPU硬件能力大力发展之后,得益于OS+ISV的软件生态和虚拟化技术的成熟。云计算巧妙地延续OS+ISV生态,把ISV可以无缝地迁移到云上。云vendor利用虚拟化技术,对客户提供IAAS服务。满足客户:1、应用软件运行条件没有发生变化;2、不用维护物理主机,只需要关注应用软件本身。

首先,从云计算的服务形态来看,对于企业应用及其基础设施,现在变成了用户和基础设施提供商两个层次,如下图所示。这个逻辑层次的划分很重要,在软件生态中原来基础设施平台和应用软件都是由用户自己管理和维护,这时出现了专业的平台提供者的角色,来提供基础设施。

图2:云计算带来基础设施提供商的概念

其次,我们回到云计算兴起的过程,如图三所示,云Vendor利用虚拟化技术的成熟,没有改变原来OS+ISV的生态玩法,对用户提供IAAS服务,这样用户的软件几乎是无缝迁移到云厂商的基础设施之上的。这样云厂商快速地聚集了一些企业用户上云,在这个阶段之后,云厂商比如AWS快速创新,在IAAS服务之外,云中间件,云安全,第三方服务集成大量的云上应用运行和业务逻辑服务。逐渐构建起云原生生态所需要的生态环境。在这个第一阶段之后,容器技术持续演进,云原生的软件生态开始形成,可以明显地看到软件生态的界面从GuestOS上升到容器的层次,应用软件的部署也是由平台提供商来完成,用户不用再关注基础设施运行的操作系统是什么了。这个软件栈中云厂商即平台提供商cover的范围又上升了一步,这个变化既是云原生生态带来的变化,又有云厂商商业逻辑的需要在里面。

图3:云计算的产生和演进示意图

为什么这么说呢?可以看下一节。

1.2云计算的商业逻辑建立在规模经济之上

当前云计算集中在几个云厂商,而且成功的厂商都是在自有的消耗大量基础设施的业务基础之上,云业务才逐渐扩大发展起来的,比如,AWS和阿里云基于自有的电商服务平台。谷歌云和Azure在分别找到自己的移动用户服务和SAAS服务的规模运营之后,两家也是逐渐占据市场份额。

观察云计算发展过程,我们可以说云计算厂商遵循规模经济的发展模式。结合规模经济,有两个重要的现象或者规律,了解这两个现象,可以很好地帮助我们了解云技术的演进方向。

首先,可以解释为规模经济性,简单地说,随着生产规模(云计算)扩大,平均单位产出(服务收益)成本(基础设施成本)趋于下降。英国的杰弗里·韦斯特研究城市的人口和产业的发展规律,总结为规模经济体的产出呈超线性,而成本遵循亚线性规律,如下图所示。

了解到这个现象,我们可以理解为什么云厂商极力追求规模。AWS 2002年推出,持续推进云服务,到2013年AWS发布财报,才进入规模经济的盈利期。AWS现在每年投入100亿美金的CAPS,持续构建云规模,全球规模>500W台服务器。基于规模成本的优势,构建了长期价值成本和技术生态驱动的良性循环,掌握了云服务的定价策略,19年reInvent宣称实现了70+次的降价正常,同时还能获取云计算业务20+%的营业利润率。

图4:云计算遵循规模经济性的现象

其次,可以解释为规模的有效性。生产规模不断扩大,当基础设施单位成本降到最低时,达到最佳生产规模,如果生产技术没有发生变革,这时再继续扩大生产规模,平均单位产出成本转而逐渐上升。当前进入规模效应良性循环的AWS,其capex/收入比基本保持在40-50%左右,虽然相对稳定,也需要寻求继续成本下降的空间。

图5:规模经济LAC曲线

而同时,当前云厂商主体服务IAAS,为租户提供虚拟机资源,都遇到了资源利用率低的问题,包括CPU利用率和内存利用率。业内数据:云厂商提供的数据中心,CPU资源利用率不高于20-30%。租户购买固定VCPU和内存配置的虚拟机,云厂商实际在平台使用的是装箱算法,按照租户的需求,装配到数据中心的空余空间中去。租户按照其业务峰值购买了资源,在这种情况下,大量租户资源长时间处于业务非峰值态,云厂商对于资源利用率这个问题基本都是无能为力。而同时,云厂商自运营的业务,通过不同业务的混部,SLA的调度等技术,比如谷歌很早就已经宣称Brog的改进版可以在数据中心获得90%的CPU资源利用率。这样一个现状,也是云厂商不约而同地提出共享计算实例的原因,比如AWS T实例等。通过用户SLA策略,在用户知情的情况下,获得对VCPU的共享的控制权,实现高CPU利用率。

回到前面我们提到用户和平台提供商两个角度。首先,云厂商希望能够获得更多的对资源的控制权,让超大规模的云计算继续享有规模的经济性,能够做到单位资源成本继续下降。其次,租户担一方面心其业务运行的平稳性,另一方面也希望能够更加聚焦业务本身。所以我们可以理解了云计算技术的方向:云厂商管理的软件栈层次肯定会越来越高,云计算技术必须能够解决用户业务的弹性和高可扩展。云厂商获得应用运行资源的最大控制权,追求高资源利用率和低成本,租户获得业务SLA保证的应用。

Serverless技术正是云厂商的基于规模经济的一个选择。

1.3 Serverless技术是匹配云原生规模经济的选择

如图3所示,Serverless在容器Runtime之后,进一步实现计算抽象,云厂商负责管理的软件栈进一步提升到Runtime。这里笔者把函数计算和Serverless技术分开。函数计算是一种计算范式的抽象,把计算抽象进一步为两个层次,函数(代码逻辑)和函数运行时(函数运行需要的资源,库等),即

函数计算= 函数+函数运行时

Serverless计算也是利用函数计算上述的抽象,在云原生生态下,进一步让用户聚焦到业务代码逻辑,直接使用云厂商提供的Runtime,相比容器,云厂商管理的软件栈又提升了一个层次。笔者把Serverless技术归到云原生的技术,因为serverless为租户提供服务,必须依赖云厂商提供的大量后台的服务及其运行时,即

Serverless= FaaS+BaaS

函数计算这个层次的抽闲,借助于终端用户或IOT等事件型的应用,将代码和其运行时分离,云厂商提供函数代码的运行时及其物理资源。如下图所示,平台提供商获得了软件栈最大可控制的范围,而用户只需要关注其代码。因此,函数粒度的应用,让平台提供商获得了最大的技术空间,基于这个空间,让云计算的规模成本进一步得到下降,所以Serverless技术是云厂商必选的选择项。

图6:Serverless使平台提供商获得软件栈中最大的可控制技术空间

然而,在当前阶段的Serverless,适用范围还主要是事件式,短时间任务型的应用。用户编写任务的函数,在执行时间,资源上有一个约束。平台提供商基于此获得最大的调度权限,所以提供了按次收费,按需收费的定价策略。在海量终端的服务驱动的场景获得很好的应用,充分发挥了serverless按需弹性,按需计费的好处。显然这样的应用范围,是不足以满足云厂商的期待的。所以从Serverless= FaaS+BaaS,另外一个BaaS方面,云厂商要推动serverless计算的快速演进。

Serverless 官方定义中从用户角度看到的两个关键特征NoOPS和Pay as You Run。符合这两个特征的形态也是Serverless技术,所以Serverless技术又比函数计算概念广泛,不一定非得基于函数计算的抽象,只要能为用户提供NoOPS和Pay as You Run的业务也就可以归到Serverless技术中去。所以云厂商不断的推进两件事情。

一件事情是把BaaS serverless化,这个我们都已经看到了,云DB,云存储的serverless产品都已经推出。还有一件事情,云厂商需要推动现在的应用serverless化,即当前用户继续关于自己应用服务及其runtime,但是服务的autoscaling,并行化模板都由云厂商来提供。这一点谷歌的产品策略中可以清晰地看到这一点。

谷歌对于Serverless两条明确的技术线:一是cloudRun产品,基于K8S容器平台演进的Serverless平台,相当于Serverless的应用平台,推动已有的微服务化应用演进到serverless化;二是移动应用的CloudFunction+MBaaS的产品。两条技术线推动Serverless技术演进。AWS当然也不会落后,虽然AWS没有想谷歌一样的运行时平台的强大生态控制权,但是AWS也直接提供AutoScaling、ASM等服务指导应用服务Serverless化。

基于上述我们对serverless技术背后的商业逻辑,所以它成为了云厂商的必选,也是伯克利断言serverless是云时代下一代计算范式的底气所在。

 

点击关注,第一时间了解华为云新鲜技术~