无服务器已死?这项技术为什么变得人人嫌弃?

虽然在许多人看来,无服务器技术是一个新的概念,但其根源可以上溯到 2006 年 Zimki PaaS 和 Google App Engine 对无服务器框架的探索。近几年,一些人预测无服务器计算将迎来新计算时代的蓬勃发展,让应用无需操作系统就能执行。虽然有人说这种框架将会解决在可扩展性上存在的许多问题,但事实并非如此。因为无服务器模型仅在特定场景下发挥效用,但在被更广泛采用的道路上依然存在诸多问题。

1服务器已死,服务器永存!

服务器已死,服务器永存!为无服务器革命摇旗呐喊的声音正此起彼伏。如果快速回顾过去几年内的一些行业新闻,很容易得出结论说传统服务器模型已失效,而且在未来几年内无服务器架构将统治一切。

但业内人士都知道,也正如我们在“无服务器计算现状”中所指出的,事实并非如此。尽管有许多文章对无服务器革命的优点侃侃而谈,但这些优点依然尚未落地。事实上,最近有研究表明这一革命可能已经停滞不前,数量惊人的受访者表示对无服务器范例并不感兴趣。

必需承认,无服务器模型的部分承诺已经实现,但也只是一小部分而已。尽管在一些具有明确定义的特定场景中下,无服务器模型的确展现了巨大的实用性,但此类系统看上去缺乏敏捷性和灵活性,阻碍了它们的广泛采用。

2无服务器计算的承诺

对于初次接触无服务器概念的人而言,简单的解释就是:无服务器计算指应用或应用的某一部分在通常是远程托管的执行环境中按需运行的架构。也就是说,无服务器系统也可内部托管。过去几年中,构建有弹性的无服务器系统一直是系统管理员和 SaaS 公司的主要关注点。据称该架构提供了如下关键优势,所以优于“传统”的服务器和客户端模型:

  • 无服务器模型无需用户自身去维护操作系统,甚至无需去构建兼容特定操作系统的应用。相反,开发人员可以生成通用的代码,上传到无服务器框架,看着它运行就好了。

  • 在无服务器框架上使用资源通常是按分钟计费,甚至可按秒计费,意味着客户只需为他们代码的实际运行时间付费。这与传统的基于云的虚拟机形成了鲜明的对比。在传统的基于云的虚拟机上,用户最终会为一台大量时间闲置的计算机付费。

  • 可扩展性也是一大优势。无服务器框架中的资源支持动态分片,这意味着能够应对突发的需求峰值。

简而言之,上述优势表明无服务器模型应该能提供灵活、便宜、可扩展的解决方案。考虑及此,人们难免会对如此好的新理念相见恨晚。

3无服务器是个新理念吗?

事实上它早已存在。用户只需为代码实际运行时间付费的理念,早在 2006 年就作为Zimki PaaS的一部分提供,Google App Engine 大体在同一时间也给出了非常相似的解决方案。

事实上,现在所说的“无服务器”模型要比当前许多称为“云原生”的技术都更历史悠久,并且可以实现相同的目的。正如有人已指出的,无服务器模型本质上只是已存在数十年的 SaaS 业务模型的扩展。

需要注意的是,无服务器模型并非“函数”即服务(FaaS)架构,尽管二者之间存在一定关联。FaaS 本质上是无服务器架构中侧重于计算的部分,因此是无服务器的一个组成部分,代表不了整个系统。

那么为什么无服务器在现在得到了热捧?

主要是因为随着互联网渗透到发展中国家的速度持续提高,对计算资源的需求也随之水涨船高。例如,许多电子商务行业发展迅速的国家,根本不具备处理运行这些平台应用的计算基础架构。这就产生了租用无服务器平台的需求。

4无服务器存在的问题

问题在于,无服务器模型本身就有问题。不要误会,我并不是说无服务器模型本身是不好的,或是在某些情况下无法为某些公司提供可观的价值。

但是,无服务器将迅速取代传统架构这一“革命”的核心主张是永远不会发生的。

编程语言受限

大多数无服务器平台仅支持运行特定语言编写的应用。这严重地限制了系统的敏捷性和适应性。

诚然,大多数的无服务器平台都提供了对大部分主流编程语言的支持。AWS Lambda 和 Azure Functions 还提供包装器功能,能使用未受系统支持的语言运行应用和“函数”,虽然通常会在性能上付出代价。因此对于大多数机构而言,语言上的限制在大多数情况下并没有什么影响。但是这就是问题所在。无服务器模型的一个优势就是支持以更便捷的方式运行那些网站交易非主流、不常使用的程序,只需为程序的执行时间付费。而这些非主流、不常使用的程序,常常使用一些并不常用、晦涩难懂的编程语言编写。

