为何 Serverless 革命停滞不前(译)

在这里插入图片描述

原文:Bernard Brode - 2020.10.12

主要观点

  • 近几年来,有人预测 Serverless 计算将带来一种全新的计算时代,这种时代的应用程序无需操作系统即可运行。我们被告知这种框架将解决许多可扩展性问题。然而,现实并非如此。
  • 尽管许多人将 Serverless 技术视为一个新概念,但其根源可以追溯到 2006 年,Zimki PaaS 和 Google App Engine 都探索了 Serverless 框架。
  • 从有限的编程语言支持到性能问题,有四个原因导致 Serverless 革命停滞不前。
  • Serverless 并非毫无用处。恰恰相反,它不应被视为直接替代 servers 的解决方案。在某些应用程序开发环境中,它可以是一个非常方便的工具。

server 已死,server 万岁!

这就是 Serverless 革命的战斗口号。即使是快速浏览一下过去几年的行业新闻,也很容易得出这样的结论:传统服务器模型已经过时,几年内我们都将运行 Serverless 架构。

然而,任何在该行业工作的人都知道,正如我们在关于Serverless 计算现状的文章中所指出的,事实并非如此。尽管许多文章赞扬Serverless 革命的优点,但它尚未实现。事实上,最近的研究显示这场革命可能已经陷入了停滞。

毫无疑问,Serverless 模型的一些承诺已经实现,但并非全部,远没有达到预期。

在本文中,我想探讨为什么,尽管 Serverless 模型在特定的、明确定义的情况下发挥了很大的作用,但这些系统敏捷性和灵活性的缺乏,仍然是阻碍其更广泛采用的障碍。

Serverless 计算的承诺

在讨论 Serverless 计算的问题之前,让我们先看看它应该提供什么。Serverless 革命的承诺多种多样,有时甚至非常雄心勃勃。

对于初次接触这个术语的人来说,这里有一个简单的定义:Serverless 计算指的是一种架构,其中应用程序(或应用程序的一部分)在通常远程托管的执行环境中按需运行。话虽如此,也可以在内部托管 Serverless 系统。在过去的几年中,构建弹性的 Serverless 系统已经成为系统管理员和 SaaS 公司的主要关注点,因为(据称)这种架构提供了几个关键优势,超越了“传统”的服务器和客户端模型:

  1. Serverless 模型不需要用户维护自己的操作系统,甚至不需要构建与特定操作系统兼容的应用程序。相反,开发人员可以生成通用代码,然后将其上传到 Serverless 框架,并观察其运行。
  2. 在 Serverless 框架上使用的资源通常按分钟(甚至按秒)付费,意味着客户只为实际运行代码的时间付费。这与传统的基于云的虚拟机形成鲜明对比,通常你最终会为大部分时间空闲的机器付费。
  3. 可扩展性也是一个主要的吸引点。Serverless 框架中的资源可以动态分配,这意味着它们能够应对突增的需求。

简而言之,这意味着 Serverless 模型应该提供灵活、便宜、可扩展的解决方案。这么说来,令人惊讶的是我们没有更早地提出这个想法。

这是一个新的想法吗?

事实上,我们确实做到了。让用户只为代码实际运行时间付费的概念自 2006 年作为 Zimki PaaS 的一部分引入,Google App Engine 大约在同一时间提供了非常相似的解决方案。

实际上,现在称之为 “Serverless” 的模型比许多现在被称为 “云原生” 的技术更老,这些技术实现了大致相同的目标。正如一些人注意到的,Serverless 模型本质上只是一个已经存在了数十年的 SaaS 业务模型的延伸。

值得认识到的是,Serverless 模型也并非等同于 FaaS(函数即服务)架构,尽管它们之间存在联系。本质上,FaaS 是 Serverless 架构中以计算为中心的部分,因此可以作为 Serverless 的一部分,但并不能代表整个系统。

那么为什么现在这么多炒作呢?好吧,随着internet 在发展中世界的渗透率持续快速上升,对计算资源的需求也在同步增长。例如,许多电子商务行业迅速发展的国家,根本没有处理运行这些平台应用程序的计算基础设施。这就是 Serverless 平台的用武之地。

Serverless 的问题

问题在于,Serverless 模型存在一些问题。别误会我的意思:并不是在说 Serverless 模型本身就有问题,或者在某些情况下它们对某些公司没有提供实质性的价值。但是 “革命” 的核心主张 —— Serverless 将迅速取代传统架构 —— 这一点永远不会发生。

原因如下。

编程语言的支持有限

大多数的 Serverless 平台只允许运行用特定语言编写的应用,这严重限制了这些系统的灵活性和适应性。

诚然,一般 Serverless 平台支持大多数主流语言。AWS Lambda 和 Azure Functions 还提供了包装器功能,允许你运行在非支持语言中的应用和函数,尽管这常常伴随着性能代价。所以对于大多数组织来说,大部分时间,这个限制并不会带来太大的影响。但问题在于,Serverless 模型的优点之一应该是可以更便宜地利用那些罕见、不常用的程序,因为你只需为它们执行的时间付费。而这些罕见、不常用的程序往往是用…罕见、不常用的编程语言编写的。

