您可能听说过SaaS,您可能听说过PaaS和IaaS,但您听说过函数即服务 (FaaS) 吗?
FaaS市场正在快速增长。根据Allied Market Research的数据,2018年市场价值30.1亿美元 。预计到2026年,这一数字将增长到240亿美元——这意味着该行业将从2020年到2026年以29.7%的复合年增长率 (CAGR) 增长。
看看这种增长,可以肯定地说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,您需要了解两个关键术语:
下图显示了单体架构和微服务架构的不同之处:
单体架构与微服务架构(来源: BMC)
当您执行或更新函数时,您可以看到微服务和单体架构在实践中的主要区别。使用单体架构,整个程序立即执行函数(例如更新应用程序)。使用微服务架构,您可以独立执行微服务函数。
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通常意味着长期致力于单一供应商。在构建程序时,您会使用提供商的系统和要求。自然,更换供应商可能需要您重做一些工作并可能中断您的函数。
优点 | 缺点 |
更快地部署代码配置需要几毫秒 任何语言的代码 自动灾难恢复 (DR) 成本效益 可扩展 |
失去对服务器的控制调试更难 测试需要更长的时间 你被锁定在你的供应商 您必须编写适合FaaS的代码 |
既然您对FaaS有了更多了解,您可能想知道它与其他任何即服务 (XaaS) 选项(如IaaS、SaaS和PaaS)之间的关系。
IaaS、PaaS和FaaS服务具有相似的目的:它们帮助公司更便宜、更有效地管理应用程序。但是,每个选项都提供不同的东西。
基础设施即服务 (IaaS) 允许您出租计算能力(如RAM和CPU)。使用IaaS,您仍然需要在内部管理一些应用程序函数(如安全性)。
平台即服务 (PaaS) 允许您出租硬件和软件工具来构建您的应用程序。一个常见的例子是AWS Elastic Beanstalk。
与IaaS和PaaS不同,FaaS允许您租用空间来独立运行函数。此函数使其更具可扩展性。
以下是这三者如何不同工作的简短摘要:
FaaS与IaaS和PaaS有何不同(来源: thenewstack.io)
软件即服务 (SaaS) 不适合应用程序或程序构建。相反,它允许您租用应用程序,这样您就不需要在内部构建它们。有数以千计的SaaS选项可用——从数据分析工具到WordPress SEO插件。
FaaS的发展反映了组织开发新项目的方式的整体转变。
在过去的几十年中,开发人员将大型系统创建为多年项目。如今,许多组织都倾向于采用开发运营 (DevOps) 方法进行开发。DevOps优先考虑不断开发和一点一点地改进程序。
DevOps的工作原理(来源: Atlassian)
同样,组织越来越多地使用云服务来使事情变得更安全、更高效。据甲骨文称,组织很快将 在云中存储600倍以上的敏感数据。
您可以从Statista的7,164名高管收集的数据中看到这一趋势。从2019年到2021年,单一公共或私有云服务的使用下降,大多数组织采用了多种云解决方案。
云技术的使用(来源: Statista)
云计算方面的投资也在增长。Statista对全球数百家大型企业的另一项研究表明,83% 的受访公司每年在公共云计算上的投资超过120万美元。这个数字高于2019年的50%。
人们正在转向FaaS,因为它具有前瞻性和可扩展性。同样,它提供了更高的生产力和性能、更快的应用程序上市时间以及更经济高效的方式来制作新程序。
这些优势吸引了许多行业,包括银行业组织(或“BFSI”组织)、消费品和零售、娱乐、电信、信息和技术支持服务 (ITES)、医疗保健和制造业。以下是每个行业对FaaS市场的贡献:
哪些行业使用FaaS(来源: MarketsandMarkets)
与SaaS不同,组织没有成千上万的FaaS供应商可供选择。绝大多数FaaS使用主要参与者提供的解决方案,包括AWS Lambda、Azure Functions、IBM Cloud Functions、Google Cloud Functions、阿里云和Cloudflare Workers。
我们现在将介绍这些提供程序中的每一个。
AWS Lambda于2014年11月由Amazon推出,是一种非常流行的FaaS工具。截至2021年第四季度,33%的云用户使用AWS服务。
AWS Lambda
AWS Lambda为许多编程语言提供原生支持,包括Node.js、C#、Python、Ruby、Go、Java和Powershell。正如我们在“什么是功能即服务 (FaaS)?”中提到的那样 Alexa将AWS Lambda用于技能。
特点和功能:
优点:
缺点:
Microsoft Azure Functions是Microsoft Azure的一项功能,Microsoft于2010年2月首次推出“Windows Azure”。Azure Functions允许您通过FaaS执行事件驱动的代码。截至2021年第四季度,21%的云用户使用Azure。
Microsoft Azure Functions
特点和功能:
优点:
缺点:
Google Cloud是仅次于AWS和Azure的第三大最受欢迎的云计算解决方案。目前市场占有率为10%。Google Cloud Functions是Google Cloud的一项FaaS函数,该服务提供100多种产品以供广泛使用。
Google Cloud
特点和功能:
优点:
缺点:
IBM Cloud来自IBM在2013年6月购买的公共云平台SoftLayer。IBM将该平台转变为Bluemix,并于2014年7月将其作为PaaS工具推出。此后,IBM将该服务重新命名为IBM Cloud,并将其功能扩展到FaaS。
IBM Cloud
截至2021年第四季度,4%的云用户使用过IBM Cloud。它在Apache OpenWhisk生态系统上运行。
特点和功能:
优点:
缺点:
阿里云并不像其他云计算选项那样广为人知,但它仍然拥有6%的可观市场份额。阿里云由阿里巴巴于2008年推出,面向在线业务和使用阿里巴巴其他服务的用户。
阿里云
FaaS是阿里云的产品之一,此外还有内容交付网络 (CDN)、数据存储和大数据处理。
特点和功能:
优点:
缺点:
Cloudflare Workers由Cloudflare运行,是一个FaaS系统,适合新开发人员和希望几乎立即运行代码的人员。Cloudflare Workers提供免费计划和可扩展的定价。
Cloudflare Workers
特点和功能:
优点:
缺点:
是的,FaaS是一种技术,但它也是开发人员在进行程序和应用程序开发时需要采用的一种思维方式。
要充分利用FaaS,请遵循以下最佳实践:
FaaS对某些人来说是一种创新和改变游戏规则的技术,但它并不适合所有人。
从FaaS中获得最大收益的组织愿意使用微服务架构构建程序,其中每个函数只做一件事。这些函数应该独立工作——如果它们相互依赖,你会遇到可伸缩性问题。
如果您想构建一个具有单体架构或函数相互借鉴的应用程序,FaaS可能无法正常工作。同样,如果您不想长期致力于单一供应商,FaaS可能是一个短视的选择。
当然,您仍然可以在没有FaaS的情况下利用云技术。例如,您可以投资PaaS或IaaS,将应用程序的一些函数外包给云。此选项将为您提供云计算的一些成本和效率优势,但您无需在FaaS模型的限制内构建程序。
或者,如果您不需要构建一个高度利基或专业化的程序,请考虑投资SaaS工具。一些SaaS工具甚至是开源的,因此您可以根据需要调整现有工具。
FaaS不是技术问题或新趋势。这是一种可扩展的技术,您应该期望在未来十年内看到更多。
解释FaaS有时似乎很困难,但FaaS只是一种服务,它允许开发人员使用由其他人维护的基础设施编写和运行代码。您经常使用的许多服务(例如 Alexa)都使用FaaS。常见的FaaS供应商包括IBM Cloud Functions、AWS Lambda、阿里云、Google Cloud Functions和Microsoft Azure Functions。
虽然FaaS对某些企业非常有效,但它并不适合所有人。FaaS最适合运行执行单一函数的隔离、无状态代码。