开发者学堂课程【初识 Serverless:初识 Serverless (上)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/840/detail/14006
初识 Serverless (上)
云计算的发展史
l HDFS
l MapReduce
l Hbase
从ENIAC 诞生到谷歌的三篇经典论文,云计算正式拉开帷幕。
(一)云计算是什么?
1.云与 Serverless
l 1961年,麻省理工学院百周年纪念典礼上,约翰麦卡锡(1971年图灵奖获得者)第一次提出了 "Utility Computing" 的概念,这个概念可以认为是云计算的一个“最初的",超前的"遐想模型,它翻译成现今的大意就是:计算机在未来,将变成一种公共资源,会像生活中的水、电、煤气一样,被每一个人使用。
l 1996年,康柏 (Compaq) 公司的一群技术主管在讨论计算业务的发展时,首次使用 了 Cloud Computing 这个词,并认为商业计算会向Cloud Computing的方向转移。这也是"云计算”从雏形到正式被提出的基本过程。
l 2009年,UC Berkeley 发表了: Above the Clouds: A Berkeley View of Cloud Computing。 在该文章中,明确指出:云计算是一个即将实现的古老梦想,是计算作为基础设施这一长久以来梦想的新称谓,它在最近正快速变为商业现实。在该文章中,明确的为云计算做了定义:云计算包含互联网上的应用服务及在数据中心提供这些服务的软硬件设施。
l 2012年由 lron.io 的副总裁 Ken Form 所写的一篇名为 Why The Future of Software and Apps is Serveress 的文章中,提出了一个新的观点:即使云计算的已经逐渐的兴起,但是大家仍然在围绕着服务器转。不过,这不会持续太久,云应用正在朝着 无服务器方向发展,这将对应用程序的创建和分发产生重大影响。
l 2014年 Amazon 发布了 AWS Lambda让"Serverless"这一范式提高到-个全新的层面,为云中运行的应用程序提供了-种全新的系统体系结构,至此再也不需要在服务器上持续运行进程以等待 HTTP 请求或API调用,而是可以通过某种事件机制触发代码执行,通常这只需要 在 AWS 的某台服务器上配置一个简单的功能。
l 2016年10 月在伦敦举办了第一届的 S erverlessConf, 在两天时间里面,来自全世界40多位演讲嘉宾为开发者分享了关于这个领域进展,并且对未来进行了展望,提出来了 Serverless 的发展机会以及所面临的挑战,这场大会是针对Serverless领域的第一场具 有较大规模的会议,在 Serverless 的发展史 上具有里程碑的意义。Serverless 从提出到落地,再到大规模布局。
(二)Serverless 是什么?
1.基础介绍
Martin Fowler 在 Serverless Architectures——文中认为 Serverless 实际上是 BaaS 与 FaaS的组合。
l Serverless 最早用于描述那些大部分或者完全依赖于第三方(云端)应用或服务来管理服务器端逻辑和状态的应用,这些应用通常是富客户端应用(单页应用或者移动端App),建立在云服务生态之上,包括数据库(Parse、 Firebase) 、账号系统(AuthO、 AWS Cognito)等。这些服务最早被称为"(Mobile) Backend as a Service",下文将对此简称为" BaaS" 。
l Serverless 还可以指这种情况:应用的一部分服务端逻辑依然由开发者完成,但是和传统架构不同,它运行在一一个无状态的计算容器中,由事件驱动、生命周期很短(甚至只有一次调用) 、完全由第三方管理。这种情况称为 Functions as a service / FaaS. AWS Lambda 是目前的热门 FaaS。
l 2019年 UC Berkeley 的文章 Cloud Programming Simplified: A Berkeley View on Serverless Computing 中也肯定了这一描述:简单地说,Serverless = FaaS + BaaS. 在对于被认为是 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 bebilled based on usage. )
2.观念转变
One Step Forward :
通过提供自动缩放功能,今天的 FaaS 产品在云编程方面迈出了一大步,它提供了一种实际上可管理的,看似无限的计算平台。
Two Steps Back :
首先,他们忽略了高效数据处理的重要性;其次,它们阻碍了分布式系统的开发。
l 新的 BaaS 存储服务会被发明,以扩展在 Serverless 计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久可供选择。比现有的 x86 微处理器更多的异构计算机。
l 更加安全、易用的编程,不仅具有高级语言的抽象能力,还有很好的细粒度的隔离性。基于 Serverless 计算的价格将低于 Serverful 计算,至少不会高于 Serverful 计算。
l Serverless 将会接入更多的后台支撑服务,如 OLTP 数据库、消息队列服务等。
l Serverless 计算一旦取得技术 上的突破,将会导致 Serverful 服务的下滑
l Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,因此也意味着服务器——客户端模式的终结。
3. 架构对比
通常情况下一些Web应用都是传统的三层 CIS 架构,但是在 Serverless 架构下
4.工作流程
当开发者想要开发一个项目的时候,通常只需要根据 FaaS 提供商所提供的Runtime, 选择一个所熟悉的编程语言,然后进行项目开发、测试(图中步骤1) ;完成之后将代码上传到 FaaS 平台(图中步骤2) ;上传完成之后,只需要通过 API/SDK (图中步骤3)或者一些云端的事件源(图中步骤3)触发上传到 FaaS 平台的函数,FaaS 平 台就会根据触发的并发度等弹性执行对应的函数(图中步骤4),最后用户可以根据实际资源使用量进行按量付费
5.核心价值
l 降本提效:云厂商为使用者提供服务器的管理和运维工作,为使用者提供数据库、对象存储等 BaaS 服务,让用户将更多的注意力放在自身的业务逻辑上,提升研发效率,缩小项目的创新周期,同时Serverless的使用者不用更多的担心自己的服务器运维,基础设施的运维等工作,更不用为这部分有额外的费用支出,无需承担更多的运维工作成本等; Serverless 架构提供了较为完善、全面的按量付费模型,使用者只需按照自己实际使用的资源量付费即可; Serverless 架构在这一层面有较为明确的优势:
l 降低运维成本
l 降低人力成本
l 提高研发效率
l 降低创新周期
l 按量付费,降低支出成本
l 安全、方便、可靠:把更专业的事情交给更专业的人去做,Serverless 架 构将更多服务器运维、安全相关的事情交给云厂商来做,大规模提升项目的整体的安全性:同时,Serverless 架构明显比其他架构更简单,因为更多的 BaaS 服务都是云厂商提供的,使用者将会管理更少的组件,这意味着 Serverless 的使用者可以更简单更方便的管理项目;同时 Serverless 架构拥有着弹性能力,即自动伸缩的能力,该能力可以让项目在流量增加的时候,自动进行扩容,在流量降低的时候,自动进行缩容,进而保证整个业务的安全、稳定。专业团队为用户保障安全,保障性能,这使得Serverless 架构:
l 安全风险更低
l 资源开销更小
l 符合“绿色”计算思想
l 更加方便管理
l 弹性伸缩,服务更可靠
6.面临挑战
l 本地函数调用
l Faas 平台函数调用
l 由于冷启动,FaaS 平台的函数,首次调用会耗时较长
l 冷启动与热启动的区别