这削弱了 Serverless 模型的一个关键优势。

供应商锁定

Serverless 平台的第二个问题,或者至少是它们目前实现方式的问题,是很少有平台在操作层面上彼此相似。在函数应该如何编写、部署和管理的方式上,各个平台之间几乎没有标准化,这意味着将函数从一个特定供应商的平台迁移到另一个平台非常耗时。

迁移到 Serverless 的最难部分并不是计算函数 —— 它们通常只是代码片段 —— 而是应用程序与对象存储、身份管理和队列等连接系统的交织方式。函数可以移动,但应用程序的其余部分并不那么便携。这与我们被承诺的便宜、灵活的平台恰恰相反。

我猜想,有些人会争辩说,Serverless 模型是新的,还没有时间去标准化它们的工作方式。但正如我上面指出的,它们并不是那么新,而且像容器这样的其他许多云原生技术已经通过开发和广泛采用强大的、基于社区的标准变得更加易用。

性能

Serverless 平台的计算性能可能难以衡量,部分原因是出售这些服务的公司有利益使这些信息保密。大多数公司会声称,在 Serverless 平台上运行的函数将与在内部服务器上运行一样快,除了一些无法避免的延迟问题。

然而,一些实证证据却显示出相反的情况。在特定平台上尚未运行过,或者一段时间内没有运行过的函数,需要一些时间来初始化。这可能是因为它们的代码已经被转移到一些不易访问的存储介质上,但就像他们的性能统计一样,大多数 Serverless 计算供应商不会透露是否是这种情况。

当然,有很多方法可以解决这个问题。一种是优化你的函数,以适应所在 Serverless 平台运行的任何云原生语言,但这在某种程度上削弱了这些平台是"敏捷的"说法。

另一种方法是确保性能关键的程序定期运行,以保持它们的"新鲜度"。当然,第二种方法稍微与 Serverless 平台更具成本效益的说法相矛盾,因为你只需为程序运行的时间付费。云供应商已经引入了新的方法来减少冷启动,但许多方法需要一个"缩放到一"的模型,这削弱了 FaaS 的初始价值。

这个"冷启动"的问题可以通过在内部运行 Serverless 系统来减少,但这会带来一定的成本,并且对于资源充足的团队来说,仍然是一个小众选择。

不能运行整个应用程序

最后,也许是最关键的原因,为什么 Serverless 架构不会在短期内取代传统模型:你(通常)不能在 Serverless 系统上运行整个应用程序。

或者更确切地说,可以这么做,但不具有成本效益。你原有的单体应用程序可能不应该变成连接到八个网关、四十个队列和十二个数据库实例的四十多个函数。因此,Serverless 更适合全新的项目,几乎没有现有的应用程序(架构)可以移植过来。所以你可以迁移,但期望从零开始。

这意味着,在绝大多数情况下,Serverless 平台被用作内部服务器的辅助工具,执行需要大量计算资源的任务。这使得它们与其他两种形式的云原生技术(容器和虚拟机)有很大的不同,它们都提供了执行远程计算的整体方式。这说明了从微服务过渡到 Serverless 的困难之一。

当然,这不一定是个问题。在许多组织中,偶尔能够利用巨大的计算资源,而不用支付在内部实现这一点所需的硬件费用,可能会带来实际和持久的利益。然而,管理应用程序的运行方式,其中一部分在内部服务器上运行,而其他部分在 Serverless 云架构上运行,可能会给这些应用程序的部署带来另一层复杂性。

长久革命?

尽管有所有这些抱怨,我并不反对 Serverless 解决方案本身。只是开发者应该意识到 —— 特别是如果他们是第一次探索 Serverless 模型 —— 这项技术并不是直接替代服务器的解决方案。相反,看看我们的建议和资源,了解如何构建 Serverless 应用程序,并决定最好的部署方式。

关于作者

在这里插入图片描述
Bernard Brode
是 Microscopic Machines 的产品研究员,他对 AI、网络安全和纳米技术的交叉最终如何引领我们的未来充满了深深的好奇心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux系统Grafana关联zabbix显示

Grafana关联zabbix 服务器下载浏览器配置开启zabbix插件配置zabbix数据源可视化Zabbix数据 服务器下载 grafana-cli plugins list-remote grafana-cli plugins list-remote|grep -i zabbix grafana-cli plugins install alexanderzobnin-zabbix-appsystemctl restart grafana-…

Sora爆火,普通人的10个赚钱机会

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

python-产品篇-游戏-成语填填乐

