您可能听说过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) 是一种云计算形式,可帮助开发人员更好地工作,无需他们维护应用程序基础架构。当开发人员利用FaaS时,他们使用FaaS平台为他们构建、运行和监督应用程序包。
在这一点上,您可能会认为FaaS听起来像无服务器计算 ——它确实如此。无服务器计算允许开发人员将管理数据库、API网关、存储、消息传递和其他基础设施外包给第三方提供商。FaaS 是一种无服务器计算。
无服务器计算的工作原理(来源: iviewlabs)
尽管这可能是您第一次阅读有关FaaS的内容,但您可能已经在野外遇到过它。许多流行的程序和应用程序都使用FaaS——比如亚马逊的Alexa。
如果您熟悉Alexa,就会知道您可以通过构建“技能”来扩展Alexa的函数。与应用程序一样,技能让Alexa在其基本配置之外做事。诸如检查应用中的通知、开始新聊天或播放自定义音频之类的事情。
亚马逊通过AWS Lambda运行Alexa的所有技能。构建新技能时,您将其创建为通过AWS Lambda部署的函数。AWS Lambda然后为您运行该函数并处理安全和数据库管理等基础设施问题。
那么,FaaS是如何一步一步工作的呢?让我们接下来介绍一下。
FaaS是如何工作的?
要了解FaaS,您需要了解两个关键术语:
- “单体架构” = 独立于其他应用程序运行的独立应用程序。这些应用程序在内部管理用户界面、业务函数和数据界面。单体架构代码依赖于其他代码片段。
- “微服务架构” =处理一些小任务的一段代码。这些微服务是独立的(尽管它们一起构成了整个应用程序)。
下图显示了单体架构和微服务架构的不同之处:
单体架构与微服务架构(来源: 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的代码 |
原文地址:https://www.wbolt.com/function-as-a-service.html