当前位置: 首页 > 科技观察

主要无服务器架构提供商六大服务对比

时间:2023-03-13 11:25:37 科技观察

【.com快译】根据2018年版RightScale云服务状态报告(请参考:https://www.rightscale.com/lp/state-of-the-cloud)显示,Serverless架构的市场渗透率已经提升到75%。此外,这个市场的参与者不再局限于AWSLambda或AzureFunctions等主流提供商。然而,在你面对众多云服务商,需要将你现有的服务迁移到Serverless架构之前,你真的了解它们有何不同吗?让我们一起深入探讨。Serverless架构的发展历史已经有十多年了。随着云技术在商业中的广泛应用,整个市场也得到了快速的发展。正如我们所见,每年都会出现新的应用程序开发方法。从逻辑上看:那些使用IaaS(基础设施即服务)的公司,主要是通过租用服务器资源的方式,将基础设施迁移到云端。但是他们的IT团队仍然需要亲自动手设置各种服务器。随着PaaS(PlatformasaService)的出现,IT团队逐渐摆脱对服务器的手动操作。PaaS提供商可以提供更完整的应用程序堆栈,包括:由提供商管理并在云端运行的操作系统和数据库。如上图所示,IaaS也是后端即服务(BaaS)的另一种云服务部署和开发模式。2014年,出现了一种新的应用程序开发方法:无服务器架构,即FaaS(Function-as-a-Service,功能即服务)。简而言之,FaaS是一种无服务器计算形式,它使用完全由提供商管理的基础设施,供用户在按请求付费的基础上上传和运行他们的功能。与其他云计算方法不同,无服务器架构将开发人员从服务器中完全抽象出来,让他们专注于业务逻辑。如果您想了解更多关于FaaS的概念,以及Serverless架构的优缺点,请阅读:https://www.altexsoft.com/blog/cloud/pros-and-cons-of-serverless-architecture/?utm_source=DZone&utm_medium=推荐。Serverless架构的好处话虽如此,尽管Serverless架构很受欢迎,但它可能并不适合所有公司和每种类型的产品。这里,我们先来看一下Serverless架构的整体优势。当然,由于服务商不同(比如开源或者公有云),每个公司的优势也可能略有不同。u降低成本并具有可扩展性。如前所述,Serverless架构相较于传统方式降低了服务器运维成本。与其他类型的云计算服务相比,大多数FaaS提供商可以实现按请求付费的定价机制。这意味着您只需为函数被调用的时间和次数付费。此外,您还可以灵活分配一定的内存和CPU给功能函数,按需扩容和缩容。更快的开发和部署。区别于单体结构的构建方式,FaaS提供了更灵活的选择。开发者可以编写一组由不同功能函数组成的代码,而不用将整个应用程序的代码上传到服务器。因此,这使得整个结构更易于调试、更新和添加新功能。减少人力资源支出。企业不必聘请DevOps工程师来运营,当然也不必购买特定的硬件。高可用性和自动缩放。功能仅在客户端请求时激活和运行,在不需要时关闭。同时,随着流量的增长,FaaS可以自动扩展。他们将更多的资源分配给特定的功能,以实现高可用性和高负载下的平稳性能。专注于业务需求。通过将开发人员从服务器端工作中抽象出来,您的团队可以更多地关注应用程序的业务逻辑。近两年Serverless架构提供商概览。随着新玩家的不断入局,2018年Serverless架构提供商的名单也扩充了不少。我们将这些提供商分为两大类:Mainstream和Alternate。主流品类一般提供公有云上的Serverless架构。下面,我们将介绍和比较主要的主流和替代供应商。AWSLambdaAmazonWebServices在2014年推出了这样的FaaS产品。自发布以来,Lambda已成为无服务器架构的代名词。凭借最广泛的服务范围,Lambda一直保持着市场领先地位。最好的例子是Netflix的无服务器公共云应用程序。微软的AzureFunctions于2016年推出,作为AWSLambda的竞争对手。AzureFunctions提供了一套类似于亚马逊的服务,更侧重于微软堆栈的语言和工具。HaveIBeenPwned是AzureFunctions的一个示例。如果您对Azure上的应用程序结构及其执行方式感兴趣,可以在https://www.troyhunt.com/how-did-have-i-been-pwned-perform-on/上查看Analysis和案件的费用详情。GoogleCloudFunctions(GCF),作为四大之一,谷歌直到2017年才发布解决方案。虽然GCF起步晚于Azure和Lambda,但谷歌在2018年就赶上了。它解决了早期的各种错误,并在其官网上进行了宣传.IBMCloudFunctions作为无服务器领域的新成员,IBM凭借一系列具有竞争力的服务进入市场。IBMCloudFunctions是ApacheOpenWhisk在其云服务中使用的唯一托管架构解决方案。当然,如果您更喜欢开源解决方案,那么ApacheOpenWhisk可能更适合您。一般来说,上面提到的主要提供商提供类似的服务,并且能够在托管架构上运行各种应用程序。虽然表现形式不同,但都可以为用户带来FaaS的各种优势。为了帮助您找到最适合您的提供商,我们将从以下六个方面深入比较他们的服务:定价模型和计费因素支持的编程语言功能函数触发器类型每个请求的执行持续时间和并发部署方法监控和文档比较主要FaaS提供商的定价模型和计费因素如前所述,大多数FaaS提供商使用非常划算的按请求付费定价模型。为了能够计算应用程序的成本,他们使用各种服务来准确预测应用程序的潜在成本。举个例子:Serverlesscalc是一个专门用来在四大serverless架构提供的平台上计算目标应用成本的工具,目前还处于测试阶段。当然,上面提到的各大提供商也有自己的计算工具:AWSLambdaS3计算器AzureFunctions计算器GCF计算器IBMCloudFunctions计算器与CPU使用率分开计费,所以是其中最贵的。具体来说:AWSLambda提供免费套餐,其中包括:每月100万次请求和每秒400,000GB的计算时间。所有超过免费套餐限制的请求均按每秒每GB0.00001667美元的价格收费,这是市场上的最低价格。实际上,免费套餐足以让您在开始计费之前完成应用程序的调试。那些分配给用户的资源(内存和CPU)会作为一个整体计费,毕竟都是按比例增长的。如果您在Lambda函数中使用其他AWS服务,可能会产生额外费用。Azure的计费方式与Lambda相同,并且还提供免费套餐。但是,对于超出部分,将按每秒每GB0.000016美元的标准收费。可以看出,Azure平台的重载成本略低于Lambda,而平均负载与Lambda持平。但是,微软更愿意按使用的内存量计费,而不是简单地一次性分配给用户。此外,Azure还为可能使用Windows和SQL的用户提供了更低的价格。可见以上两个平台的选择其实取决于你使用的环境,而不是你承担的费用。GCF的免费套餐是:每月200万个请求和每秒400,000GB的计算时间。所有超出免费套餐限制的请求均按每秒每GB0.0000004美元的标准收费,包括网络流量。因此,GoogleCloudFunctions对于运行耗时的函数或请求高容量的应用程序来说成本要高得多。上面说了,GCF会对分配给用户的内存和CPU分开计费。IBM拥有与Lambda和Azure相同的免费套餐,并且对超出免费套餐限制的所有请求收取每秒每GB0.000017美元的费用。在计费方面,IBMOpenWhisk记录了功能处于活动状态时消耗的资源。总而言之,AWSLambda的定价适中;Azure费用取决于使用的CPU和内存;对于Windows环境,Azure提供了最好的价格点。支持的编程语言为了让用户能够在托管环境中运行自己的应用程序,FaaS提供商往往在他们提供的公有云环境中支持多种语言。Lambda涵盖了广泛的编程语言,包括:Node.js运行时、Python、Java等编译型语言,以及.net语言(C#、VisualBasic和F#)。AzureFunctions显然专注于微软的语言系列,包括:Node.js运行时、C#、F#、Python、PHP、Bash、Batch和PowerShell,以及编译后的JavaScript语言。GoogleCloudFunctions过去只支持JavaScript,现在它宣布正在测试对许多其他语言的支持。不过就目前而言,GCF看起来并不是一个非常可靠的选择。IBM目前支持Node.js运行时、Swift、Java、PHP和Python。同时,它可以与任何带有Docker容器的编程语言集成。上图是四大提供商支持的语言列表。目前,GCF的支持类型最有限。Functiontriggertypes主流提供者可以提供可配置的动态触发器类型,用于调用函数函数。它们支持按需调用单独计划的功能以及与其他云服务的集成。您可以在不同提供商的用户文档中找到有关此的详细信息。Lambda和Azure通过API提供配置的触发器类型。其中AWS使用API??网关作为API触发器,AmazonS3作为基于文件的触发器,DynamoDB进行动态触发。另一方面,Azure建议使用其他Microsoft服务、Azure事件中心和Azure存储来触发WebAPI和计划调用。GCF服务在其文档中提供了各种受支持触发器的列表。GCF触发器类型的主要功能是使用户的应用程序能够与任何谷歌服务集成,进而支持云Pub/Sub和各种HTTP回调。IBM虽然在触发方面没有集成太多的第三方服务,但仍然可以支持很多常见的触发类型,包括:基于浏览器的HTTP工具调用,定时触发。因此,如果要根据触发方式来选择提供者,Azure和Lambda应该是最佳选择,而如果需要通过Google服务来触发一些功能,也可以选择GCF。执行时间和并发性与函数调用相关的另一个重要方面是:执行时间和并发性。这里的并发数是指一段时间内不同功能函数并行执行的数量。如上图所示,Google的并发数最高,而AWSLambda的执行时间最长。Lambda的并发数为1000,最长执行时间为15分钟。用户可以为整个账户或单个函数配置并发。Azure为单个应用程序提供了最高的并发率,但单个功能的最长执行时间限制为5分钟。如果用户最多需要10分钟,则需要升级。GCF只允许第一次调用HTTP触发器类型。其他的触发方法,并发数和Lambda一样,一次只能执行1000个。它将单个功能函数的执行时间限制为60秒,升级后最多9分钟。值得一提的是,AWSLambda是计算单个账户的并发数,而GCF是统计一个项目的并发数。这意味着:在AWS上,你只能以1,000并发运行一个调用函数,而在GCF上,你可以使用相同的并发运行多个函数函数。IBM对单个函数的调用时间没有限制,但是并发率不清楚,当然也不能保证。因此,如果想要函数式功能的流畅表现,可以选择Lambda、GCF和Azure。如果你关心长调用,那么Lambda和IBM会是更好的选择。部署方式各大提供商的部署方式似乎没有区别。在serverless框架的部署中,开发者通常使用serverless.yml配置函数,然后将函数的代码打包成一个Zip文件,然后推送到服务器。Lambda可以更新用户应用程序中的每个单独函数;而Azure、GCF和IBM服务倾向于通过插件解析serverless.yml,当然他们上传各种资源的顺序也略有不同。监控和日志记录由于所有基础设施都由提供商管理,因此他们需要为每个服务提供监控和日志记录工具,以便了解应用程序状态和参数指标。通过这种方式,用户还可以了解到资源的使用和分配情况、发生的错误以及相应的监控日志。亚马逊自带的Lambda服务工具——CloudWatch,可以观察函数调用和日志。然而,由于CloudWatch是一项付费服务??,它也受到了一些批评。来自其他主要提供商的类似服务包括:MicrosoftMonitor、GoogleStackdriver和IBM日志记录和监控。另一项亚马逊服务X-Ray是一种分布式跟踪系统,可监控多项AWS服务。但是,它的主要用途是监控微服务类型的应用程序,而不是功能性功能。以下是一些用于无服务器应用程序监控的第三方工具:Dashbird是一种免费的AWS监控服务,它提供CloudWatch以外的功能,并且具有更友好的用户界面。OpenTracing是一种独立于提供商的监控服务,而不是一种工具。OpenTracing支持9种语言,包括:Go、JavaScript、Java、Python、Ruby、PHP、Objective-C、C++和C#。Thundra专注于JavaScript,可以与AWSX-Ray集成,并在其之上提供监控和日志记录。其他备选考量如上所述,四大无服务器架构提供商都可以提供“势均力敌”的基础服务。只是AWSLambda和AzureFunctions更加完备和多样化。所以,大家在选择的时候,更多的还是要看使用的环境,对编程语言的支持需求,以及社区。如果你不想被上述主流公有云提供商的框架“绑架”,又需要对自己的产品有更多的控制权,可以考虑以下开源的serverless框架:IronFunctions是一个开源的serverless计算平台它还支持私有云、公共云和混合云。其背后的理念:为开发者提供一个可以在任何地方运行的无服务器平台。IronFunctions使用Go语言,这在其他无服务器选项中并不常见。OracleFn项目也是一个开源的无服务器平台,它原生于容器化并且独立于语言和云环境。与IronFunctions一样,FnProject也可用于私有云、公共云和混合云。Kubeless是Kubernetes提供的一种容器驱动的原生无服务器架构。它可用于自动化容器化应用程序的部署、管理和扩展。Firebase是用于移动应用程序开发的后端平台,由Google托管。它与谷歌的其他云服务顺利集成,当然与谷歌的产品配合使用效果最好。Webtask是一个完全免费的FaaS平台。它最适合不需要繁重后端并支持各种集成场景的移动应用程序。原标题:比较无服务器架构提供商:AWS、Azure、谷歌、IBM和其他FaaS供应商,作者:IhorLobastov