功能即服务 (FaaS):您需要知道的一切

已发表: 2022-06-09

您可能听说过 SaaS,您可能听说过 PaaS 和 IaaS,但您听说过功能即服务 (FaaS) 吗?

FaaS 市场正在快速增长。 根据 Allied Market Research 的数据,2018 年市场价值 30.1 亿美元。预计到 2026 年,这一数字将增长到 240 亿美元——这意味着该行业将从 2020 年到 2026 年以 29.7% 的复合年增长率 (CAGR) 增长。

看看这种增长,可以肯定地说 FaaS 是一件大事。

但什么是 FaaS,它是如何工作的? 为了帮助您回答这些问题,本文将介绍 FaaS 的基础知识、人们应该(和不应该)使用 FaaS 的原因,以及截至 2022 年全球 FaaS 市场的状况。

我们走吧。

什么是功能即服务 (FaaS)?

功能即服务 (FaaS) 是一种云计算形式,可帮助开发人员更好地工作,无需他们维护应用程序基础架构。 当开发人员利用 FaaS 时,他们使用 FaaS 平台为他们构建、运行和监督应用程序包。

在这一点上,您可能会认为 FaaS 听起来像无服务器计算——它确实如此。 无服务器计算允许开发人员将管理数据库、API 网关、存储、消息传递和其他基础设施外包给第三方提供商。 FaaS 是一种无服务器计算。

显示无服务器计算如何工作的图像
无服务器计算的工作原理(来源: iviewlabs)

尽管这可能是您第一次阅读有关 FaaS 的内容,但您可能已经在野外遇到过它。 许多流行的程序和应用程序都使用 FaaS——比如亚马逊的 Alexa。

如果您熟悉 Alexa,就会知道您可以通过构建“技能”来扩展 Alexa 的功能。 与应用程序一样,技能让 Alexa 在其基本配置之外做事。 诸如检查应用中的通知、开始新聊天或播放自定义音频之类的事情。

亚马逊通过 AWS Lambda 运行 Alexa 的所有技能。 构建新技能时,您将其创建为通过 AWS Lambda 部署的函数。 AWS Lambda 然后为您运行该函数并处理安全和数据库管理等基础设施问题。

那么,FaaS 是如何一步一步工作的呢? 让我们接下来介绍一下。

什么是 FaaS? 本指南分解了您需要了解的所有内容点击鸣叫

FaaS 是如何工作的?

要了解 FaaS,您需要了解两个关键术语:

  1. “单体架构” = 独立于其他应用程序运行的独立应用程序。 这些应用程序在内部管理用户界面、业务功能和数据界面。 单体架构代码依赖于其他代码片段。
  2. “微服务架构” =处理一些小任务的一段代码。 这些微服务是独立的(尽管它们一起构成了整个应用程序)。

下图显示了单体架构和微服务架构的不同之处:

单体架构与微服务架构
单体架构与微服务架构(来源: BMC)

当您执行或更新功能时,您可以看到微服务和单体架构在实践中的主要区别。 使用单体架构,整个程序立即执行功能(例如更新应用程序)。 使用微服务架构,您可以独立执行微服务功能。

FaaS 是帮助微服务架构工作的东西。

当你执行每一个新的微服务函数时,你只需要创建函数。 然后,您的 FaaS 提供者获取该功能,运行它,并从那时起处理该功能的管理。

由于 FaaS 是一种可以根据您的输入工作的工具,因此请务必注意每个 FaaS 功能应该只负责一项任务。 该任务然后在其触发器被激活时运行。 例如,生成用户收据副本的功能只有在用户按下“下载收据”时才会起作用。

FaaS 使用“事件驱动的执行模型”,这意味着您的功能仅在触发时才会激活。 同样,它们不会在后台运行。

那么,FaaS 还能做什么呢?

FaaS 包括哪些服务?

尽管所有提供商都不同,但 FaaS 提供商通常会提供以下服务:

  • 身份验证服务。 这些处理程序用户的登录和身份验证过程。
  • 数据库服务。 这些帮助您在数据库中归档信息,以便您的程序可以使用它。 FaaS 提供商为您管理一些数据库维护。
  • 文件存储。 FaaS 提供商可以为您的应用程序存储数据和文件,因此您无需将其托管在您自己的服务器上。
  • 报告。 FaaS 提供商可以监视您的程序中的错误或安全威胁,并在他们发现问题时提醒您。

总体而言,这些服务可帮助开发人员更智能地工作。 接下来让我们介绍 FaaS 的优点。

FaaS 模型的优点

使用 FaaS,开发人员无需担心基础架构或部署——只需编写应用程序逻辑。 因此,在当前实施时,FaaS 可以大大减少构建和部署程序所需的时间。

