什么是无服务器?


42

所有云提供商都在营销他们的“无服务器”解决方案。承诺无服务器将取代开发人员当前开发其软件并在生产中进行管理的方式。

什么是“无服务器”?在哪里可以了解更多信息,以及如何在今天使用它?


无服务器计算是“少服务器”,因为“鸡汉堡”是纯素食主义者,因为您没有亲自见过鸡
Sai Addanki

Answers:


43

Wikipedia的有关无服务器计算的文章对该主题进行了不错的介绍:

无服务器计算,也称为功能即服务(FaaS),是一种云计算代码执行模型,其中云提供商根据需要来完全管理功能的容器平台即服务(PaaS)的启动和停止,以服务于请求和请求。通过对满足请求所需资源的抽象度量来计费,而不是按每小时每个虚拟机计费。

这个想法是,开发人员根本不需要关心服务器基础架构。云提供商管理物理服务器,使用的操作系统以及运行服务器所涉及的所有传统困难。

无服务器计算可以从考虑什么机器在做什么到什么功能来改变您的体系结构。AWS Lambda是我想到的示例-您需要付费并运行功能,而无需提及下面正在运行的物理基础设施类型。还有一些竞争性的无服务器主机,例如Azure Functions(或者如果您对这两个都不感兴趣,则可以简单地进行搜索)。

无服务器有很多优点(尽管您确实需要以与以往相比稍有不同的方式编写代码,因为它是完全不同的架构):

  • 可伸缩性本质上是免费提供的-因为您只需付费运行一个功能,云提供商就可以根据需要轻松地专用于运行代码的更多硬件。您还可以根据需求的增长进行扩展,而不用为应用程序使用一次或一百万次支付固定的费用。

  • 服务器软件和硬件不再需要由开发人员管理-云提供商可以处理。如果您曾经在服务器上使用过诸如Arch之类的东西,那么您就会知道清除关键包并破坏所有内容是多么容易!

  • 它使开发人员腾出精力专注于自己擅长的代码。大多数开发人员可能都不会擅长服务器基础架构编程-无服务器只是解决了一个问题。


“根本不需要关心服务器基础结构”。这真是一件好事,因为根据我的经验,其中很多已经/不/会造成灾难性的后果!
PhillW。

15

马丁·福勒(Martin Fowler)的概述不错:https
//martinfowler.com/articles/serverless.html

TL; DR
“无服务器”描述了应用程序开发和体系结构,该应用程序和体系结构设计的应用程序中的基础结构是短暂的,这意味着它们倾向于基于容器并且可以基于动态缩放机制“来来去去”。这规定了依赖于分布式技术(例如键/值存储)的无状态体系结构的使用。


2
不仅短暂,而且完全抽象。在许多现代的非无服务器设置(例如AWS EC2 ASG)中,基础架构也是短暂的。ASG中的EC2实例可以随时终止。
阿德里安

14

就像我们这个领域中的许多事物一样,“无服务器”正成为一个超负荷的术语。但是通常,它的意思是“在功能上,我们的体系结构不依赖于服务器的配置或持续维护”

我想到的第一个实例是单页javascript应用程序,它使用本地存储,并存储在Amazon S#或Github Pages(或任何静态站点-只是常见的例子)之类的东西上。想象一下像“待办事项”或“完成任务”式的应用程序,它完全在您的浏览器中运行。您的浏览器点击了S3之类的服务来下载代码,并且您存储的项目都存储在浏览器的本地存储中。您没有为此维护的服务器。

第二个实例使用AWS AWS Lambda之类的服务,并且更加复杂(并且也普及了“无服务器”一词)。让我通过介绍它解决的问题来解释这一点:

在我的职业生涯中,很多时候我已经为客户解决了一个业务问题,只需要一些Ruby代码即可执行定期提取,转换和加载(通常编写为rake任务)。一旦解决,我通常会使用cron使其自动化。然后问题就变成了“我该在哪里托管每小时运行一次的东西?” 对于某些客户,我们将在其现有基础架构中设置服务器。对于其他人,我们将建立一个EC2实例,即使它有99%的时间处于空闲状态。在任何一种情况下,都有一台服务器需要调配,修补,监视,更新等。

使用Amazon Lambda,我可以执行该rake任务,并将其作为纯“功能”在其服务上运行。我什至可以安排它。该客户不再需要一个基础设施来完成如此简单的每小时一小时的工作。

有了“无服务器”,仍然有一个服务器,就像“云”一样,还有一台计算机。在此之上只有一个抽象级别,它对您承担了一些环境责任。


我赞成通常需要EC2的每小时工作一次的实际示例。现在,您只需要一个Lambda函数!
HopeKing

10

所有的好答案已经。我浏览了博客文章《思考无服务器—新型方法如何在HighScalability中解决现代数据处理需求》,在这篇文章中,我对无服务器的含义有一个很好的解释:

“无服务器”一词并不意味着不再涉及服务器。这只是意味着开发人员不再需要为他们考虑太多。计算资源被用作服务,而无需管理物理容量或限制。服务提供商越来越承担管理服务器,数据存储和其他基础架构资源的责任……无服务器化使开发人员可以将重点从服务器级别转移到任务级别。无服务器解决方案使开发人员可以消除后端基础架构的复杂性,从而专注于其应用程序或系统需要做什么。

而且,从我在构建无服务器基础架构方面的个人经验中学到的另一点是:

  • 无服务器数据管道实际上并不需要仅仅是实时的。人们可以通过AWS的CloudWatch警报机制构建高效的批处理无服务器管道,该机制允许人们监视工具并为(AWS)Lambda发出警报以进行计算。

例如:将文件存储在AWS SQS队列中。一旦队列中的消息数达到10,就向Lambda发送事件。


6

除了简单解释“无服务器”一词的定义外,该术语的起源以及它的历史也为它的含义提供了一些见识。这个概念起源于JAWS 框架奥斯丁·柯林斯,这得到了 后来改名无服务器。我是在AWS re:Invent 2015 会话中首先了解到的,可以帮助您确定该概念的日期。这实际上是术语“无服务器”的缩写,然后迅速传播到其他云系统:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.