文章目录 准备代码效果 准备 无需其他文件,复制即用 代码 import random list["春暖花开","十字路口","千军万马","白手起家","张灯结彩","风和日丽","万里长城","人来人往",&…

Java集合篇之深入解析LinkedList

写在开头 作为ArrayList的同门师兄弟,LinkedList的师门地位逊色不少,除了在做算法题的时候我们会用到它之外,在实际的开发工作中我们极少使用它,就连它的创造者都说:“I wrote it,and I never use it”&am…

ESP32-Cam学习(1)——拍摄第一张照片

1.开发板介绍 使用的ESP32-Cam实物图为: 在某宝可以轻易买到。它分为主板,和底板。底板的主要功能是供电、程序下载等等。主板才是ESP32芯片的核心。 2.固件烧录 使用摄像头之前,需要给ESP32刷入支持摄像头的固件库,其下载地址为…

【DSP】ti和SYS/BIOS的printf

1. 引入 目的是在CCS中对printf进行重定向。关键是对fputc和fputs的重写。由下图可知,在sys/bios中的printf函数,会调用fputc打印一般的字符,会调用fputs打印转义字符得到的新的字符串。 2. 改写 首先,根据实际情况&#xff0…

一文了解Web3.0真实社交先驱ERA

Web2时代,少数科技巨头垄断了全球近60亿人口的网络社交数据,并用之为自己牟利,用户无法掌控个人数据,打破该局面逐渐成为共识,于是,不少人看到了Web3社交赛道蕴含的巨大机遇,标榜着去中心化和抗…

jmeter-11数据批量生成(向数据库批量插入数据)

文章目录 场景连接数据库添加循环控制器计数器新建JDBC请求运行结果运行前数据库数据为空运行后数据库多了十条数据场景 当你需要造数据的时候,比如注册20个新用户,这个时候可以使用jmeter与数据库连接,向数据库批量插入数据 连接数据库 具体连接方式:详见《jmeter-07jm…

多线程---创建线程

1.概述 多线程是指从软件或者硬件上实现多个线程并发执行的技术。线程是程序中独立运行的程序片段,每个线程都有独立的执行流程,可以在同一时间内执行不同的任务。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提…

SITLE24V2BNQ-3/TR瞬态电压抑制器

SITLE24V2BNQ是一种瞬态电压抑制器,设计用于保护两个汽车控制器区域 网络(CAN)母线不受ESD等瞬变造成的损坏。 SITLE24V2BNQ采用SOT-23封装。标准产品不含铅和卤素。

openGauss学习笔记-222 openGauss性能调优-系统调优-操作系统参数调优

文章目录 openGauss学习笔记-222 openGauss性能调优-系统调优-操作系统参数调优222.1 前提条件222.2 内存相关参数设置222.3 网络相关参数设置222.4 I/O相关参数设置 openGauss学习笔记-222 openGauss性能调优-系统调优-操作系统参数调优 在性能调优过程中,可以根据…

第6个-滚动动画

Day 6 - Scroll Animation 1. 演示效果 2. 分析思路 布局 所有的内容进行水平垂直居中,可以使用**margin:0 auto;,也可以使用flex**布局: body {background-color: #efedd6;display: flex;flex-direction: column;justify-content: center…

计算机服务器中了_locked勒索病毒怎么办?Encrypted勒索病毒解密数据恢复

随着网络技术的不断发展,数字化办公已经成为企业生产运营的根本,对于企业来说,数据至关重要,但网络威胁无处不在,近期,云天数据恢复中心接到很多企业的求助,企业的计算机服务器遭到了_locked勒索…

GPT4微信机器人部署,集成gpt4问答、midjourney以及新闻等联网功能,免费可添加机器人成为自己专属助理

GPT问答和midjourney作为AI届两大亮点,都各自有官方体验方式。 同时,也有很多大神搭建了各类软件、平台供用户体验使用。 但是如果同时将GPT问答和midjourney集合到日常最常使用的微信呢? 打造一个微信机器人,不仅自己可以随时…

Halcon 相机标定

文章目录 算子单相机标定单相机标定畸变的矫正 算子 gen_caltab 生成标定文件 gen_caltab(::XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTabPSFile :) 算子来制作一个标定板XNum 每行黑色标志圆点的数量。YNum 每列黑色标志圆点的数…

自然语言编程系列(二):自然语言处理(NLP)、编程语言处理(PPL)和GitHub Copilot X

编程语言处理的核心是计算机如何理解和执行预定义的人工语言(编程语言),而自然语言处理则是研究如何使计算机理解并生成非正式、多样化的自然语言。GPT-4.0作为自然语言处理技术的最新迭代,其编程语言处理能力相较于前代模型有了显…

Attention Is All Your Need论文翻译

0.摘要 这个统治序列转换模型是基于复杂循环或者卷积神经网络,它包含编码器和解码器。表现最好的模型也通过注意力机制来连接编码器和解码器。我们提出了一个新的简单网络架构——Transformer,它仅仅是是基于注意力机制,完全免去递推和卷积。在两个机器…

Docker基础篇

docker 三个要素 镜像容器仓库 CentOS 6.8 安装 docker centos 7.0 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager -y --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo systemctl start docker

『运维备忘录』之 APT 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)

效果演示 文章目录 效果演示系列目录前言悬停显示物品详情源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快…