这导致无服务器模型的一个主要优势无法发挥。

供应商锁定

无服务器平台(或至少以目前的实现方式看)的第二个问题是,在运维层面上很少存在彼此相似的平台。在“函数”的编写、部署和管理的方式上,几乎不存在跨平台的标准。这意味着将“函数”从一个特定于供应商的平台迁移到另一个平台是非常耗时的。

迁移到无服务器的最大难处,并非那些通常只是一些代码片段的计算“函数”(译者注:在译文中统一使用“函数”表示”Function“,指相比微服务更加细小的程序单元),而是应用中与关联系统纠缠不清的对象存储、身份管理和队列等方式。应用中的“函数“是可以迁移的,但应用的其余部分却不那么容易移植。这与无服务器所承诺的廉价、敏捷的平台是完全背道而驰的。

难免有些人会争辩说,无服务器模型是新的理念,还没有时间去标准化它们的工作方式。但正如我在上文中指出的,无服务器并非什么新理念。而且容器等其他许多云原生技术已经通过开发和广泛采用基于社区的强大标准变得更具可用性。

性能

无服务器平台的计算性能难以衡量,部分原因在于提供此类服务的公司出于一些既得利益会隐藏该信息。大多数服务提供商宣称,如果无法避免的延迟问题不存在,那么在远程无服务器平台上运行”函数“可达到与内部服务器上相同的运行速度。

但一些事实证据却给出了相反的结论。如果某个”函数“之前未在特定平台上运行过,或是在一段时间内未运行,那么就需要耗费一些时间做初始化。可能是因为这些代码已经被迁移到那些不常访问的存储介质中。和性能统计一样,大多数无服务器计算厂商对此也不会公布具体的情况。

当然,该问题有多种解决方法。一种方法是使用任何一种无服务器平台所运行的云原生语言对”函数“进行优化,但这在一定程度上破坏了平台所宣称的“敏捷性”。

另一种方法是确保调度频繁运行那些对性能要求高的程序,以保持它们的“新鲜度”。当然,考虑到用户会为程序的运行时间付费,这种方法与无服务器平台更具成本效益的说法产生了矛盾。云服务提供商已经引入了一些降低冷启动的新方法,但许多提供商都需要“缩为一体”的模型,这破坏了 FaaS 的初衷。

内部运行的无服务器系统会降低“冷启动”问题,但该做法本身就引入了额外成本,是仅适用于资源丰富团队的一个小众选择。

无法运行整体应用

为何无服务器架构不会很快取代传统模型?最后也可能是最关键的一个原因在于,用户通常无法在无服务器系统上运行整个应用。

或者更确切地说,虽然可以,但是这种做法并不划算。一个良好运行的单体应用或许不应变成一个连接到八个网关、四十个队列和数十个数据库实例的一系列”函数“。因此,无服务器适用于那些尚未开发的领域。几乎没有将现有应用(架构)移植过来的案例。因此虽然可迁移,但最好是从零开始。

这意味着在大多数情况下,无服务器平台将用作内部服务器的一个补充,去执行需大量计算资源的任务。这使得无服务器与容器、虚拟机这两种云原生技术存在很大差异,后两者都支持整体执行远程计算。这是从是从微服务过渡到无服务器的一个难点。

当然,这也不一定是个问题。在许多机构中,偶尔会使用大量计算资源,也无需采购在内部实现功能所需的硬件。无服务器的确能真正和持久地发挥优势。但是,管理部分运行在内部服务器上、部分运行在无服务器云架构上的应用运行,会给应用部署带来另一个层面上的复杂性。

5无服务器的问题引来大量吐槽

原本无服务器是一种大家希望的新技术,但是很少有人去谈它的不利之处。

Bernard Brode 总结了上述无服务器所存在的问题之后,马上在 Hacker News 引来了好几百条互动,其中有很多人表示对当前的无服务技术“爱不起来”.....

有人举例说自己刚接手了一个无服务器项目,但是”我们不能在本地运行它,因为十分之七的代码无法在模拟器中运行。内存限制错误对于我们来说是完全不透明的,我们无法单步执行并观察中断结果。只能通过日志来分析问题。而且费用太高、太疯狂了。所以现实就是:你如果使用了无服务器,就意味着你无法控制代码和所发生的事情。“

另一位程序员也说道自己对无服务技术并不买账:“我曾参加了一个 webdev 大会,这场会议最终成了炒作无服务器技术的现场。无服务器的行业专家出于利益原因上台演讲,但却告诉我们他们无法现场调试或运行代码。他们为我们展示了非常简单的用例,然后花了一个小时来解释如何进行非 ACID 事务处理。而且,你只能使用 3-5 种语言,并且使用的每个 import 语句都有与其对应的金额。”

