写点什么

从 IaaS 到 FaaS—— Serverless 架构的前世今生

  • 2019-11-15
  • 本文字数:3295 字

    阅读完需:约 11 分钟

从IaaS到FaaS—— Serverless架构的前世今生

今天大多数公司在开发应用程序并将其部署在服务器上的时候,无论是选择公有云还是私有的数据中心,都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等。并需要部署运行应用程序和依赖的软件到基础设施之上。假设我们不想在这些细节上花费精力,是否有一种简单的架构模型能够满足我们这种想法?这个答案已经存在,这就是今天软件架构世界中新鲜但是很热门的一个话题——Serverless(无服务器)架构。

什么是 Serverless

如同许多新的概念一样,Serverless 目前还没有一个普遍公认的权威的定义。最新的一个定义是这样描述的:“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如 AWS Lambda 服务),客户端逻辑和服务托管远程过程调用的组合。”


最开始,“无服务器”架构试图帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。这项技术的目标并不是为了实现真正意义上的“无服务器”,而是指由第三方云计算供应商负责后端基础结构的维护,以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。简单地说,这个架构的就是要让开发人员关注代码的运行而不需要管理任何的基础设施。程序代码被部署在诸如 AWS Lambda 这样的平台之上,通过事件驱动的方法去触发对函数的调用。很明显,这是一种完全针对程序员的架构技术。其技术特点包括了事件驱动的调用方式,以及有一定限制的程序运行方式,例如 AWS Lambda 的函数的运行时间默认为 3 秒到 5 分钟。从这种架构技术出现的两年多时间来看,这个技术已经有了非常广泛的应用,例如移动应用的后端和物联网应用等。简而言之,无服务器架构的出现不是为了取代传统的应用。然而,从具有高度灵活性的使用模式及事件驱动的特点出发,开发人员/架构师应该重视这个新的计算范例,它可以帮助我们达到减少部署、提高扩展性并减少代码后面的基础设施的维护负担。


Serverless 的历史

Serverless 这个概念并不容易理解。乍见之下,很容易让人混淆硬件服务器及软件上的服务与其所谓的“服务器”差别。在这里强调的所谓“无服务器”指的是我们的代码不会明确地部署在某些特定的软件或者硬件的服务器上。运行代码托管的环境是由例如 AWS 这样的云计算厂商所提供的。


Serverless 这个词第一次被使用大约是 2012 年由 Ken Form 所写的一篇名为《Why The Future of Software and Apps is Serverless》的文章。这篇文章谈到的内容是关于持续集成及源代码控制等内容,并不是我们今天所特指的这一种架构模式。但 Amazon 在 2014 年发布的 AWS Lambda 让“Serverless”这一范式提高到一个全新的层面,为云中运行的应用程序提供了一种全新的系统体系结构。至此再也不需要在服务器上持续运行进程以等待 HTTP 请求或 API 调用,而是可以通过某种事件机制触发代码的执行,通常这只需要在 AWS 的某台服务器上配置一个简单的功能。此后 Ant Stanley 在 2015 年 7 月的名为《Server are Dead…》的文章中更是围绕着 AWS Lambda 及刚刚发布的 AWS API Gateway 这两个服务解释了他心目中的 Serverless,“Server are dead…they just don’t know it yet”。到了 2015 年 10 月份,在那一年的 AWS re:Invent 大会上,Serverless 的这个概念更是反复出现在了很多场合。印象中就包括了“(ARC308)The Serverless Company Using AWS Lambda”及“(DVO209)JAWS: The Monstrously Scalable Serverless Framework”这些演讲当中。随着这个概念的进一步发酵,2016 年 10 月在伦敦举办了第一届的 Serverlessvconf。在两天时间里面,来自全世界 40 多位演讲嘉宾为开发者分享了关于这个领域进展。


在 Serverless 的世界里面,AWS 扮演了一个非常重要的角色。但是 AWS 并不是唯一的 Serverless 架构服务的供应商。其他厂商,例如 Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk、Iron.io 和 Webtask 等各种开源平台都提供了类似的服务。

Serverless 与 FaaS

