从云计算到 Serverless
自世界第一台通用计算机 ENIAC(Electronic Numerical Integrator And Computer)诞生以来,计算机科学与技术的发展就从未停止过前进的脚步,尤其是近些年计算机的发展更是日新月异,有不断突破和进化的人工智能领域,有 5G 带来更多机会的物联网领域,还有“可信”的区块链技术,当然也有不断更新、不断迭代,不断走进“寻常百姓家”的云计算。
说起云计算,不得不说“Utility Computing”,在 1961 年麻省理工学院百周年纪念典礼上,约翰·麦卡锡(1971 年图灵奖获得者)第一次提出了“Utility Computing”的概念,这个概念可以认为是云计算的一个“最初的”,“超前的”遐想模型,它翻译成现今的大意就是:计算机在未来,将变成一种公共资源,会像生活中的水、电、煤气一样,被每一个人使用。1984 年,SUN 公司联合创始人 John Gage(约翰·盖奇)提出了“网络就是计算机(The Network is the Computer)”的重要猜想,用于描述分布式计算技术带来的新世界,而再过 12 年,即 1996 年,康柏(Compaq)公司的一群技术主管在讨论计算业务的发展时,首次使用了 Cloud Computing 这个词,并认为商业计算会向 Cloud Computing 的方向转移。这也是“云计算”从雏形到正式被提出的基本过程。
自“云计算”被提出之后,其可谓是如同雨后春笋般,蓬勃发展: 2003 年到 2006 年间,谷歌发表了 The Google File System、MapReduce: Simplified Data Processing on Large Clusters 、Bigtable: A Distributed Storage System for Structured Data 等文章,这些文章指明了 HDFS(分布式文件系统),MapReduce(并行计算)和 Hbase(分布式数据库)的技术基础以及未来机会,至此奠定了云计算的发展方向;2006 年,Google 首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次公开正式地提出“云计算”(Cloud Computing)的概念,同年亚马逊第一次将其弹性计算能力作为云服务进行售卖,这也标志着云计算这种新的商业模式正式诞生。两年后,即 2008 年,微软发布云计算战略和平台 Windows Azure Platform,尝试将技术和服务托管化、线上化。到了 2009 年,UC Berkeley 发表了:Above the Clouds: A Berkeley View of Cloud Computing,在该文章中,明确指出:云计算是一个即将实现的古老梦想,是计算作为基础设施这一长久以来梦想的新称谓,它在最近正快速变为商业现实。在该文章中,明确的为云计算做了定义:云计算包含互联网上的应用服务及在数据中心提供这些服务的软硬件设施。同时在该文章中,也提出了云计算所面临的挑战和机遇:
在 UC Berkeley 的这篇文章中,作者不仅仅对云计算进行了一个比较明确和细腻的定义,提出了面临的挑战和存在的机遇,更对云计算的未来发展方向等进行大胆预测。同年,阿里软件在江苏南京建立首个“电子商务云计算中心”(即现在的阿里云)。至此,云计算进入到了更加快速的发展阶段。
如上图所示,云计算飞速发展的阶段,云计算的形态也在不断的演进,从 IaaS 到 PaaS,再到 SaaS,云计算逐渐地“找到了正确的发展方向”,2012 年由 Iron.io 的副总裁 Ken Form 所写的一篇名为 Why The Future of Software and Apps is Serverless 的文章中,提出了一个新的观点: 即使云计算的已经逐渐的兴起,但是大家仍然在围绕着服务器转。 不过,这不会持续太久, 云应用正在朝着无服务器方向发展,这将对应用程序的创建和分发产生重大影响。并首次将“Serverless”这个词带进了大众的视野。2014 年 Amazon 发布了 AWS Lambda 让“Serverless”这一范式提高到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系结构,至此再也不需要在服务器上持续运行进程以等待 HTTP 请求或 API 调用,而是可以通过某种事件机制触发代码执行,通常这只需要在 AWS 的某台服务器上配置一个简单的功能。此后 Ant Stanley 在 2015 年 7 月名为 Server are Dead**…的文章中更是围绕着 AWS Lambda 及刚刚发布的 AWS API Gateway 这两个服务解释了他心目中的 Serverless,并说 Servers are dead … they just don't know it yet.
到了 2015 年,在 AWS 的 re:Invent 大会上,Serverless 的这个概念更是反复地出现,其中包括了 The Serverless Company Using AWS Lambda 和 JAWS:The Monstrously Scalable Serverless Framework 的这些演讲。随着 Serverless 这个概念的进一步发酵,2016 年 10 月在伦敦举办了第一届的 ServerlessConf,在两天时间里面,来自全世界 40 多位演讲嘉宾为开发者分享了关于这个领域进展,并且对未来进行了展望,提出来了 Serverless 的发展机会以及所面临的挑战,这场大会是针对 Serverless 领域的第一场具有较大规模的会议,在 Serverless 的发展史上具有里程碑的意义。
如上图所示,而截至 2017 年,各大云厂商基本上都已经在 Serverless 进行了基础的布局,尤其是国内的几大云厂商,也都先后在这一年迈入“Serverless 时代”。从 IaaS 到 PaaS 再到 SaaS 的过程中,如图所示,云计算所表现出的去服务器化越来越明显,那么 Ken Form 所提出来的 Serverless 又是什么,它在云计算发展的过程中,又在扮演什么角色呢,它的去服务器化又到了什么程度呢?
Serverless 翻译成中文是无服务器,所谓的无服务器并非是说不需要依靠服务器等资源,而是说开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,同时计算资源也开始作为服务出现,而不是作为服务器的概念出现,Serverless 是一种构建和管理基于微服务架构的完整流程,允许用户在服务部署级别而不是服务器部署级别来管理用户的应用部署。与传统架构的不同之处在于,它完全由第三方管理,由事件触发,存在于无状态(Stateless),暂存(可能只存在于一次调用的过程中)在计算容器内,Serverless 部署应用无需涉及更多的基础设施建设,就可以基本实现自动构建、部署和启动服务。
近些年来,微服务(Micro Service)是软件架构领域另一个热门的话题,如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,那么可以进一步认为 Serverless 架构可以提供一种更加“代码碎片化”的软件架构范式,而这一部分称之为 Function as a Services(FaaS)。而所谓的“函数”提供的是相比微服务更加细小的程序单元。例如,可以通过微服务代表为某个客户执行所有 CRUD 操作所需的代码,而 FaaS 中的函数可以代表客户所要执行的每个操作:创建、读取、更新以及删除。当触发“创建账户”事件后,将通过函数的方式执行相应的“函数”。单就这一层意思来说,可以简单地将 Serverless 架构与 FaaS 概念等同起来。但是就具体的概念深刻探索的话,Serverless 和 FaaS 还是不同的,Serverless 和 FaaS 被广为接受的关系是:
Serverless = FaaS + BaaS (+ .....)
在这个关系中,可以看到 Serverless 的组成除了 FaaS 和 BaaS 之外,还有一系列的省略号,其实这是 Serverless 给予给大家的遐想空间,给予这个时代的一些期待。
随着各大厂商逐渐布局 Serverless 领域,Serverless 也逐渐地从启蒙阶段,市场教育阶段向更深一步生产应用,最佳实践阶段前进。
同样在 2017 年,CNCF Serverless WG 成立了,并且开始以社区的力量推动 Serverless 快速前行,包括 CNCF Serverless Whitepaper、CloudEvents 等相关的立项研究与探索,2017 年年末,eWEEK 的 Chris J. Preimesberger 发表文章 Predictions 2018: Why Serverless Processing May Be Wave of the Future 来表达在“全新的阶段下”大家对 Serverless 的看法和期盼,在这篇文章中有来自知名团队以及公司的相关负责人对 Serverless 表达了自己的想法:
Sumo Logic 产品营销副总裁 Kalyan Ramanathan:Serverless 可能是继容器之后的未来。
Avere Systems 技术总监 Dan Nydick:我们将看到更多 Serverless 技术和托管服务。
Atlassian 平台负责人 Steve Deasy:2018 年将改变软件的构建方式。
Evident.io 的首席执行官 Tim Prendergast 和客户解决方案副总裁 John Martinez:容器和 Serverless 正在兴起,但它们会带来安全问题。
Contino 美国总裁 Jason McDonald:Serverless 将继续增加其影响力。
美国 OVH 的现场布道者兼原理系统工程师 Paul Stephenson:(2018 年)将会更清楚地认识到 Serverless 可以解决哪些问题。
数据探险首席执行官 Seth Noble:Serverless 将在 2018 年与其他技术进行集成。
Platform9 首席执行官 Sirish Raghuram:Kubernetes 将在 Serverless 产品-AWS Lambda 部署中发挥更大的影响力。
Accelerite 首席执行官 Nara Rajagopalan:Serverless 将改变开发模式。
而到了 2018 年,Serverless 的发展速度要比想象中的更加快速,在这一年,Google 发布了 Knative, 一个基于 Kubernetes 的开源 Serverless 框架,具备构建容器、流量调配、弹性伸缩、零实例、函数事件等能力。AWS 发布了 Firecracker,一个开源的虚拟化技术,面向基于函数的服务,创建和管控安全的、多租户的容器。Firecracker 的目标是把传统虚拟机安全性和隔离性,和容器的诉求,资源效率结合起来。在这一年,CNCF 也正式发布了 Serverless 领域的白皮书:CNCF Serverless Whitepaper V1.0,阐明 Serverless 技术概况、生态系统状态,为 CNCF 的下一步动作做指导,同时 CloudEvnent 规范,进入 CNCF Sandbox;在这一年,UC Berkeley 发文 Serverless Computing: One Step Forward, Two Steps Back,表达了对 Serverless 的担忧和挑战,在这篇文章中,作者认为 Serverless 会对开源服务创新有所阻塞,作者认为 Serverless 是:One Step Forward,Two Steps Back,关于这个部分内容的描述如下:
One Step Forward
通过提供自动缩放功能,今天的 FaaS 产品在云编程方面迈出了一大步,它提供了一种实际上可管理的,看似无限的计算平台。
Two Steps Back
首先,他们忽略了高效数据处理的重要性;其次,它们阻碍了分布式系统的开发。
任何一个新的技术、概念出现都会遇到一定的挑战和担忧,就如同当年云计算出现时,也被一些人(如 Oracle 公司总裁 Larry Ellison、GNU 发起人 Richard Stallman)认为只是又一个商业炒作的概念,毫无新意,甚至蠢不可及。当然,事实也证明,任何一个新的事物,都只有在经历各种挑战和质疑之后,才能更茁壮地成长,Serverless 也不例外,从 2019 年开始,Serverless 进入到了一个真正意义上的生产应用,最佳实践快速发展阶段而 2019 年对 Serverless 而言是非常关键的一年,也是 Serverless 具有里程碑式发展的一年,被很多人定义为“Serverless 正式发展的元年”。在这一年不仅有 KubeCon 在中国上海的 CloudNativeCon 中关于 Serverless 的“海量主题演讲”,这些演讲包括来自 Captial One 银行的 Kevin Hoffman 的《WebAssembly、无服务器和云》,IBM 的 Doug Davis 的《CNCF CloudEvents 项目:迈向无服务器互操作的一步》等;在这一年,更有 UC Berkeley 最新的文章,也被称之为 Serverless 领域的 UC Berkeley 断言:Cloud Programming Simplified: A Berkeley View on Serverless Computing,在这篇文章中,经历了一年的发展,作者也从 UC Berkeley 的学者们也从 1 年前的质疑,悲观转变成了一种自信与期待,这篇文章中,作者犀利断言 Serverless 将会在接下来的十年,地被采用,将会得到飞速的发展,并且说出了一些观点:
新的 BaaS 存储服务会被发明,以扩展在 Serverless 计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择。
比现有的 x86 微处理器更多的异构计算机。
更加安全、易用的编程,不仅具有高级语言的抽象能力,还有很好的细粒度的隔离性。
基于 Serverless 计算的价格将低于 Serverful 计算,至少不会高于 Serverful 计算。
Serverless 将会接入更多的后台支撑服务,如 OLTP 数据库、消息队列服务等。
Serverless 计算一旦取得技术上的突破,将会导致 Serverful 服务的下滑。
Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,因此也意味着服务器 - 客户端模式的终结。
除了这些断言,伯克利也对什么是“Serverless”给出了自己的想法:Put simply, Serverless computing = FaaS + BaaS. In our definition, for a service to be considered serverless, it must scale automatically with no need for explicit provisioning, and be billed based on usage.
在学术界,不仅仅 UC Berkeley 对 Serverless 发表过多篇论文,其实很多国内外高校,都已经在 Serverless 领域,投入足够的精力进行科研探索,就目前来看, Serverless 已经成为学术界的研究热点,从 2017 年开始,每年相关论文数呈 2 倍速增长。
如上图所示,从 2012 年,Serverless 概念被正式提出之后,2014 年 AWS 带领 Lambda 开启了 Serverless 的商业化,再到 2017 年各大厂商纷纷布局 Serverless 领域,再到 2019 年,Serverless 成为热点议题在 KubeCon 中被众多人参与探讨,UC Berkeley 发文断言 Serverless 将引领云计算的下一个十年,Serverless 随着时间的不断推进,各种技术部的不断进步,正在逐渐地朝着更完整,更清晰的方向发展,随着 5G 时代的到来,Serverless 将会在更多领域发挥至关重要的作用。
从 IaaS 到 FaaS 再到 SaaS,再到如今的 Serverless,云计算的发展在近十余年中发生了翻天覆地的变化,从虚拟空间到云主机,从自建数据库等业务,到云数据库等服务,云计算的发展是迅速地,未来的方向和形态却是模糊的,没人知道云计算的终态是什么。诚然,现在有人说 Serverless 实现了当初了云计算目标,Serverless 才是真正的云计算,但是没人可以肯定地说,Serverless 就是云计算的终态表现,或许,Serverless 也仅仅是一个过渡的产物,但是这就要交个时间去验证了,目前就不得而知了。
版权声明: 本文为 InfoQ 作者【刘宇】的原创文章。
原文链接:【http://xie.infoq.cn/article/5a2d21e8e92710c7f62b92fd9】。文章转载请联系作者。
评论