他强调说,“更重要的是,你开发中所有的这些技能都与亚马逊或其他巨头相关。你编写的所有代码均受其约束。你遇到的任何问题都取决于他们的支持。那么我们应该赌上数百或数千个工时吗? “

还有不少人认为,虽然正如 Bernard Brode 所指出的,在某些情况下,无服务器架构可能是一个好的设计范例,但“这个技术还比较早期,还远不够成熟“,也不能成为服务器的直接替代。

(0)

相关推荐

  • Serverless无服务器架构详解

    本文对serverless架构的基础概念,工作原理,应用场景以及具体产品进行详细解析. 基础概念 serverless:无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生 ...

  • Serverless 架构到底要不要服务器?

    Serverless 是什么? Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什么. Serverless 架构近几年频繁出现在一些技术架构大会 ...

  • 2020年中国容器云市场研究报告

    核心摘要: 容器的发展历史:容器技术在国内发展主要经历了三个阶段,分别是2014-2016年的技术探索期.2017-2018年的行业试水期以及2019年以后的规模应用期,容器与国内欣欣向荣的云计算产业 ...

  • 这是你所了解的FaaS 么?——无服务计算的10个思考

    如今,云计算特别是基础设施即服务(Infrastructure-as-a-Service,IaaS)已经成为广泛采用的系统架构,并且可以根据需要提供虚拟机.企业越来越多地采用云计算的一个主要因素是其现 ...

  • 云原生应用——软件的未来

    图片来源:Mendix " 如今,在构建新的应用时,很多公司都会想到 "云端优先".但随着科技的发展,更好的方法是考虑 "云原生"应用. " ...

  • 这项技术,无地也能当农场主,关键还省钱!

    利用控根容器栽培蔬菜,根系透气性良好,生长速度快,蔓茎粗壮,增产显著,并具有栽培效果美观.观光性强的优点.配合使用微滴灌设施,具有浇水.浇肥方便,管理轻松,适合大面积蔬菜生产. 1 基质配比 选择使用 ...

  • 德媒:中国已向全世界证明,全球都在等待中国这项技术成熟建成

    中国可以说是这个世界上发展科技方面最快的国家,在上个世纪开始中国开始以科技发展为第一目标,科技能够强国,更能够改变中国,使中国走向强盛,中国也有不负众望,在数十年的发展时间里,各种各样的科技产品迸发了 ...

  • 亩节本增收2000元!这项技术已推广超30万亩,茄子大省正在用!

    四川是茄子种植大省,茄子种植面积稳定在100万亩左右,产量200多万吨,位列全国第3位.西部第1位.近年来,随着茄子保护地栽培面积日益扩大,土地轮作困难,导致茄子黄萎病.青枯病等土传病害频发.危害严重 ...

  • “烫死”癌细胞!这项技术创伤小、恢复快、定位准!

    2年前,张大爷被诊断为早期肺腺癌,手术切除之后又做了4次化疗,本以为万事大吉了.可万万没想到,去年复查时,张大爷的左肺再次发现新病灶,经过诊断,是早期原发性肺癌.由于手术和化疗的影响,张大爷身体不适合 ...

  • 泪痕春雨漫评系列 玄武门之变(三十)建成虽已死 东宫势未消

    看到这里,不知道我们注意到一件事没有,那就是太子建成.齐王元吉虽然已盖棺了,但是显然都没有定论. 因为以李建成.齐王元吉在唐初的影响力,以及东宫.齐王府旧部在贞观年间的影响力,就无法盖棺定论. 一切是 ...

  • 《侦探已死》,第一集即巅峰,之后再无亮点的假推理剧

    <侦探已死>和预料的一样,没有了希耶斯塔的故事就变得空荡荡的,不如说作为一个有推理.悬疑要素的故事,设定非常干瘪,信息量也非常匮乏.举个例子,说是要打败某个组织,但这个组织登场的反派10集 ...

  • 她死磕40年的这项技术,如今有望拯救世界

    在新冠疫苗的研发赛道上,mRNA(信使核糖核酸)技术"一战成名". <华尔街日报>援引美国范德堡大学传染病学专家威廉·沙夫纳(William Schaffner)发言称 ...

  • 技术已死?

    昨天,有幸听了李志林大师的讲课,很有感触.李志林大师从基本面入手,客观的分析了市场环境,提出了"市场难以大涨,亦难以大跌"的理论观点,然后从政策角度.市场发展以及选股方法进行了阐述 ...

  • 打破番茄常规种植,这项技术已攻克土壤连作障碍难关!

    番茄是我国设施栽培的主要蔬菜之一,具有品质好.产量高.抗逆性强的特点,在促进劳动力就业和农民增收方面发挥了重要作用.但是近年来在连作栽培条件下,番茄土传病害发生越来越重,严重影响番茄的产量和品质.   ...