微服务(MicroService)是软件架构领域业另一个热门的话题。如果说微服务是以专注于单一责任与功能的小型功能块为基础,利用模组化的方式组合出复杂的大型应用程序,那么我们还可以进一步认为 Serverless 架构可以提供一种更加“代码碎片化”的软件架构范式,我们称之为 Function as a Services(FaaS)。而所谓的“函数”(Function)提供的是相比微服务更加细小的程序单元。例如,可以通过微服务代表为某个客户执行所有 CRUD 操作所需的代码,而 FaaS 中的“函数”可以代表客户所要执行的每个操作:创建、读取、更新,以及删除。当触发“创建账户”事件后,将通过 AWS Lambda 函数的方式执行相应的“函数”。从这一层意思来说,我们可以简单地将 Serverless 架构与 FaaS 概念等同起来。

FaaS 与 PaaS 的比较

乍看起来,FaaS 与 PaaS 的概念在某些方面有许多相似的地方。人们甚至认为 FaaS 就是另一种形式的 PaaS。但是 Intent Media 的工程副总裁 Mike Roberts 有自己的不同看法:“大部分 PaaS 应用无法针对每个请求启动和停止整个应用程序,而 FaaS 平台生来就是为了实现这样的目的。”


FaaS 和 PaaS 在运维方面最大的差异在于缩放能力。对于大部分 PaaS 平台,用户依然需要考虑缩放。但是对于 FaaS 应用,这种问题完全是透明的。就算将 PaaS 应用设置为自动缩放,依然无法在具体请求的层面上进行缩放,而 FaaS 应用在成本方面效益就高多了。AWS 云架构战略副总裁 Adrian Cockcroft 曾经针对两者的界定给出了一个简单的方法:“如果你的 PaaS 能够有效地在 20 毫秒内启动实例并运行半秒,那么就可以称之为 Serverless”。

Serverless 架构的优点

  • 降低运营成本:


Serverless 是非常简单的外包解决方案。它可以让您委托服务提供商管理服务器、数据库和应用程序甚至逻辑,否则您就不得不自己来维护。由于这个服务使用者的数量会非常庞大,于是就会产生规模经济效应。在降低成本上包含了两个方面,即基础设施的成本和人员(运营/开发)的成本。


  • 降低开发成本:


IaaS 和 PaaS 存在的前提是,服务器和操作系统管理可以商品化。Serverless 作为另一种服务的结果是整个应用程序组件被商品化。


  • 扩展能力:


Serverless 架构一个显而易见的优点即“横向扩展是完全自动的、有弹性的、且由服务提供者所管理”。从基本的基础设施方面受益最大的好处是,您只需支付您所需要的计算能力。


  • 更简单的管理:


Serverless 架构明显比其他架构更简单。更少的组件,就意味着您的管理开销会更少。


  • “绿色”的计算:


按照《福布斯》杂志的统计,在商业和企业数据中心的典型服务器仅提供 5%~15%的平均最大处理能力的输出。这无疑是一种资源的巨大浪费。随着 Serverless 架构的出现,让服务提供商提供我们的计算能力最大限度满足实时需求。这将使我们更有效地利用计算资源。

Serverless 的架构范式

移动应用后台 Serverless 参考架构



实时文件处理 Serverless 参考架构



Web 应用 Serverless 参考架构



物联网应用后台参考架构



实时流处理 Serverless 参考架构


美丽新世界

技术上不可能有应用程序可以不依赖于服务器,必须要有某种硬件来支持应用程序。但是以 AWS Lambda 为代表的 Serverless 架构可以使得开发人员专注于程序功能本身,而让 AWS 处理与服务器部署、存储和数据库相关的所有复杂性工作。这听起来很简单,但是实现起来却并不简单。这种新的架构打破了人们的习惯思维,它让服务器不可见,并提供了一个极具成本效益的服务。Serverless 架构仅有两年的历史,仍处于起步阶段。未来,这个领域还会有更大的进步,这将是非常有趣的。它给所有开发人员带来的是软件架构和应用程序部署的美丽新世界。


作者介绍:



费良宏