使用 FaaS 构建和部署也更容易。 一次配置时间只需几秒钟而不是几小时。 您也不限于特定的语言或资源。 FaaS 提供商可以运行大多数语言的代码,您可以使用提供商提供的缓存和数据库来加快构建过程。

FaaS 模型具有很强的可扩展性,容量规划要容易得多。 如果您需要更多资源,您可以简单地参考您的 FaaS 提供商的说明来升级您的使用。 许多 FaaS 提供商提供水平扩展,这意味着如果您的使用高峰,提供商将简单地为您提供额外的资源来应对高峰。

此外,您无需担心维护、灾难恢复 (DR) 或安全性。

最后,FaaS 非常高效。 提供商只对您使用的资源收费,因此您为 FaaS 支付的费用可能远低于为您自己的硬件支付的费用。 同样,您的函数不会在后台运行,而是处于空闲状态。 您也不需要为它们闲置付费。

那么,FaaS 是全能型的吗? 不完全的。

FaaS 模型的缺点

FaaS 模型消除了与程序开发相关的一些最大挑战,但它也要求您大幅限制您的控制。 您无法对代码使用的服务器、安全性或数据库做出很多决定。 相反,这取决于您的提供商。

同样,调试通常会更难一些,因为您无法完全控制系统。 测试也很困难,因为 FaaS 代码并不总是能顺利地转换到测试环境中。

此外,您必须遵守 FaaS 供应商的严格要求。 FaaS 功能只能完成一项操作,因此如果您不习惯这一点,则需要更改您和您的团队编写代码的方式。 同样,您可能需要重写现有应用程序中的代码以使其适合 FaaS 部署——因此 FaaS 通常比旧程序更适合新程序。

最后,选择 FaaS 通常意味着长期致力于单一供应商。 在构建程序时,您会使用提供商的系统和要求。 自然,更换供应商可能需要您重做一些工作并可能中断您的功能。

优点与缺点

优点缺点
更快地部署代码

配置需要几毫秒

任何语言的代码

自动灾难恢复 (DR)

成本效益

可扩展

失去对服务器的控制

调试更难

测试需要更长的时间

你被锁定在你的供应商

您必须编写适合 FaaS 的代码

FaaS 与 SaaS、PaaS 和 IaaS

既然您对 FaaS 有了更多了解,您可能想知道它与其他任何即服务 (XaaS) 选项(如 IaaS、SaaS 和 PaaS)之间的关系。

IaaS、PaaS 和 FaaS 服务具有相似的目的:它们帮助公司更便宜、更有效地管理应用程序。 但是,每个选项都提供不同的东西。

基础设施即服务 (IaaS) 允许您出租计算能力(如 RAM 和 CPU)。 使用 IaaS,您仍然需要在内部管理一些应用程序功能(如安全性)。

平台即服务 (PaaS) 允许您出租硬件和软件工具来构建您的应用程序。 一个常见的例子是 AWS Elastic Beanstalk。

与 IaaS 和 PaaS 不同,FaaS 允许您租用空间来独立运行功能。 此功能使其更具可扩展性。

以下是这三者如何不同工作的简短摘要:

一张图片展示了 FaaS 与 IaaS 和 PaaS 的不同之处
FaaS 与 IaaS 和 PaaS 有何不同(来源: thenewstack.io)

软件即服务 (SaaS) 不适合应用程序或程序构建。 相反,它允许您租用应用程序,这样您就不需要在内部构建它们。 有数以千计的 SaaS 选项可用——从数据分析工具到 WordPress SEO 插件。

市场规模、份额和领先供应商

FaaS 的发展反映了组织开发新项目的方式的整体转变。

在过去的几十年中,开发人员将大型系统创建为多年项目。 如今,许多组织都倾向于采用开发运营 (DevOps) 方法进行开发。 DevOps 优先考虑不断开发和一点一点地改进程序。

一张展示 DevOps 工作原理的图片
DevOps 的工作原理(来源: Atlassian)

同样,组织越来越多地使用云服务来使事情变得更安全、更高效。 据甲骨文称,组织很快将在云中存储 600 倍以上的敏感数据。

您可以从 Statista 的 7,164 名高管收集的数据中看到这一趋势。 从 2019 年到 2021 年,单一公共或私有云服务的使用下降,大多数组织采用了多种云解决方案。

显示云技术使用的图表
云技术的使用(来源: Statista)

云计算方面的投资也在增长。 Statista 对全球数百家大型企业的另一项研究表明,83% 的受访公司每年在公共云计算上的投资超过 120 万美元。 这个数字高于 2019 年的 50%。

人们正在转向 FaaS,因为它具有前瞻性和可扩展性。 同样,它提供了更高的生产力和性能、更快的应用程序上市时间以及更经济高效的方式来制作新程序。

