科普帖:什么是函数即服务 (FaaS)?

您可能听说过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平台为他们构建、运行和监督应用程序包。

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

无服务器计算的工作原理

无服务器计算的工作原理(来源: iviewlabs)

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

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

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

那么,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 Lambda

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

AWS Lambda

AWS Lambda

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,那么设置它需要花费大量时间和精力
Microsoft Azure Functions

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

Microsoft Azure Functions

Microsoft Azure Functions

特点和功能:

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

优点:

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

缺点:

  • Azure Functions不支持Node.js或Ruby
Google Cloud Functions

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

Google Cloud

Google Cloud

特点和功能:

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

优点:

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

缺点:

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

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

IBM Cloud

IBM Cloud

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

特点和功能:

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

优点:

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

缺点:

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

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

阿里云

阿里云

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

特点和功能:

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

优点:

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

缺点:

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

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

Cloudflare Workers

Cloudflare Workers

特点和功能:

  • 支持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工具甚至是开源的,因此您可以根据需要调整现有工具。

小结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/286040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gitee创建仓库

描述 本文章记录了怎么在gitee上创建项目,以及使用vscode提代码到远程呢个仓库,如何创建一个新分支,并将新分支提交到远程仓库。 1、创建远程仓库 在创建远程仓库之前要先进行ssh密钥的设置 (1)打开黑窗口&#xff…

SpringBoot整合多数据源,并支持动态新增与切换

SpringBoot整合多数据源,并支持动态新增与切换 一、概述 在项目的开发过程中,遇到了需要从数据库中动态查询新的数据源信息并切换到该数据源做相应的查询操作,这样就产生了动态切换数据源的场景。为了能够灵活地指定具体的数据库&#xff0…

图解Kafka Producer常用性能优化配置参数

1 基本参数 bootstrap.servers:Kafka broker服务器地址列表,,分开,可不必写全,Kafka内部有自动感知Kafka broker的机制 client.dns.lookup:客户端寻找bootstrap地址的方式,支持两种方式: resol…

现在学鸿蒙开发有前途吗?能找到工作吗?

鸿蒙开发前景肯定是有的,我们可以从市场的情况来分析。 1、鸿蒙开发不兼容安卓 23年9月举办的华为新品发布会中,华为方面宣布开始启用原生鸿蒙应用,并不再提供安卓代码的兼容性。涵盖了资讯、社交、工具、金融、生活、美食、游戏等多品类的…

多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

【Bootstrap学习 day8】

加载器 使用Bootstrap读取图标以表示元件加载状态&#xff0c;这些读取图标完全使用HTML,CSS。要创建spinner/加载器&#xff0c;可以使用.spinner-border类 <div class"spinner-border"></div>可以使用文本颜色类设置不同的颜色&#xff1a; <div …

关于Github部分下载的方法

一、问题 在Github中&#xff0c;我需要下载部分文件&#xff0c;而github只有下载最原始文件夹和单独文件的功能。 比如我想下载头四个文件&#xff0c;难以操作。 二、方法 推荐使用谷歌浏览器&#xff0c;进入扩展程序界面&#xff1a; 在应用商店获取GitZip for github…

Python数据科学应用从入门到精通--Python读取、合并SPSS数据文件

在很多情况下&#xff0c;我们需要调用SPSS软件产生的数据&#xff0c;下面通过示例来进行讲解。首先需要将本书提供的数据文件存储在安装spyder-py3的默认路径位置&#xff08;C:/Users/Administrator/.spyder-py3/&#xff0c;注意具体的安装路径可能与此不同&#xff09;&am…

PDF文档转换工具箱流量主小程序开发

PDF转换小助手&#xff0c;不仅是文件格式转换的利器&#xff0c;更是一位得力的助手。它精通PDF与各类文档间的自由转换&#xff0c;如Word、Excel、PowerPoint等。 转换选项丰富多样&#xff0c;满足您对文件保护、页面设置、图像品质等细致要求。处理大量文件&#xff1f;…

canvas绘制圆点示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

格式转换工具,一键转换文件格式

有时候&#xff0c;为了满足工作或学习的需要&#xff0c;我们需要将文件从一种格式转换为另一种格式。传统的单文件转换方式不仅费时&#xff0c;而且容易出错。有没有便捷的方法可以解决这个问题&#xff1f;答案是肯定的&#xff0c;那就是使用【文件批量改名高手】来批量操…

Python实现简单的JS逆向解密, 实现翻译软件+语音播报

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: python 3.8 pycharm 第三方模块使用: requests --> pip install requests execjs --> pip install PyExecJS ttkbootstrap --> pip inst…

时隔五天,重温Redis基础总结

目录 字符串操作命令 Redis 字符串类型常用命令SET key value 设置指定key的值 ​编辑GET key 获取指定key的值 ​编辑SETEX key seconds value 设置指定key的值&#xff0c;并将 key 的过期时间设为 seconds 秒 SETNX key value 只有在key不存在时设置key的值 哈希操作命…

epoll原理及服务器代码实现

epoll 是 Linux 下用于实现高性能事件通知机制的系统调用。它相对于传统的 select 和 poll 具有更好的性能和可伸缩性&#xff0c;特别适用于需要处理大量并发连接的场景&#xff0c;比如网络编程中的服务器。 #include <sys/epoll.h> // 创建一个新的epoll实例。在内核中…

安全与认证Week3

Key Management 密钥管理 密钥交换、证书 密钥的类别 密钥管理方面 密钥分发问题 密钥分发方案 简单的密钥分发&#xff1a;允许安全通信&#xff0c;但不存在先前或之后的密钥。 带机密性和身份验证的密钥分发&#xff1a;提供更高级别的安全性。 混合密钥分发 公钥分发 公开…

Node.js使用jemalloc内存分配器显著减少内存使用

前言 Node.js 默认使用的是 ptmalloc(glibc) 内存分配器&#xff0c;而&#xff1a; 在服务端领域「不会选择默认的 malloc」是一个常识。&#xff08; 来源 &#xff09; ptmalloc 的分配效率较低&#xff08; 来源 &#xff09;&#xff0c;对于 长时间、多核 / 多线程 运行…

惠普打印机---共享打印机安装 --连接

1. 远程连接 输入 winR ,再输入共享打印机的连接的IP 2.进入 连接 界面 3.右击打印机 &#xff0c;点击连接 &#xff0c;就可以添加打印机设备 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ba03aea8156642d58982fd2ce0934b45.png 方法二、 添加打印机 2.…

金和OA jc6 ntko-upload 任意文件上传漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】

文章目录 &#x1f3c0;前言⚽AI绘图技术栈⚾️简单的代码实现案例&#x1f3c8;iPad萌系简笔画&#xff1a;从小白绘画到文创手账设计【文末送书-13】⛳粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; &#x1f3c0;前言 AI绘画技术&#xff0c;也称为人工智能…

网络安全好就业吗?会不会容易被淘汰

研究生网安&#xff0c;本科信安。 研究生几个同专业的人里面&#xff0c;考公的考公&#xff0c;考编制的考编制&#xff0c;进国企的进国企。只有一个进互联网公司做安全。 本科的90%都考研了&#xff0c;加上保研的&#xff0c;基本都上岸了&#xff0c;本科信息安全的学生…