写点什么

为“无服务器”正名

  • 2020-02-17
  • 本文字数:2250 字

    阅读完需:约 7 分钟

为“无服务器”正名

无服务器(Severless)不是一个好的术语,但它却被用来描述一个强大且经常被误解的概念。



本文将讨论“无服务器”的缺点和优点,并为其改变构建应用程序的方式带来的好处辩护——进一步向无服务器架构发展。

现有的一些定义:

AWS——无服务器允许你构建和运行应用程序和服务,而无需考虑服务器。


Paul Johnston——无服务器的解决方案是,如果没有人使用它,就没有任何运行成本。


Mike Roberts——无服务器架构是在应用程序设计中包含第三方“后端即服务”(BaaS)服务和/或包含在“函数即服务”(FaaS)平台上托管的临时容器中运行的自定义代码。


这些定义都非常简洁和巧妙,但它们缺乏实用性细节,而这些细节是理解无服务器方法能力的关键。


作为一个补充说明,在早些时候,我在一条推特主题中给出一个简单定义。



上面使用的符号“⊂”是指左边东西是右边东西的子集,也就是说,FaaS 是无服务器的子集。

更深入的讨论

自 2014 年 AWS Lambda 发布以来,人们经常将 FaaS(函数即服务)和无服务器作为同义词使用。


FaaS 是一个计算服务术语,它允许代码的功能以一种隔离方式运行。这些函数在响应事件(如 HTTP 调用)时运行,一个系统抽象了服务器的底层复杂性,包括操作系统和所有的细节或配置和扩展。


FaaS 是许多无服务器架构的关键组成部分,但你可以实现一个不使用 FaaS 的无服务器架构,也能实现一个使用 FaaS 的非无服务器架构。在很大程度上,FaaS 是一种无服务器的计算方法,但是,对于许多应用程序架构来说,计算(即运行代码)并不是其唯一的一个方面。


应用程序架构可能需要很多东西,例如:计算、存储、监控……



AWS 提供的几个无服务器架构组件示例


如前所述,FaaS 函数是由事件(events)触发的,例如 HTTP 调用。上图中的其他无服务器服务都可以由事件触发,甚至能自己生成事件,从而触发更多的服务。迁移到能高效利用这些服务的架构,通常就是迁移到事件驱动的架构。


最近,事件驱动架构的概念开始与无服务器架构这个术语一起出现。


随着 AWS 等云提供商针对无服务器架构发布越来越多的服务,这种术语链接正在进一步扩展。这并不是什么新鲜事,无服务器从早期阶段就经常被描述为“scale to zero”——这种扩展和计费的方法显然与基于事件的服务紧密结合在一起。


事件驱动架构的一个例子是 AWS 发布的一个新的重要的无服务器服务——可以说是 Lambda 以来最大的服务之一。


EventBridge 是 AWS 针对无服务器全托管事件总线给出的答案。它使得事件可以通过更少的代码、更好的可观测性和一些非常超前的附加功能(如新推出的EventBrige模式注册表)在不同服务间流动。


模式注册表(The Schema Registry)可自动检测并将大型分布式架构的所有事件聚合到一个集中式注册表中——甚至为开发人员提供自动生成代码绑定的 SDK 来从 IDE 访问事件。

潜在解决方案空间在扩大

潜在解决方案空间包括上图所示的所有服务。


以及 AWS 和其他云提供商的许多其他服务。


以及未来十年将会发布的服务。


以及由富有创造力的工程师自行构建的无服务器系统,他们将这些组件块以连云提供商都没预料到的方式组合在一起,构建出新的、令人兴奋的东西。


毕竟,EventBridge 源于 AWS 发现了 Cloudwatch 事件被用来触发 Lambdas 的奇妙方式。


这种现象的另一个例子可能是简单的无服务器事件调度系统,我们搭配使用 Step Functions 和 Lambda 构建该系统,我们的另一篇文章对此进行了详细介绍。

那么,为何我们没全都采用无服务器呢?

首先,很难从一个经常被误用的术语“无服务器” 中看到这个潜在解决方案空间。


特别是当某个框架选择使用它作为自己的名称时——这是一个令人惊叹的工具,但无助于保留术语背后的复杂语义。


现在,显然不仅仅是因为一个词汇的问题减缓了无服务器架构的普及。这是一个范式转变,可能比之前的“云”更有影响力。


构建由服务器、自管理系统和永久状态组成系统的过程中成长起来的工程师,不得不转向事件驱动的思考方式,这种方式似乎具有无限的计算规模和存储空间——同时还面临着新的挑战、约束,而且缺少工具和最佳实践。


例如,迁移到更偏向无服务器的架构,通常涉及到采用 DynamoDB(或类似的东西)来代替过去的关系型数据库。NoSQL 现在已经不是什么新东西了,但是将它用于所有核心业务需求的想法是——这是因为整个系统现在的规模更大,而且具备之前人们并不了解的事件驱动的特性。