费良宏,AWS 首席云计算技术顾问,拥有超过 20 年在 IT 行业以及软件开发领域的工作经验。在此之前他曾经任职于 Microsoft、Apple 等知名企业,任职架构师、技术顾问等职务,参与过多个大型软件项目的设计、开发与项目管理。目前专注于云计算以及互联网等技术领域,致力于帮助中国的开发者构建基于云计算的新一代的互联网应用。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/iaas-faas-serverless/


2019-11-15 08:001299

评论

发布
暂无评论
发现更多内容

10 个解放双手的 IDEA插件,少些冤枉代码(第三弹)

程序员小富

IDEA 插件

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

龙智—DevSecOps解决方案

汽车 汽车软件

pandas plot函数:数据可视化的快捷通道

快乐非自愿限量之名

pandas 数据可视化

如何避免MYSQL主从延迟带来的读写问题?

不在线第一只蜗牛

MySQL

客户说|从4小时到15分钟,一次分布式数据库的丝滑体验

阿里云瑶池数据库

数据库 云计算 阿里云 云原生 polarDB

Pandora飙升背后的ERC404 目前适合布局吗

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

人工智能测试开发训练营 带你快速掌握AI测试开发技能,获得更好的职业机会和晋升空间

测吧(北京)科技有限公司

测试

软件测试学习笔记丨接口测试面试题

测试人

软件测试 面试题 测试开发

IT外包的三大优势对企业的发展有何影响?

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT外包企业

Touch bar pet for Mac(在macbook上养一只宠物)

Rose

Mac软件 电子宠物 touchbar 宠物桌面

深耕版本控制、代码质量与安全等领域,龙智荣获“Perforce 2023年度合作伙伴”奖项

龙智—DevSecOps解决方案

版本控制

macos big sur 软件icons图标大全(新增至2719枚大苏尔风格图标)

Rose

macOS Big Sur icons图标

AutoCAD 2019(cad2019)汉化激活版下载附cad产品密钥

Rose

cad2019 AutoCAD 2019

Digital Realty 在日本 NRT 园区设立第二座数据中心

财见

2 月 Web3 游戏行业动态

Footprint Analytics

blockchain

AI+办公!5款超实用AI软件,一键生成PPT、视频、思维导图等!

彭宏豪95

人工智能 在线白板 AIGC 效率软件 AI生成PPT

『Java 语法基础』面向对象有哪些特性

EquatorCoco

Java JVM 语法 开发语言

云游戏平台塑造游戏发行商商业新格局

Ogcloud

游戏 云游戏 游戏发行 云游戏发行 云游戏平台

pd18虚拟机如何安装?哪里有Parallels 工具箱?

Rose

PD18虚拟机破解 Parallels 工具箱 Mac虚拟机安装 Parallels Desktop破解

大咖公开课 | 探索AI的边界:如何精准地测试人工智能

测吧(北京)科技有限公司

测试

Maple 2024 mac下载(含maple注册文件及破解工具)兼容m芯片

Rose

软件下载 Maple 2024 Maple数学软件 Maple 2024 mac破解

毫末贺翔:DriveGPT让通用感知实现“万物识别”、通用认知具备“世界知识”

Geek_2d6073

IBM 宣布在 watsonx 上提供开源的 Mistral AI 模型

财见

龙智携全方位芯片解决方案亮相IIC Shanghai 2024,助力客户解决复杂的芯片研发挑战

龙智—DevSecOps解决方案

芯片开发 芯片研发

企业云服务器免费使用后会存在哪些隐患?

一只扑棱蛾子

云服务器 企业云服务器

鸿蒙的跨端技术实践方案

Geek_2305a8

面试官:说说线程池的工作原理?

王磊

Java 面试

云游戏发行是什么?云游戏发行的演进历程

Ogcloud

游戏 云游戏 游戏发行 游戏云化 游戏发行公司

客户说|从4小时到15分钟,一次分布式数据库的丝滑体验

阿里云数据库开源

阿里云 运维 polarDB PolarDB-X 识货

软件测试学习笔记丨Allure2测试用例描述相关用法(测试报告类别划分、名字展示等)

测试人

软件测试

从IaaS到FaaS—— Serverless架构的前世今生_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章