FaaS(功能即服务)
黑蓝背景
什么是 FaaS(功能即服务)?

FaaS 简介 - 了解一种云计算服务如何让云应用开发人员更轻松地运行和管理微服务应用。

FaaS(功能即服务)是一种云计算服务类型,使您可以执行代码以响应事件,而无需通常与构建和启动微服务应用有关的复杂基础架构。

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

 

特色产品

IBM Cloud Functions


FaaS 与无服务器之对比

无服务器和功能即服务 (FaaS)  通常彼此结合,但事实是,FaaS 实际上是无服务器的子集。 无服务器主要关注于任何服务类别,包括计算、存储、数据库、消息传递、API 网关等 ,服务器的配置、管理和计费对于最终用户是不可见的。 另一方面,FaaS 可能是无服务器架构中最核心的技术,它主要关注于事件驱动的计算范例 - 应用代码(即容器)只为了响应事件或请求才运行。


FaaS 的优点

如果您希望经济有效地 将应用迁移到云,FaaS 无疑是一种高价值的工具。 以下是 FaaS 的一些优点:

  • 更关注于代码,而非基础架构: 使用 FaaS,您可以将服务器划分为可自动独立扩展的功能,因此无需管理基础架构。 这样,您就能够专注于应用代码,显著提高产品面市速度。
  • 仅为所使用的资源付费,仅在使用时付费: 通过使用 FaaS,您仅在发生行动时付费。 完成操作后,所有资源都停止 - 没有代码运行,没有服务器空闲,不产生任何费用。 因此,FaaS 非常经济实惠,尤其对于动态工作负载或安排的任务而言。 对于高负载场景,FaaS 也有助于显著降低总体拥有成本。
  • 自动缩放: 借助 FaaS,可按需自动独立且即时地缩放功能。 当需求下降时,FaaS 自动收缩。
  • 获得强大的云基础架构的全部优点: FaaS 具有内在的高可用性,因为它分布在每个地理区域的多个可用性专区中,可部署到任意数量的区域,而不会增加成本。

原则和最佳实践

以下最佳实践有助于更轻松、更高效地使用 FaaS:

  • 每个功能仅执行一项行动: FaaS 功能旨在执行一项工作,以响应一个事件。 确保代码范围有限、高效而且轻量,以便能够快速加载并执行功能。
  • 不要让功能调用其他功能: FaaS 的价值在于功能隔离。 功能过多会增加成本,抵消功能隔离的价值。
  • 在功能中使用尽可能少的库: 使用太多的库可能会影响功能的性能,导致其难以扩展。

客户案例

由于 FaaS 能够轻松隔离和缩放事务,因此是高容量和困难的并行工作负载的理想之选。 它还可用于创建后端系统,或用于数据处理、格式转换、编码或数据汇总之类的活动。

FaaS 也是用于 Web 应用、后端、数据/流处理或为 IoT 设备创建在线聊天或后端的理想工具。 FaaS 可帮助管理和使用第三方服务。 例如,如果你正在考虑  Android 应用开发,则可采用 FaaS 方法,以确保成本可控。 由于仅当应用连接到云以执行批处理之类的特定功能时才收取费用,因此成本显著低于传统方法。

FaaS 还有助于显著提高计算性能。 例如,两名学生最近与 IBM 工程师一起探索如何 利用 IBM Cloud Functions 进行 Monte Carlo 模拟 (用于估算难以预测的特点事件未来结果的数学方法),估算库存的价格。 Monte Carlo 模拟被认为是重要的高性能计算工作负载。 Monte Carlo 与  IBM Cloud Functions  的组合支持该团队大规模地运行计算,使他们能够将关注点放在业务逻辑上。 通过使用 FaaS,该团队用 1000 个并发调用在大约 90 秒内完成了整个 Monte Carlo 模拟。 作为比较,在具有 4 个 CPU 核心的一台笔记本电脑上运行相同的流量,花了 247 分和几乎 100% 的 CPU 使用率。

要了解有关 FaaS 用例的更多示例,请查看“IBM Cloud Functions 提供的主要优点之回顾”。


FaaS 与 PaaS、容器和 VM 之比较

