什么是 FaaS(功能即服务)?
FaaS 使云应用程序开发人员可以更轻松地运行和管理微服务应用程序。
订阅 IBM 时事通讯
带有相互连接几何形状的黑色和蓝色背景
什么是 FaaS?

FaaS(即功能即服务)是一种云计算服务,允许客户执行代码来响应事件,而无需管理通常与构建和启动微服务应用程序相关的复杂基础架构。

在互联网上托管软件应用程序通常需要配置和管理虚拟服务器或物理服务器,并管理操作系统和网络服务器托管流程。通过 FaaS,物理硬件、虚拟机操作系统和 Web 服务器软件管理都由云服务提供商自动处理。这样,开发人员就可以只关注应用程序代码中的各个功能。

 

FaaS 与无服务器

无服务器和功能即服务 (FaaS) 经常被混为一谈,但事实是 FaaS 实际上是无服务器的子集。

无服务器专注于所有服务类别,无论是计算、存储、数据库、消息传递还是 API 网关等。其中服务器的配置、管理和计费对最终用户不可见。

另一方面,FaaS 可能是无服务器架构中最核心的技术,它专注于事件驱动的计算范式,即应用代码或容器仅在响应事件或请求时运行。

FaaS 的好处

如果您希望高效、低成本地将应用程序迁移到云中,那么 FaaS 就是一个非常有价值的工具。以下是您将享受到的一些好处:

  • 更多地关注代码,而不是基础架构:借助 FaaS,您可以将服务器划分为可自动且独立扩展的功能,因此您无需管理基础架构。这使您可以专注于应用程序代码,并可以大大缩短上市时间。

  • 使用资源时只需支付使用费:使用 FaaS,您只需在发生操作时付费。当操作完成后,一切都会停止,没有代码运行,没有服务器空闲,也不会产生任何成本。因此,FaaS 具有成本效益,特别是对于动态工作负载或计划性任务。FaaS 还能为高负载场景提供出色的总体拥有成本。

  • 自动扩展或缩减:通过 FaaS,功能可以根据需要自动、独立、即时地扩展。当需求下降时,FaaS 会自动缩减规模。

  • 获得强大的云基础架构的所有优势:FaaS 提供固有的高可用性,因为它分布在每个地理区域的多个可用区,而且可以在任意数量的区域内部署,无需增加成本。
FaaS 原则和最佳实践

您可以遵循多种最佳实践,使 FaaS 的使用更易于部署且更有效:

  • 让每个功能只执行一项操作:FaaS 功能应设计为针对事件执行单项工作。使您的代码范围有限、高效且轻量级,以便功能快速加载和执行。

  • 不要让功能调用其他功能:FaaS 的价值在于隔离功能。太多的功能会增加您的成本并消除功能隔离的价值。

  • 在功能中使用尽可能少的库:使用太多库会减慢功能速度并使其难以扩展。
FaaS 用例

由于 FaaS 能够轻松隔离和扩展事务,因此它非常适合大容量和高度并行的工作负载。它还可用于创建后端系统或用于数据处理、格式转换、编码或数据聚合等活动。

FaaS 也是 Web 应用程序、后端、数据/流处理或创建在线聊天机器人或物联网设备后端的良好工具。FaaS 可以帮助您管理和使用第三方服务。例如,如果您正在考虑开发 Android 应用程序,则可以采用 FaaS 方法来控制成本。由于仅当您的应用程序连接到云以执行批处理等特定功能时才需要付费,因此成本可能比使用传统方法低得多。

FaaS 还能显著提高计算性能。例如,两名学生最近与 IBM 工程师合作,探索如何利用 IBM Cloud Functions 进行蒙特卡洛模拟(一种数学方法,用于估计某些难以预测事件的未来结果),以估计股票价格。蒙特卡洛模拟被认为是重要的高性能计算工作负载。Monte Carlo 和 IBM Cloud Functions 的结合使团队能够大规模运行计算,并使他们能够专注于业务逻辑。使用 FaaS,该团队在大约 90 秒内完成了整个蒙特卡洛模拟,并有 1,000 个并行调用。相比之下,在具有四个 CPU 核心的笔记本电脑上运行相同的流程需要 247 分钟,并且 CPU 利用率几乎为 100%。