这些优势吸引了许多行业,包括银行业组织(或“BFSI”组织)、消费品和零售、娱乐、电信、信息和技术支持服务 (ITES)、医疗保健和制造业。 以下是每个行业对 FaaS 市场的贡献:

显示哪些行业使用 Faas 的图像
哪些行业使用 FaaS(来源: MarketsandMarkets)

与 SaaS 不同,组织没有成千上万的 FaaS 供应商可供选择。 绝大多数 FaaS 使用主要参与者提供的解决方案,包括 AWS Lambda、Azure Functions、IBM Cloud Functions、Google Cloud Functions、阿里云和 Cloudflare Workers。

我们现在将介绍这些提供程序中的每一个。

AWS 拉姆达

AWS Lambda 于 2014 年 11 月由 Amazon 推出,是一种非常流行的 FaaS 工具。 截至 2021 年第四季度,33% 的云用户使用 AWS 服务。

AWS Lambda 主页
AWS 拉姆达

AWS Lambda 为许多编程语言提供原生支持,包括 Node.js、C#、Python、Ruby、Go、Java 和 Powershell。 正如我们在“什么是功能即服务 (FaaS)?”中提到的那样Alexa 将 AWS Lambda 用于技能。

特点和功能:

  • 连接到其他 AWS 工具
  • 使用 Amazon CloudWatch 监控程序的性能
  • 超过 200 种与 SaaS 工具的集成
  • 您可以部署 docker 容器(AWS 在 2020 年 12 月推出了此功能)

优点:

  • 您可以使用 Lambda API 或 Amazon API 网关构建自己的后端
  • 您可以将函数部署为容器映像
  • 您可以使用 Amazon RDS 代理连接到关系数据库
  • 您可以选择为每个功能分配多少内存

缺点:

  • 如果您还没有使用 AWS,那么设置它需要花费大量时间和精力

微软 Azure 函数

Microsoft Azure Functions 是 Microsoft Azure 的一项功能,Microsoft 于 2010 年 2 月首次推出“Windows Azure”。Azure Functions 允许您通过 FaaS 执行事件驱动的代码。 截至 2021 年第四季度,21% 的云用户使用 Azure。

Microsoft Azure 函数主页
微软 Azure 函数

特点和功能:

  • 您可以将您的函数连接到 Azure 逻辑应用中的 250 多个连接器
  • 支持 JavaScript、C#、F#、Powershell、PHP、Python 和 Java
  • 为新用户提供许多教程
  • 帮助您通过 Azure Application Insights 分析您的程序

优点:

  • Azure Functions 使用集成的编程模型
  • 非常适合使用 DevOps 的团队
  • 多个计划可用

缺点:

  • Azure Functions 不支持 Node.js 或 Ruby

谷歌云函数

Google Cloud 是仅次于 AWS 和 Azure 的第三大最受欢迎的云计算解决方案。 目前市场占有率为10%。 Google Cloud Functions 是 Google Cloud 的一项 FaaS 功能,该服务提供 100 多种产品以供广泛使用。

谷歌云功能
谷歌云

特点和功能:

  • 调试和日志记录集成到 Google Cloud Functions(通过 CloudTrace 和 CloudDebugger)
  • 您使用来自 Google Assistant、Google Cloud、Firebase 或任何使用 HTTP 的应用程序的触发器
  • Google Cloud Functions 与许多 Google 合作伙伴集成

优点:

  • 那些想要多云或混合功能的人可以使用它
  • 它是开源的,因此您可以根据需要轻松迁移到另一个 FaaS 平台
  • 非常容易使用
  • Google 为新用户提供了许多免费资源

缺点:

  • Google Cloud Function 基于容器的服务不如其他 FaaS 提供商先进

IBM 云

IBM Cloud 来自 IBM 于 2013 年 6 月收购的公共云平台 SoftLayer。IBM 将该平台转变为 Bluemix,并于 2014 年 7 月将其作为 PaaS 工具推出。此后,IBM 将该服务重新命名为 IBM Cloud,并将其功能扩展到FaaS。

因停机时间和 WordPress 问题而苦苦挣扎? Kinsta 是旨在节省您时间的托管解决方案! 查看我们的功能
IBM Cloud 主页
IBM 云

截至 2021 年第四季度,4% 的云用户使用过 IBM Cloud。 它在 Apache OpenWhisk 生态系统上运行。

特点和功能:

  • 您可以搜索视频内容
  • 您可以通过 IBM Watson API 将您的程序连接到其他程序
  • IBM 为一些常见任务提供了预构建的功能
  • 支持 Node.js、Python、Swift、PHP、Go、Ruby、Java 和 .NET Core

优点:

  • 非常适合构建移动应用程序
  • 易于学习使用
  • 通过 IBM Cloud Monitoring 监控您的应用程序

缺点:

  • 将函数的内存时间限制为 10 分钟或 2048 MB

阿里云

