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

什么是“无服务器”? ,以及今天如何使用?

评论

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

#1 楼

Wikipedia的有关无服务器计算的文章对该主题进行了介绍:提供者根据服务请求的需要完全管理功能容器平台即服务(PaaS)的启动和停止,并且通过对满足请求所需资源的抽象度量来对请求进行计费,而不是每小时按虚拟机计费。 br />

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

无服务器计算会改变您的体系结构,从考虑机器在做什么,到在做什么功能。 AWS Lambda是我想到的示例-您需要付费并运行功能,而无需提及正在运行的物理基础设施类型。还有一些竞争性的无服务器主机,例如Azure Functions(或者您可以只搜索其中一个对它们不感兴趣的主机)。在某些情况下,编写方式与您习惯的方式略有不同,因为它是完全不同的体系结构):


可伸缩性实际上是免费的-因为您只需要付费即可运行作为一项功能,云提供商可以根据需要轻松地专用于运行代码的更多硬件。您还可以根据需求的增长进行扩展,而不用为应用程序使用一次或一百万次支付固定的费用。
服务器软件和硬件不再需要由开发人员管理-云提供商可以处理。如果您曾经在服务器上使用过诸如Arch之类的东西,那么您就会知道清除关键包并破坏所有内容是多么容易!
它使开发人员可以腾出时间专注于自己擅长的代码。大多数开发人员可能都不会擅长服务器基础架构和编程-无服务器只是解决了一个问题。


评论


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

– Phill W.
19年5月3日,10:10

#2 楼

Martin Fowler拥有很好的概述:https://martinfowler.com/articles/serverless.html

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

评论


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

–阿德里安
17 Mar 13 '17 at 20:28

#3 楼

就像我们这个领域中的许多事物一样,“无服务器”正在成为一个超负荷的术语。但是通常,它的意思是“在功能上,我们的体系结构不依赖于服务器的配置或持续维护”我想到的第一个实例是单页javascript应用程序,它使用本地存储,并存储在Amazon S#或Github Pages(或任何静态站点-只是常见的示例)之类的东西上。想象一下像“待办事项”或“完成任务”式的应用程序,它完全在您的浏览器中运行。您的浏览器点击了S3之类的服务来下载代码,并且您存储的项目都存储在浏览器的本地存储中。您无需为此维护任何服务器。

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

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

借助Amazon Lambda,我可以承担该rake任务,并将其作为纯'功能'。我什至可以安排它。客户不再需要一个基础设施来完成如此简单的每小时一小时的工作。

有了“无服务器”,仍然有一个服务器,就像“云”一样,还有一台计算机。除此以外,还有一个抽象层次,它对您承担一些环境责任。

评论


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

–HopeKing
17年11月14日下午3:45

#4 楼

所有的好答案已经。我浏览了博客文章《思考无服务器》 —“新方法如何在高可伸缩性中满足现代数据处理需求”,在此我对无服务器的含义进行了出色的解释:


“ “无服务器”并不意味着不再涉及服务器。
只是意味着开发人员不再需要考虑太多。计算资源被用作服务,而不必
围绕物理容量或限制进行管理。服务提供商
越来越多地承担管理服务器,数据
和其他基础结构资源的责任……无服务器让开发人员将重点从服务器级别转移到任务级别。无服务器解决方案使开发人员可以消除后端基础架构的复杂性,从而专注于他们的应用程序或系统需要做的事情。我在构建无服务器基础架构方面的个人经验是:


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

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

#5 楼

除了简单地解释“无服务器”一词的定义外,该术语的起源和历史还使人们对其含义有所了解。这个概念起源于Austen Collins的JAWS框架,后来被更名为Serverless。我是在AWS re:Invent 2015会话中首先了解到的,可以帮助您确定该概念的日期。这实际上是术语“无服务器”的缩写,然后迅速传播到其他云系统:


Amazon AWS在2014年11月推出了名为Lambda的新服务。
Google Cloud已悄然启动其功能于2016年2月发布。
Microsoft Azure紧随其后,于2016年3月最后一天发布。