要查看 FaaS 用例的更多示例,请查看“IBM Cloud Functions 提供的主要优势概述”。

FaaS 与 PaaS、容器和虚拟机

FaaS、PaaS(平台即服务)容器和虚拟机 (VM) 都在无服务器生态系统中发挥着至关重要的作用。由于 FaaS 是无服务器堆栈中最核心、最具定义性的元素,因此有必要探讨 FaaS 与当今市场上其他常见计算模型在关键属性方面的不同之处:

  • 配置时间:毫秒,而其他模型则为分钟和小时。

  • 持续管理:无,相比之下,PaaS、容器和虚拟机的难度分别从易到难。

  • 弹性伸缩:与其他模型相比,每个操作总是即时且固有缩放,而其他模型则提供自动但速度较慢的缩放,需要对自动缩放规则进行仔细调整。

  • 容量规划:与需要混合使用一些自动伸缩和一些容量规划的其他模型相比,不需要进行容量规划。

  • 持续连接和状态:持久连接和状态的能力有限,必须保留在外部服务/资源中。其他模型可以利用 http,长时间保持打开的套接字或连接,并在调用之间将状态存储在内存中。

  • 维护:所有维护均由 FaaS 提供商管理。PaaS 也是如此;容器和虚拟机需要大量维护,包括更新/管理操作系统、容器映像、连接等。

  • 高可用性 (HA) 和灾难恢复 (DR)同样,HA 是 FaaS 模型中固有的,无需额外的工作或成本。其他模型需要额外的成本和管理工作。对于虚拟机和容器来说,基础架构都可以自动重启。

  • 资源利用:资源永远不会闲置,它们仅根据请求才被调用。所有其他模型都或多或少地存在容量空闲情况。

  • 资源限制:FaaS 是唯一在代码大小、并发激活、内存、运行时长等方面有资源限制的模型。

  • 收费精细粒度和计费方式:每块 100 毫秒,而其他模型则按小时(有时甚至是分钟)计费。
Kubernetes/Knative 和 FaaS

Kubernetes 和 Knative 是 FaaS 背后“管道”的一种实现。Kubernetes 是一款开源的容器编排工具,对于云应用程序的管理至关重要。Knative 允许您在 Kubernetes 集群中运行无服务器。

Knative 和 Kubernetes 的结合意味着您可以利用 Kubernetes 功能(例如监控、安全性、日志记录和身份验证),并将它们与 Knative 的优势(例如自动化容器构建、完全可移植性和跨混合环境工作)相结合。

该技术的创建者认为,开发人员在构建云应用程序时不必在无服务器和容器之间进行选择。目标是通过无服务器的强大扩展和按需访问来增强容器的可用性和一致性。

观看视频,了解有关 Knative 的更多信息:

相关解决方案
IBM Cloud Code Engine

将容器映像、批处理作业或源代码作为无服务器工作负载运行,无需调整大小、部署、联网或扩展。

探索 IBM Cloud Code Engine
IBM Cloud Functions

使用此功能即服务 (FaaS) 编程平台开发可按需扩展执行的轻量级代码。

探索 IBM Cloud Functions
资源 什么是无服务器?

无服务器是一种云应用程序开发和执行模型,允许开发人员构建和运行应用程序代码,而无需配置或管理服务器或后端基础设施。

什么是容器?

容器是软件的可执行单元,将应用程序代码及其库依赖关系打包在一起,并且可以在任何地方运行,无论是在桌面、传统 IT 还是云上。

什么是 PaaS?

PaaS(即平台即服务)为开发、运行和管理应用程序提供了完整、灵活且经济高效的云平台。

采取下一步行动

IBM Cloud® Code Engine 是一个完全托管的无服务器平台,可让您专注于编写代码,而不是管理基础架构。您只需提供容器映像、批处理作业或源代码,由 IBM Cloud Code Engine 为您管理和保护底层基础架构。您无需自行调整、部署或扩展容器集群,也不需要具备联网技能。

探索 IBM Cloud Code Engine