阿里云并不像其他云计算选项那样广为人知,但它仍然拥有 6% 的可观市场份额。 阿里云于 2008 年由阿里巴巴推出,面向在线业务和使用阿里巴巴其他服务的用户。

阿里云首页
阿里云

FaaS 是阿里云的产品之一,此外还有内容交付网络 (CDN)、数据存储和大数据处理。

特点和功能:

  • 与阿里巴巴的其他计算服务集成
  • 灾难证明,因为阿里巴巴在多个区域的集群上托管功能
  • 视频转码
  • 人工智能推理
  • 支持 Node.js、Python、Java、PHP 和 C#

优点:

  • 为不需要运行太多代码的人提供免费选项
  • 高度可扩展
  • 您可以使用多种类型的触发器

缺点:

  • 将功能从阿里巴巴转移到另一个 FaaS 提供商可能很困难

Cloudflare 工作者

Cloudflare Workers 由 Cloudflare 运行,是一个 FaaS 系统,适合新开发人员和那些希望几乎立即运行代码的人。 Cloudflare Workers 提供免费计划和可扩展的定价。

Cloudflare Workers 主页
Cloudflare 工作者

特点和功能:

  • 支持 JavaScript、C++、Rust 和 C
  • 您可以将图像、PDF 和其他文件存储在 Cloudflare Workers 上以部署为静态资产
  • 灾难证明,因为 Cloudflare Workers 使用全球服务器网络
  • 与其他 Cloudflare 产品集成

优点:

  • 它比许多其他 FaaS 选项便宜
  • 新开发人员很容易学会使用
  • 你可以很快开始
  • Cloudflare 提供详细的教程和资源,可帮助您构建应用程序

缺点:

  • Cloudflare Workers 不如其他选项强大,更适合那些拥有小规模项目的人

Faas 最佳实践

是的,FaaS 是一种技术,但它也是开发人员在进行程序和应用程序开发时需要采用的一种思维方式。

要充分利用 FaaS,请遵循以下最佳实践:

  • 记住 FaaS 的局限性。 FaaS 并不适合所有程序,如果您尝试使用 FaaS 创建一个非 FaaS 友好的程序,您将花费时间、精力和金钱。
  • 仅在 FaaS 上运行单动作功能。 如果您运行具有多个操作的函数,则会破坏 FaaS 函数在隔离环境中工作的最佳状态。这种中断会减慢您的应用程序并降低效率。
  • 不要运行具有依赖关系的函数。 依赖关系会在以后产生错误和可伸缩性问题。
  • 仔细观察你的加载时间。 您的加载时间来自需要大量内存的库或函数。 较长的加载时间会减慢您的程序并最终让用户感到沮丧。
  • 减少您使用的关系数据库管理系统 (RDBMS) 连接的数量。 这些连接将增加功能工作所需的时间,并在您的程序中引入故障点。

您需要 FaaS 吗?

FaaS 对某些人来说是一种创新和改变游戏规则的技术,但它并不适合所有人。

从 FaaS 中获得最大收益的组织愿意使用微服务架构构建程序,其中每个功能只做一件事。 这些函数应该独立工作——如果它们相互依赖,你会遇到可伸缩性问题。

如果你想构建一个具有单体架构或功能相互借鉴的应用程序,FaaS 可能无法很好地工作。 同样,如果您不想长期致力于单一供应商,FaaS 可能是一个短视的选择。

当然,您仍然可以在没有 FaaS 的情况下利用云技术。 例如,您可以投资 PaaS 或 IaaS,将应用程序的一些功能外包给云。 此选项将为您提供云计算的一些成本和效率优势,但您无需在 FaaS 模型的限制内构建程序。

或者,如果您不需要构建一个高度利基或专业化的程序,请考虑投资 SaaS 工具。 一些 SaaS 工具甚至是开源的,因此您可以根据需要调整现有工具。

到 2026 年,FaaS 市场预计将增长到 240 亿美元……所以现在正是了解这个市场的最佳时机点击推

概括

FaaS 不是技术问题或新趋势。 这是一种可扩展的技术,您应该期望在未来十年内看到更多。

解释 FaaS 有时似乎很困难,但 FaaS 只是一种服务,它允许开发人员使用由其他人维护的基础设施编写和运行代码。 您经常使用的许多服务(例如 Alexa)都使用 FaaS。 常见的 FaaS 供应商包括 IBM Cloud Functions、AWS Lambda、阿里云、Google Cloud Functions 和 Microsoft Azure Functions。

虽然 FaaS 对某些企业非常有效,但它并不适合所有人。 FaaS 最适合运行执行单一功能的隔离、无状态代码。

我们想把麦克风(或键盘)交给你。 您如何在您的业务中使用 FaaS,您对第一次探索该技术的其他人有什么建议吗? 请在下面的评论中告诉我们。