1

回顾2020年所有主要的无服务器计算服务。

贴图

随着云平台的成功,我们已经看到了允许您像使用自己的远程基础设施一样使用远程基础设施的产品(基础设施即服务)。我们看到的产品允许你使用不同的产品来使用远程基础设施,而不必担心它(平台即服务)。现在,我们也有能力深入到代码层面(顺便说一句,这真是太神奇了),只要我们触发函数,这些函数就会被执行,谁也不知道在哪里(Functions as a Service)。

在这篇文章中,我将快速介绍一下有哪些顶级的平台可以让你远程执行自定义计算,或者换句话说。无服务器计算平台。

快速介绍。什么是无服务器计算?

无服务器计算是指能够执行自定义计算,而不必担心计算发生在哪里。当然,服务器是存在的(你认为代码会在哪里运行呢?),但事实上,你不必考虑它们,_意味着你可以认为它们是不存在的。

当然,我所说的计算,是指你可以写的实际函数。想想看:在软件开发中,有些时候,你需要创建整个服务,只是为了提供几个功能,同时,这些功能偶尔也会被使用,但你仍然必须让这个服务在99.9%的时间里都能正常运行,否则用户可能会需要它们,如果它们失败了,那么你就麻烦了。

如果,你不依靠这99.9%的正常运行时间,而是能保证每当你需要执行该功能时,就启动一个服务器,里面有你需要的所有东西(包括你自己的代码),在执行结束后,所述服务器就会停止?对于一个可能有30%的时间会被执行,但99.9%的时间需要启动以备不时之需的服务,这样你能节省多少钱?这就是无服务器计算平台最大的好处之一,你不用担心基础设施,你只需要担心执行你需要的计算的代码。

有趣的是,这并不是一个新的概念,事实上,外面第一个无服务器服务是在2006年由Zimki推出的,不过它一直没有成功,最终关闭。从2006年到现在,第一个真正的赢家是亚马逊,他通过Lambda,在2014年成功推出并普及了这种服务模式。如今只有它一家吗? 当然不是! 和其他所有基于云的服务一样,各大平台都有,在本文中,我将快速介绍它们。


为什么要采用无服务器化?

了解什么是无服务器计算很重要,但除此之外,你为什么要使用它?你准备好失去对服务器及其配置的控制了吗?

