共计 4260 个字符,预计需要花费 11 分钟才能阅读完成。
回顾 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,最初谷歌云性能是最低廉的抉择。
结束语
那么你会抉择哪一个呢?还有很多其余因素须要思考,说实话,这些因素都取决于你的背景,你要解决的一系列需要,以及你是否曾经有了一个云提供商。你能够用这个列表作为领导,但记得在做出抉择之前要思考到本人的理论状况。
最初,哪一个是你最喜爱的?或者甚至更好的是,你会 不向其他人举荐 哪一个?请在上面留下你的评论,让他人能从你本人的教训中受害!
_下期再见!_。