这并不容易——DynamoDB 很复杂,要做好就更复杂了。抛弃过去熟悉的 Web 应用程序框架——不是通过低成本的修改来保持函数的轻量化,而是将典型的框架责任转移给云提供商——这些都不是小事!


当你能清楚地看到“潜在空间”时,才能让收益大于成本


人们不会为了迁移系统和转变观念而经历这种痛苦。正如在许多其他文章中讨论的那样,无服务器架构允许开发人员专注于编写最能体现业务价值的代码,同时降低 TCO(总拥有成本)、增加可伸缩性并同时减少碳足迹(carbon footprint)。


无以言表

有时候,无法用言语来表达。有时候,要用一个词来描述潜在解决方案所涉及的范围之广、形式之多,实在是太过复杂。


但是,作为一个在许多新的无服务器服务出现前就存在的词,它做得还不错。事实上,这证明了这个我们正努力把它从这个空间中分离出来的词的力量。


如果这个词是 FunctionFull ,那么随着这个 space 的扩大,我们就不可能一直使用它,如果没有无服务器这颗北斗星引导我们走向一个无形的特性,也许我们不会以这种方式扩展这个空间。


目前,至少对我来说,无服务器设法完成了一项艰巨工作,定义了一个非常灵活且复杂空间的边界。


英文原文:


In Defence of “Serverless” —the term


2020-02-17 14:282174
用户头像

发布了 810 篇内容, 共 555.7 次阅读, 收获喜欢 1588 次。

关注

评论

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

哪些js手写题是需要掌握的

helloworld1024fd

JavaScript

仅靠七个步骤,4面通过拿offer,终“跳进”字节跳动

小二,上酒上酒

面试 面试题

NFT铸造摸了个鱼链游系统开发源码(原生开发)

开发微hkkf5566

详解ROMA Connect API 流控实现技术

华为云开发者联盟

云计算 后端 开发 华为云 企业号十月 PK 榜

学习型索引在数据库中的应用实践

KaiwuDB

使用 SAP BTP 创建一个 Spring Boot Java 应用

汪子熙

云原生 SAP Netweaver 10月月更 btp

LinkedList源码分析(三)

知识浅谈

linkedlist 10月月更

632页!我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

小二,上酒上酒

Java 面试

加油,也可以更智慧

华为云开发者联盟

云计算 开发 物联网 智慧加油站 企业号十月 PK 榜

Linux策略路由详解

京东科技开发者

数据库 Linux 公有云 云主机 策略路由

搞AI开发,你不得不会的PyCharm技术

华为云开发者联盟

人工智能 代码 华为云 企业号十月 PK 榜

疫情闭关期间,读完这些“Java技术栈”,拿下阿里Offer没问题

小二,上酒上酒

Java 面试 技术栈 面试大厂

啃完这些Spring知识点,我竟吊打了阿里面试官(附面经+笔记)

小二,上酒上酒

spring Spring全家桶 阿里面试

一文步入python大门,基础教程大全(25分钟)

贤鱼很忙

Python 网络安全 10月月更

前端开发培训机构学习方法

小谷哥

WorkPlus移动门户,助力企业信息系统移动智慧互联

BeeWorks

疫情之后,幸获内推,4面京东拿下offer(Java后台研发岗)

小二,上酒上酒

Java 面试

美团前端二面必会手写面试题汇总

helloworld1024fd

JavaScript

对在前端培训初学者的几点建议

小谷哥

闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer

小二,上酒上酒

Java 字节跳动 面试 大厂面试

19道高频vue面试题解答(上)

bb_xiaxia1998

Vue

Wallys//IPQ8072/IPQ8074/IPQ8072A/IPQ8074A/High-capacity 802.11ax SoC for Routers, Gateways and Access Points

wallys-wifi6

IPQ8072 IPQ8074A

十大 CI/CD 安全风险(一)

SEAL安全

权限管理 流程控制 身份验证 CI/CD管道 软件供应链安全

安全专属的IM即时通讯平台,WorkPlus信创国产化解决方案

BeeWorks

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

小二,上酒上酒

MySQL 面试

凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer

小二,上酒上酒

Java 面试 字节 宝典

读完这份JVM高级笔记,彻底玩转Java虚拟机,面试再也不用“虚”

小二,上酒上酒

Java 面试 阿里 虚拟机 大厂面试

STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

矜辰所致

stm32 STM32CubeMX STM32L051 10月月更

19道高频vue面试题解答(下)

bb_xiaxia1998

Vue

渣本全力以赴33天,四面阿里妈妈(淘宝联盟),拿下实习岗offer

小二,上酒上酒

学习 面试 阿里 编程开发

Hackathon 实用指南丨快速给 TiDB 新增一个功能

PingCAP

TiDB

为“无服务器”正名_架构_Ben Ellerby_InfoQ精选文章