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

引子

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

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

1.Serverless的本质

Serverless当前相对比较正式的定义(CNCF白皮书)有几个特征:是云计算形态的进一步发展,相对于当前云计算,它带来两个关键好处:NoOPS和Pay 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是云时代下一代计算范式的底气所在。

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

伯克利:serverless是下一代计算范式的更多相关文章

  1. Serverless 实战 —— 函数计算 + Typescript 实践

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  2. Serverless助力AI计算:阿里云ACK Serverless/ECI发布GPU容器实例

    ACK Serverless(Serverless Kubernetes)近期基于ECI(弹性容器实例)正式推出GPU容器实例支持,让用户以serverless的方式快速运行AI计算任务,极大降低AI ...

  3. Serverless 解惑——函数计算如何安装字体

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  4. Everything is Serverless,从开源框架对比说起

    摘要:Everything is Serverless. 在众多云计算解决方案中,Serverless 逐渐崭露头角,受到了很多关注并且发展迅猛,今天就关于serverless 开源框架细说二三. 什 ...

  5. 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:黄文俊,腾讯云高级产品经理,曾经历过企业级存储.企业级容器平台等产品的架构与开发,对容器.微服务.无服务器.DevOps等都有浓厚兴趣. ...

  6. 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案

    作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...

  7. 干货 | 用Serverless快速在APP中构建调研问卷

    Serverless 计算将会成为云时代默认的计算范式,并取代 Serverful (传统云)计算模式,因此也就意味着服务器 -- 客户端模式的终结. ------<简化云端编程:伯克利视角下的 ...

  8. 视频课程 | 云原生下的Serverless浅谈

    京东云开发者社区在3月底于北京举行了以"Cloud Native时代的应用之路与开源创新"为主题的技术沙龙,现场多位技术大咖与开发者们面对面就Cloud Native进行了深入交流 ...

  9. 阿里云研究员叔同:Serverless 正当时!

    作者 | 叔同 导读:Serverless 将开发人员从繁重的手动资源管理和性能优化中解放出来,就像数十年前汇编语言演变到高级语言的过程一样,云计算生产力再一次发生变革.Serverless 的核心价 ...

  10. 6岁!是时候重新认识下Serverless了

    一.背景 Serverless 概念从2012年开始提出,真正推出相关云产品是2014年AWS推出Lambda.如果我们将 Serverless 比作一个婴儿,那么它已经6岁了. 虽然业界对Serve ...

随机推荐

  1. Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具

    1. 前言 大家好,我是沙漠尽头的狼. Dotnet工具箱是一个纯前端的.开源和免费的工具网站,周末我参考了开源项目it-tools,对网站界面文字进行了汉化,并重新部署了网站.该网站共有10大工具分 ...

  2. Tinyalsa PCM API 实现深度剖析

    高级 Linux 音频架构 (ALSA) 用于为 Linux 操作系统提供音频和 MIDI 功能.它可以高效地支持所有类型的音频接口,从消费者声卡到专业的多通道音频接口.它支持全模块化的音频驱动.它是 ...

  3. Redis 6 学习笔记 3 —— 用SpringBoot整合Redis的踩坑,了解事务、乐观锁、悲观锁

    SpringBoot整合Redis时踩到的坑 jdk1.8环境,用idea的Spring Initializr创建spring boot项目,版本我选的2.7.6.pom文件添加的依赖如下,仅供参考. ...

  4. CF1190C Tokitsukaze and Duel

    搬运一下本喵的 lg 博客 qwq 详细讲一下如何判定后手能否获胜,对其他题解做个补充.(蒟蒻的我想了好久来着 此题的关键点在于可以重复上一个人的操作使局面保持不变. 考虑先手的获胜条件,由上一段可知 ...

  5. CF1610B [Kalindrome Array]

    Problem 题目简述 给你一个数列 \(a\),有这两种情况,这个数列是「可爱的」. 它本身就是回文的. 定义变量 \(x\),满足:序列 \(a\) 中所有值等于 \(x\) 的元素删除之后,它 ...

  6. 神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)

    一个神经网络的输出 首先,回顾下只有一个隐藏层的简单两层神经网络结构: 图1.3.1 其中,\(x\)表示输入特征,\(a\)表示每个神经元的输出,\(W\)表示特征的权重,上标表示神经网络的层数(隐 ...

  7. Vue源码学习(十六):diff算法(三)暴力比对

    好家伙,这是diff的最后一节了   0.暴力比对的使用场景 没有可复用的节点:当新旧虚拟 DOM 的结构完全不同,或者某个节点不能被复用时,需要通过暴力比对来创建新的节点,并在真实 DOM 上进行相 ...

  8. 公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用

    当企业需要进行大数据可视化看板的设计和开发时,除了Excel,还有许多其他强大且适合大数据可视化的软件工具.以下是几种常用的好用软件,以及它们的特点和优势,供您参考. 一.Datainside 特点和 ...

  9. 数据结构(C语言版 第2版)课后习题答案全集 严蔚敏

    有的小伙伴在网上奋力的找 严蔚敏版 第2版 数据结构 的始终无果,那么我这里就整理好,放在同名公众号中了,也可扫文章末尾的二维码直达公众号,回复数据结构的关键词即可拿到.

  10. SQL Server 自动增长清零的方法

    方法一: truncate table TableName 删除表中的所有的数据的同时,将自动增长清零.如果有外键参考这个表,这个方法会报错(即便主键表和外键表都已经没有数据),请参考方法2. 方法二 ...