事实上,这种模式有不少有趣的好处,我个人认为它们绝对超过了你对它的所有潜在保留意见。

  • 无服务器架构是可扩展的 无服务器架构是可扩展的:它们就是这样构建的,你不必担心这个事实。你还想从一个架构中得到什么?
  • 你只需要担心编写你的代码,其余的模板代码是不需要的。这绝对是一个节省时间的方法,尤其是现在使用的一些技术(也就是node_modules,有人知道吗?
  • 不需要处理服务器配置,因为,嗯......没有服务器(至少,从你的角度来看没有)。这也是一个巨大的时间节省,不需要安装和配置任何东西,只是假设一切都准备好了,你可以使用(因为它是)。
  • 你只需为你使用的东西付费,所以你不需要为一个总是开着的服务器付费,即使它没有被使用,有了这种模式,你只需为你的代码每次被触发时执行的几秒钟付费。

本质上,从理论上讲,一切似乎都表明,无服务器模式会简化你开发过程中的方方面面以及相关的管理任务。

说到这里,我听到你在问:有什么问题?当然,这种模式也有一个缺点。

为什么你要避免Serverless?

在科技行业中,没有什么灵丹妙药;没有一种产品或工作模式能满足你的所有需求,正因为如此,采用无服务器方式并不总是正确的举措。

例如,无服务器方式有一些缺点。

  • 调试和测试你的代码不是那么简单。你很可能需要一些专门的工具来重现你的代码在无服务器环境下的表现。毕竟,没有服务器就意味着你无法访问正常的环境,在这种环境中你可以调试代码的执行。
  • 性能可能是个问题。现在不要误解我的意思,我并不是说无服务器功能很慢,一点也不慢。有一些方法可以让你的代码执行热身,这样如果它经常被使用,就不会受到惩罚。但这毕竟是一个无服务器的环境,正因为如此,平时不常用的函数(或不经常调用的函数)会花费更长的时间来执行。这取决于提供商和他们采用的执行方案。
  • 无服务器计算并不是为了持续运行而设计的,这意味着你必须重新思考构建逻辑的方式。这是一个改变你的观点的问题,但这可能是一个挑战,特别是在一开始。
  • 厂商锁定绝对是真实存在的。我的意思是,这对你来说可能不是一个问题,但如果你想保持你的代码通用性和厂商无关性,这可能不是办法。你的整个执行过程将是特定于厂商的,所以在决定为模型之前要考虑这一点。

也就是说,这些与其说是缺点,不如说只是可以被认为是警告。如果你把它们考虑进去,你就会没事的。

现在我们把这些都说清楚了,让我们快速了解一下主要的无服务器计算提供商。

主要供应商

在考虑提供无服务器服务的云提供商时,有很多选择。所以为了避免写一本小书来介绍所有的选择,我将列出主要的选择,如果你还在考虑其中没有一个适合你,至少你会有一个更好的想法来寻找什么。

AWS Lambda

绝对不是这种模式的发明者,但它仍然被认为是第一个真正把所有事情都做对的人,并且让它流行起来。也许是它背后的商业模式,也许只是时间问题,等待技术以可承受的价格提供,但自2014年以来,亚马逊一直在提供Lambda服务,这是在无服务器计算方面最大的名字之一。

他们提供了广泛的编程语言,你可以使用,而且他们与所有的服务都有集成,允许你根据他们的产品触发的许多事件来触发你的功能的执行。

在他们的网站上,你可以看到如何利用他们的一套服务与lambda函数一起工作,并实现以下功能。

  • ML模型的数据预处理
  • 实时数据分析用于检测趋势

*对外服务通信

这绝对是一个非常通用的服务,并且拥有您可能需要的所有文档和示例。

Azure功能

AWS第一个真正的竞争者可能是微软,但2年后,在2016年。他们为FaaS提供的服务与亚马逊的非常相似,当然,集成了他们自己的一套服务和相关的触发器。

如果你要选择AWS的Lambda的其他服务,这绝对是一个完美的选择。

请记住,这些无服务器计算服务是理想的,当与同一个云提供商的产品结合使用时,效果最好,如果你想让事情跨云工作,那么你可能会开始遇到一些复杂的问题(当然,这取决于你到底想实现什么)。

谷歌云功能

令人难以置信的是,谷歌姗姗来迟。他们可能拥有世界上最大、最刻薄的搜索引擎,但他们为FaaS提供的产品是在2017年,最初,他们的产品比其他替代品慢了不少,这在当时甚至是最差的选择。

也就是说,一年后,2018年左右,他们设法改善了这方面的情况,他们终于从他们的产品中删除了 "测试版 "标签,并确认现在已经可以用于生产使用。

如今,他们的服务与竞争对手不相上下,所以虽然他们有一个艰难的开始,但其绝对是一个值得考虑的。

我们该如何选择?

除了根据你当前的提供商进行选择(即如果你已经与AWS合作,你可能会想选择他们,Azure和GCP也是如此),你需要一些细节来了解哪一个是适合你的选择。

所以现在让我们来看看一些硬性的、无偏见的数据,应该可以帮助你做出这个选择。

免费层

了解他们对你的流量收多少钱和了解他们收多少钱一样重要。

  • AWS Lambda:100万次执行/月是免费的
  • Azure功能。每月免费执行100万次
  • 谷歌云功能。每月免费执行200万次

赢家:很显然,这部分的赢家是谷歌,每个月有2M的免费执行量。也就是说,如果你只是在试水,他们中的任何一家都能提供每月足够的免费执行量供你玩耍。

支持的编程语言

这些毕竟是函数,你要用什么语言来写,肯定是个大问题。而且由于基础设施是管理式的,所以你无法真正挑选出你最喜欢的那一个,相反,你必须从可用的选项列表中选择。

  • AWS Lambda。开箱即用,支持Java,Go,PowerShell,Node.js,C#,Python和Ruby。并可选择创建自定义运行时,以使用任何你想要的编程语言
  • Azure 函数。C#、F#、JavaScript、JAVA、PowerShell、Python和TypeScript。具有提供以任何语言编写的HTTP服务作为实际函数的实验性功能。
  • 谷歌云函数。JavaScript、Python、Go、JAVA

赢家:这里的明显赢家是AWS,Azure紧随其后。为什么呢?因为他们的产品比谷歌的大得多,而且他们都提供了对自定义语言的支持(不像谷歌),但微软的替代方案仍处于预览模式,这意味着它并不真正稳定。

最大执行时间

虽然在编写无服务器功能时,应该考虑到这些功能的运行时间很短,但在一些用例中,可能需要更长的时间。

  • AWS Lambda。最高15分钟 *Azure Functions:
  • Azure Functions。通常最多10分钟,但如果你有高级计划,保证最多60分钟。 * 谷歌云函数:
  • Google Cloud Functions:默认为1分钟,但可以保证最长60分钟。默认为1分钟,但可以延长到9分钟。

赢家:如果你要用基本计划的话,这个有点难,AWS Lambda显然是这里的赢家,15分钟。你能想象一个函数运行那么久吗?当然,可能还有一些用例,但这绝对是一个很长的时间。另一方面,如果你愿意多付一点钱,Azure的高级计划提供了无限的运行时间(尽管他们只保证最多60分钟,这听起来又很疯狂,应该是足够了)。

实际计算成本

最后,为了一个相当大的执行计划,我们可以期望每月支付多少钱?

贴图

贴图

摘自http://serverlesscalc.com/

通过使用serverlesscalc.com,我们可以快速比较在1.5Gb内存的服务器上执行100万个函数,每个函数平均运行1秒,需要花费多少钱。

你可以使用这个网站来玩弄这些数字,看看你所看到的差异是什么样的,或者你甚至可以使用每个供应商自己的计算器来对这些估计有更多的控制。

最后,考虑一下即使我使用100万次执行作为例子,他们都有一个免费的层级_至少_这个数量,你仍然不得不支付。这是因为即使你没有为请求付费,你仍然要为计算时间付费。如果你使用较低级别的服务器(即在这种情况下内存较少),你的成本会减少。

赢家:最后,这里的赢家似乎又是AWS Lambda,紧随其后的是Azure,最后谷歌云功能是最昂贵的选择。

结束语

那么你会选择哪一个呢?还有很多其他因素需要考虑,说实话,这些因素都取决于你的背景,你要解决的一系列需求,以及你是否已经有了一个云提供商。你可以用这个列表作为指导,但记得在做出选择之前要考虑到自己的实际情况。

最后,哪一个是你最喜欢的?或者甚至更好的是,你会不向其他人推荐哪一个?请在下面留下你的评论,让别人能从你自己的经验中受益!

_下期再见!_。


Reco
4.6k 声望541 粉丝

敢作敢为