FaaS、 平台即服务 (PaaS)、 容器和 虚拟机 (VM)  都在无服务器生态系统中发挥关键的作用。 由于 FaaS 是无服务器组合中最核心最重要的要素,因此值得探讨一下在以下主要属性方面,FaaS 与当今市场中常见的其他计算模型的不同之处:

  • 配置时间: FaaS 的配置时间以毫秒计,而其他模型则需数分钟甚至数小时。
  • 日常管理: FaaS 无需日常管理,而 PaaS、容器和虚拟机的管理则呈现由易到难的顺序。
  • 弹性缩放: FaaS 的每个操作始终能够即时而自然地缩放;而其他模型则提供自动但缓慢的缩放,需要仔细调整自动缩放的规则。
  • 容量规划: FaaS 不需要此功能;其他模型则需要结合使用某种自动缩放和某种容量规划。
  • 持久连接与状态: Faas 只有有限的持久连接能力,状态必须保存在外部服务/资源中。 而其他模型可利用 http,长时间保持开放的套接字或连接,并且可在内存中保存调用之间的状态。
  • 维护: 所有维护都由 FaaS 提供商负责管理。 PaaS 也是如此;容器和 VM 需要大量维护工作,包括更新/管理操作系统、容器映像、连接等。
  • 高可用性 (HA) 和 灾难恢复 (DR) 同样,高可用性是 FaaS 模型固有的优点,无需额外的工作或成本。 其他模型需要额外的成本和管理工作。 对于 VM 和容器,基础架构可自动重新启动。
  • 资源使用率: FaaS 的资源从不空闲,仅当请求时才调用。 所有其他模型至少具有一定程度的空闲容量。
  • 资源限制: FaaS 是唯一在代码规模、并发激活数、内存大小和运行时间长度等方面具有 资源限制 的模型。
  • 收费粒度和记帐: FaaS 按 100 毫秒为单位收费,其他模型则按小时(有时也按分钟)收费。

Kubernetes/Knative 和 FaaS

Kubernetes 和 Knative 是 FaaS 背后"管道"的一种实现方式。 Kubernetes  是一种开源容器编排工具,对于管理云应用至关重要。 Knative  支持在 Kubernetes 集群中运行无服务器。

Knative 和 Kubernetes 的组合有助于充分发挥 Kubernetes 功能的优势,如监视、安全性、日志记录和认证,并且能够将这些优势与 Knative 的优点(如容器自动构建、完全可移植性以及在 多个混合环境中工作)结合起来。

这项技术的创建者认为,在构建云应用时,开发人员不必在无服务器和容器之间做出选择。 目标是利用无服务器的强大缩放和按需访问功能,增强容器的可用性和一致性。

视频“什么是 Knative?”提供了更多信息。


FaaS 与 IBM

IBM Cloud Functions 是 IBM 的 FaaS 产品。 IBM 一直与金融、汽车、保险、制造等各行各业的客户合作,在 IBM Cloud Functions 上运行生产工作负载。 有超过一千万个日常活跃用户的 ESPN Fantasy Football 采用 IBM Cloud Functions 支持其统计仪表板;The Weather Underground(属于 The Weather Channel)使用 Cloud Functions 渲染其所有的雷达地图。 博客帖子“IBM Cloud Functions 提供的主要优点之回顾”中描述了这些用例以及其他用例。

IBM Cloud Functions 基于 Apache OpenWhisk。 OpenWhisk 的核心是基于 Apache Foundation 准则的一个开源项目,因此任何人都可以将其操作代码作为构建块贡献给代码库。 这意味着 OpenWhisk 在不断发展壮大。 OpenWhisk 有助于加速应用开发,使您能够快速构建具有操作序列的应用。 FaaS 产品还在云功能性能详细信息方面提供更出色的可视性

IBM Cloud Functions 还能够在"事件-触发器-操作"工作流程中访问 IBM Watson API 等认知服务。 而且您只需为实际使用的资源付费。 仅当您在 Cloud Functions 上运行更多负载时,成本才会增加 - 计费基于执行功能所需的时间和内存。

通过 IBM Cloud Options 课程(如“部署功能即服务和 IBM Cloud Functions”),以及基于 IBM Cloud 专业开发人员角色的培训和认证中包含的各种其他课程,培养技能。

观看这个视频,了解有关 IBM Cloud Functions 如何工作的更多信息 :


相关解决方案

IBM Cloud Functions

了解 IBM Cloud Functions,这是一种基于 Apache OpenWhisk 的多语言功能即服务 (FaaS) 编程平台。