编者按:两年前,我们还在讨论什么是Serverless,Serverless如何落地。如今,已经有评测机构给出了40条标准来对Serverless的服务能力进行评估,这些评估细则既是技术生态繁荣发展的一种表现,也可以作为新进入者评估Serverless落地成效的一种参考依据。
在 Forrester 的这份函数即服务 (FaaS) 平台评估报告中,我们选择了阿里巴巴、亚马逊、谷歌、华为、IBM、微软、Nimbella、甲骨文和腾讯这 9 家最具影响力的提供商,并依据 40 条标准对其进行了研究、分析和评分。该报告展示了每个提供商在各方面的表现,旨在帮助从事应用程序开发与交付 (AD&D) 的专业人士找到最符合自身需求的提供商。
Forrester Wave™:函数即服务 (FaaS) 平台
2021 年第一季度报告
FaaS 平台帮助开发人员快速创建云原生服务
FaaS 平台的抽象化让开发人员不再需要关注复杂的容器或虚拟机集群管理与扩容工作,从而可以快速创建云原生微服务。将底层基础架构的管理工作交给 FaaS 提供商之后,开发人员就可以在编程环境中,使用 Java、C#、JavaScript 或 Python 等熟悉的语言,将微服务编写成简单的小函数。然后,FaaS 提供商会根据服务要求,自动对这些微服务进行扩容或缩容。使用 FaaS 平台的开发人员表示,通过免于基础架构管理,借助抽象化消除与此相关的复杂操作后,他们可以迅速将新的想法推入部署阶段,同时可以根据执行微服务的实际资源需求来确定基础架构费用。在挑选 FaaS 提供商时,开发人员应分析该提供商是否具备以下条件:
支持函数和容器打包。随着开发人员将越来越多类型的工作负载部署到 FaaS 平台,FaaS 平台应允许开发人员简单地将一个函数打包成 ZIP 或 JAR 文件并加以部署,或者将自定义代码打包成符合开放容器标准 (OCI) 的容器,并部署与之对应的框架。FaaS 平台应同时支持这两种选项,才能在开发部署 Web、内容和事件驱动的工作负载方面为开发人员提供最大的灵活性。
提供健壮的安全功能。随着开发人员不断扩大对 FaaS 平台的运用范围,确保相关人员能够以安全的方式访问被封装到虚拟私有网络,或虚拟私有云 (VPC) 中的数据和应用程序接口 (API) 就变得非常重要。另外在函数扩缩容的同时,相关人员还需要能够快速接入这些资源,而无需等待耗时的“冷启动”。
支持第三方生态系统和开放标准。除非您愿意完全依赖一家公有云提供商,否则您就应选择平台集成更为便利的 FaaS 提供商。您需要关注的功能包括第三方可观测性、事件绑定和消息协议等。
评估摘要
本次 Forrester Wave™ 评估报告将待评估对象分别归入“领导者”(Leaders)、“强劲表现者”(Strong Performers)、“竞争者”(Contenders) 和“挑战者”(Challengers) 这几个象限。这是对市场头部厂商的评估,并不代表市场的整体情况。您可以查看我们关于无服务器架构 (Serverless) 技术的报告,获取有关这个市场的更多信息。我们希望这份评估报告只是一个起点,建议客户使用基于 Excel 的厂商比较工具来查看产品评估并调整标准权重(请参见图 1 和图 2)。点击 Forrester.com 上网页版报告开头的链接即可下载上述工具。
图 1 《Forrester Wave™:函数即服务 (FaaS) 平台,2021年第一季度》评估结果
* 灰色圆圈表示未参与 Forrester 评估的厂商
图 2 《Forrester Wave™:函数即服务 (FaaS) 平台,2021年第一季度》评分
所有评分采用 0(弱)到 5(强)分制。
* 表示未参与评估的厂商
各厂商的产品
Forrester 此次共评估了 9 家厂商的产品:阿里巴巴、亚马逊、谷歌、华为、IBM、微软、Nimbella、甲骨文和腾讯(见图 3)。
图 3 本次评估的厂商和产品
厂商概况
通过分析,我们发现各厂商有以下优势和不足之处。
领导者
亚马逊在地域覆盖、生态系统广度和执行稳定程度等评分项上处于领先。在 2020 年的 Forrester Wave™ 报告中,我们提到 Lambda 在地域可用性、客户采用率、开发人员部署函数的体验以及对生态系统的支持等方面均有出色表现。这些优势也延续到 2021 年。除此之外,诸如对亚马逊 Elastic File System (EFS) 的支持,运行符合 OCI 标准的容器的能力以及精确到 1 毫秒的计费粒度等功能让 Lambda 在创新之路上不断前进,让更多类型的工作负载适用。对无服务器架构安全性和特殊工作负载的强大支持让 Lambda 在 2021 年依然保持着领导地位。亚马逊认为 FaaS 工作负载的生命周期应该是短暂的,认可这一观点的开发人员会发现,Lambda 为他们提供了一个强大的FaaS 平台。该平台正逐步支持第三方工具和以容器为中心的部署过程。该平台还针对状态管理、数据库操作和 API 等细化功能提供独特的服务。
参考客户对 Amazon Web Services(亚马逊云计算服务,简称 AWS)Lambda 给予了很高的评价,认为该平台可提供一流的客户支持,性能出色,并集成各种 AWS 服务和第三方服务。在与经验丰富的业内人士保持紧密合作方面,该产品也得到了客户的一致赞赏。参考客户认为该平台在可观测性上还有改善空间,并期望其能为开发人员提供更多简化的工具。AWS Lambda 最适合异步运行的临时工作负载,包括集成其他 AWS 服务、物联网、批处理、新 Web 应用以及事件驱动集成。
阿里巴巴使用容器和开放标准来加速 Web 和内容工作负载。在 2020 年的报告中,我们将阿里巴巴函数计算 (Function Compute) 描述成“一个强健的通用平台”。2021 年,我们发现该平台对容器以及开源项目和标准,包括 OpenTracing、OpenTelemetry、Grafana 和 Jaeger 的支持使其能力得到进一步提升。加上该平台为支持主流 Web 框架、以内容为中心的工作负载、1 毫秒计费粒度以及运行时方面的投入,我们这次将阿里巴巴函数计算纳入 FaaS 市场“领导者”象限。阿里巴巴函数计算特别适合需要处理大量视频的工作负载,并利用以容器为中心的模型来实现函数并发。对于有此类需求的客户,该平台是上佳之选。
参考客户对阿里巴巴函数计算在中国 ISV 生态系统中的事件集成能力赞赏有加,并对其在圣诞节和新年等节日期间加强客户支持的做法给予了高度评价。在技术方面,客户对于可以在几分钟内扩容到数万个实例的能力深表满意。参考客户希望该平台能够在远程调试方面提供更好的编程语言支持,并改进对于 GPU 计算的支持。虽然该平台目前最适合在香港或中国大陆部署工作负载的公司,但它的国际覆盖面正在扩大,目前已支持 10 个地域,共有 21 个可用区。
微软 Azure Functions 为高级计划保留了重要的企业级功能。Azure Functions 的消费计划支持多种编程语言和有状态的持久函数 (Durable Function),但如果想要使用预留实例、对 Docker 容器的支持和强大的安全功能,开发人员就需要升级到高级的专用计划,即 Azure App Service 计划。持久函数提供有状态的功能并支持和 Azure Event Hub 绑定,而 Azure Event Grid 可帮助开发人员构建事件驱动微服务。今年,微软通过加大投入,改进了新用户引导、为开发人员提供更多工具以及支持在本地计算机上进行开发和调试,在开发人员体验这个标准上表现突出,得到了最高评分。
参考客户高度认可 Azure Functions 与 Key Vault 等其他 Azure 服务相集成以实现机密存储的能力,并特别提到其强大的内置可观测性。Azure Functions 的性能和服务质量也让客户普遍感到满意。但是,客户如果要使用 VPC 服务和预留实例等重要的企业功能,就不得不选择费用更高的高级服务计划,这一点是客户集中抱怨的地方。对于需要其他 Azure 服务或一个覆盖全球的 FaaS 平台的客户而言,Azure Functions 是最合适的解决方案。但如果您的团队想构建或集成企业级工作负载,就需要升级到高级版的应用服务计划。
强劲表现者
腾讯云函数 (SCF) 平台优化了以云为中心的开发。腾讯打造了一套出色的基于 Web 的工具来进行函数开发,并将其与可靠的运行时相结合,支持多种编程语言、复杂的工作流程和运行时间更长的函数实例。开发人员可以预留函数实例,另外腾讯也为人工智能 (AI) 工作负载和特定的行业云提供专业支持。SCF 还可作为微信生态系统的扩展机制,有效帮助各企业通过微信扩展功能与客户进行互动。但对于希望进行本地函数开发和调试的开发人员来说,腾讯以云为中心的开发理念与他们契合度不高。
参考客户对于 SCF 的性能,客户支持和工作负载执行低成本给予了高度评价。客户同时表达了对该平台稳定性的担忧,并希望通过更多内置事件触发器来使用更多来自腾讯和第三方的云服务。对于需要在中国部署 FaaS 服务、与微信进行集成和扩展以吸引更多客户并接受以云为中心的开发方法的客户来说,腾讯 SCF 是一个不错的选择。
Nimbella 通过“FaaS 无处不在”的方法全面支持混合云。与 IBM Cloud Functions 一样,Nimbella 基于开源 Apache OpenWhisk 项目。Nimbella 拥有一个简单快速的开发人员入门流程,同时它的运行时既可以在纯 FaaS 模型下使用,也可以作为可安装的函数平台部署到其他公有云上,更可以本地部署。Nimbella 通过强大的容器支持、允许使用多种编程语言以及可配置的函数最大运行时间设置来实现“FaaS 无处不在”。这样的一款 FaaS 解决方案非常适合需要长期运行的有状态函数。该平台尽管具有很高的灵活性,但有些问题仍需注意。它的托管解决方案为租户提供了内置隔离功能,而可安装的解决方案则支持混合部署,团队可根据不同的组织需求和安全策略做出具体调整。因此,选择混合部署的团队可能要花费更多的时间来配置生产环境的基础设施。
参考客户对 Nimbella 在客户支持和帮助实施最佳实践方面的表现给予了高度评价。客户还将最小化厂商锁定风险作为选择 Nimbella 的一个原因。客户关心的问题包括安全性和可观测性,同时希望通过增加代码示例和数字内容来加快上手速度。对于采用混合 FaaS 解决方案,并希望在无服务器架构平台基础上提供自己的网络和集成功能的开发团队而言,Nimbella 是一个很合适的解决方案。另外如果相比基于用量的定价模式,您更想按月付费或选择企业协议,Nimbella 的许可模式也是最有吸引力的方案。
谷歌以 Cloud Functions 和 Cloud Run 打造“全方位”解决方案。从谷歌的 FaaS 产品可以看出,随着公有云提供商将容器和 Kubernetes 平台作为 FaaS 运行时的关键平台引擎,多个 FaaS 平台开始迈向转型。谷歌的 Cloud Functions 支持常见的函数打包和部署,其运行时可以很好地扩展和缓慢冷却,并且谷歌 Cloud Ops 集成功能也确保了出色的可观测性。利用谷歌 Cloud Run,开发人员可以将函数与谷歌的 Functions Framework 打包在一起,使用 Knative 进行部署,并在混合部署场景中运行。与 2020 年的评估结果相比,该平台对编程语言的支持也有所加强。
参考客户在性能和简易性方面为谷歌给出了很高的评分,并称赞了 Cloud Functions 的安全性和可扩展性。此外,产品管理和客户支持团队的直接参与和支持也得到了客户的一致认可。有待改进的地方包括:更好地支持将第三方库与函数打包(比方说用于处理 Kafka 消息),以及 Cloud Functions 运行时的依赖项的透明度需要加强。如果您想在全球范围内部署应用,并在混合 FaaS 部署场景中从函数平稳过渡到容器,谷歌 Cloud Run 应该是您的合适选择。
IBM 完善了 Cloud Functions 并准备推出 Code Engine。IBM Cloud Functions 基于开源 Apache OpenWhisk 项目。它添加了内置的 API 网关,良好的事件流支持以及强大的容器级函数隔离等功能。从本次评估结果来看,IBM 在服务等级协议条款和可用性上优于其他任何一家厂商。但 Cloud Functions 在某些方面仍有待改善,比如网络隔离选项有限以及对预留函数实例的支持等。在 2020 年的评估中,我们曾指出 IBM 在收购红帽 (Red Hat) 之后,需要建立一套统一的函数运行时策略。IBM Cloud Code Engine 似乎将承担这一任务。虽然尚未进入一般可用 (GA) 阶段(因此没有包含在我们的分析中),但 Code Engine 已经将对 Kubernetes 和 Knative 的支持加入 IBM 的 FaaS 策略。
IBM 的函数实例快速自动伸缩和计算型工作负载的高度并发获得了参考客户的一致认可。其他客户指出对 OpenWhisk 的支持实现了可移植性,从而降低了厂商锁定的风险。需要改进之处包括完善编排、可观测性以及对预留函数实例的支持。IBM 老客户会发现 Cloud Functions 非常适合集成他们的工作负载,而它对多种编程语言的广泛支持也能有效帮助大多数开发人员顺利转向无服务器架构。进入 GA 阶段后的 IBM Cloud Code Engine 也值得期待,尤其是对于正在投资基于 Kubernetes 的基础架构,并希望将函数纳入打包对象的客户而言。
竞争者
甲骨文将安全性、容器和事件驱动集成放在首位。我们在 2020 年分析甲骨文 Cloud Functions 时,认为该平台相对较新,评估结果也体现了这一点。2021 年,甲骨文的这个 FaaS 平台已从“挑战者”象限升级到“竞争者”象限。甲骨文 Cloud Functions 基于开源 Fn 项目,函数被打包成 OCI 容器。甲骨文在建立这个 FaaS 平台时,主要侧重“设计安全”(secure-by-design) 模式,这一做法也符合许多企业开发团队的需求。默认情况下,函数实例仅在客户虚拟云网络的子网内可用。与其他一些 FaaS 厂商不同,甲骨文的私有云支持功能不收取额外费用。因此,甲骨文在北美、欧洲、亚洲和拉丁美洲的采用率都在稳步提升。
参考客户对甲骨文 Cloud Functions 的性能、易用性、开发时间、文档深度和总体执行成本给出了很高的评分。不足之处体现在需要拿出替代方案来解决偶尔出现的延迟问题,其可能原因是目前缺乏对预留实例的支持。甲骨文 Cloud Functions 非常适合使用其他 OCI 服务的企业。另外该平台目前已开放 23 个地域,可帮助客户在全球范围内实施部署。
挑战者
华为的函数工作流 (FunctionGraph) 虽然刚刚进入市场,但却有相当不错的前景。函数工作流平台还处在逐步发展的阶段,但我们在评估过程中发现,该平台凭借对开发工具、本地开发和事件驱动集成的有力支持,已达到市场平均水平。该平台可执行最长运行时间达 15 分钟的函数,并支持 Node.js、Java、Python、Go,C# 和 PHP 等多种编程语言。作为市场上的一个新面孔,这个平台还存在一些不足。比如,文档尚不完善、对特殊工作负载的支持较差、对集成的支持不够。部分地区内的可用性也有限。因此,我们认为华为的函数工作流平台最适合想要在中国,或者巴西、智利、墨西哥、新加坡、南非或泰国等华为云提供区域支持的国际市场上部署工作负载的开发人员。华为拒绝参与完整的 Forrester Wave™ 评估流程。
评估报告概述
我们严格依照 40 条标准对厂商进行了评估,这些标准可划分成三大类:
当前产品。每个厂商在 Forrester Wave™ 象限图纵轴上的位置代表其当前产品功能的表现。评估这些解决方案的关键标准包括开发人员的体验、编程模型、运行时执行环境和安全功能。
战略愿景。横轴上的位置表示厂商在战略上的表现。我们评估了 FaaS 平台提供商的愿景、执行能力、生态系统、参与度和定价策略。
市场占有率。通过图上圆圈的大小来表示。我们的市场表现评分体现的是每个厂商的地理分布、客户群规模和产品收入。
厂商入选标准
Forrester 本次共评估 9 家厂商:阿里巴巴、亚马逊、谷歌、华为、IBM、微软、Nimbella、甲骨文和腾讯。他们均符合以下条件:
拥有 FaaS 平台。每家厂商都有一个客户可以随时使用并运行生产性工作负载的 FaaS 平台。
曾参与 Forrester 的 Now Tech 无服务器架构提供商评估。FaaS 平台是通过无服务器的架构来打造云原生应用的关键组成部分。我们在 Forrester 的《Now Tech:无服务器架构,2021 年第一季度》报告中详细介绍了开发人员可以选择的无服务器架构。
补充材料
在线资源
我们将所有 Forrester Wave™ 评分和权重整理成一份 Excel 文件,包含详细的产品评估并支持自定义排序。点击 Forrester.com 上网页版报告开头的链接即可下载该文件。我们希望这些分数和默认权重仅是一个切入点,建议读者根据个人需要来调整权重。
Forrester Wave™ 的评估方法
Forrester Wave™ 报告为组织在技术市场上购买产品提供了指南。为确保对所有参与者的公平,Forrester 遵循“Forrester Wave™ 方法指南”来评估参与的厂商。在该评估过程中,我们先进行初步研究,挑选出供之后评测的厂商。然后依据入选标准,进一步筛选并确定最后名单。接着通过详细的问卷调查、演示/简报,以及参考客户调查/采访来收集有关产品和战略的详细资料。最后将这些信息,结合分析师的行业经验和专业知识,通过将一家厂商与参与评估的其他厂商进行对比的相对评分系统,来对厂商进行评分。我们在每份 Forrester Wave™ 报告的标题中都清楚地指明该 Forrester Wave™ 的发布日期(年份和季度)。在本次 Forrester Wave™ 报告的评估过程中,我们采用了厂商在 2021 年 1 月 21 日之前提供给我们的材料,不接受这个日期之后提供的其他信息。我们希望读者能去分析随时间变化,市场和厂商产品出现了怎样的变化。根据“Forrester Wave™ 和 New Wave™ 厂商审核政策”,Forrester 要求厂商在报告发布之前审核我们的评估结果,以确保准确性。在 Forrester Wave™ 象限图中被标记为未参与评估的厂商符合我们所定义的入选标准,但拒绝参与或仅部分参与本次评估。我们根据“Forrester Wave™ 和 Forrester New Wave™ 未参与和不完全参与厂商政策”,对这些厂商进行评分,并将他们与参与评估的其他厂商一起列入象限图。
诚信准则
我们所有的研究,包括 Forrester Wave™ 评估,均遵循我们网站上发布的“诚信准则”。
报告原文链接:
参考阅读
性能分析场景下,一种实时分位数计算的系统及方法
百亿规模API网关服务Shepherd的设计与实现
从 Serverless 看软件效能提升
详解支撑7亿用户搜索的百度图片处理收录中台
当我们在聊高可用时,我们其实在聊什么?
原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
高可用架构改变互联网的构建方式