无服务器术语表
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
本词汇表提供了构建无服务器应用程序时使用的术语和短语的定义。在开始之前,如果您不确定“无服务器”一词的含义,请先阅读此部分。
这些是我个人的定义,并且受到我最熟悉的生态系统(例如 AWS)的影响。它们可能并不代表普遍理解的定义。
API 网关
AWS 提供的一项完全托管服务,允许开发人员创建、发布、维护、监控和保护 API,这些 API 可以自动与其他 AWS 服务(如 Lambda 和 SQS)集成。(官方网站)
架构框架
一个用于在 AWS 上使用自定义高级声明式语法构建和部署无服务器应用程序的开发框架。(官方网站)
Azure Functions
云原生
一种构建软件应用程序的方法,该方法完全由云供应商提供的服务和基础设施组成,而不是使用本地资源。
基于云的开发
这种工作流程是指开发人员在标准开发流程中,将正在开发的代码在云端运行,而不是像以往那样在完成开发任务前仅在本地机器上运行。例如,开发人员在 AWS 云账户中部署并调用 Lambda 函数。
这种工作流程在构建无服务器应用程序时几乎是必需的,但在更传统的应用程序中并不常见。其优势在于,它迫使开发人员在早期阶段就在与生产环境几乎相同的环境中运行代码,从而降低集成错误的风险。缺点是,使用当前工具部署函数后开发人员才能进行测试,这会增加时间开销,而且开发人员无法离线工作。
冷启动
首次调用云函数时会出现一种现象,导致其完成时间比后续(预热)调用更长。这种预热时间由多种因素造成,包括云提供商配置托管函数的底层容器所需的时间,以及将函数特定依赖项加载到内存中所需的时间。
冷启动是所有FaaS提供商的通病,也是 FaaS 不适合需要持续极低延迟的工作负载的常见原因。
配置管理
(开发人员和运维工程师)在应用程序中指定、版本控制和分发组件资源配置属性的做法。
容器
“容器是一种标准软件单元,它将代码及其所有依赖项打包在一起,从而使应用程序能够在不同的计算环境中快速可靠地运行。”(来源)
在无服务器架构中,云服务提供商底层使用容器来配置和运行函数。一个容器会被重复使用以服务于多个函数调用,并且通常会持续运行几个小时(尽管无法保证),以最大程度地减少冷启动的影响。
部署框架
一个开发框架,可以更轻松地配置和部署云资源,例如函数、API 和事件触发器。
📖相关内容:为什么无服务器新手应该使用部署框架。
DynamoDB
这是AWS提供的完全托管的NoSQL数据库服务。
其主要优势在于内置的托管扩展、安全性、备份/恢复和高吞吐量,从而消除了传统数据库运维中大量的管理任务。
DynamoDB是AWS的专有技术,因此不能在其他云平台上使用。(
官方网站)
事件驱动架构
一种架构模式,软件系统能够响应并创建自身的事件。这种模式几乎是无服务器系统的标配。例如,AWS Lambda 允许您配置不同类型的事件(例如,文件添加到 S3 存储桶、定时任务),这些事件会自动触发函数的调用。通常,云提供商会管理监听事件的钩子,而开发人员则负责将这些钩子连接到相应的操作(例如 Lambda 函数)。
FaaS
函数即服务 (FaaS) 是一种无需预先配置专用服务器即可在云端运行自定义代码的机制。FaaS 函数与更广义的编程意义上的函数非常相似,它们都接受一个输入参数(通常是事件负载),并允许开发人员执行自定义代码,然后将响应发送回调用者。
FaaS 函数不需要服务器进程持续运行,这使得云提供商可以独立地自动扩展它们。
FaaS 的实现方式包括AWS Lambda、Google Cloud Functions和Microsoft Azure Functions。
“无服务器”一词经常被错误地与 FaaS 混淆,但前者是后者的超集,包括非自定义代码管理的服务。
全托管服务
在无服务器云环境中,完全托管服务是指由云供应商提供的服务,它包含一组特定的功能,但诸如资源调配、补丁更新和扩展等运维问题都由云供应商负责,对开发人员完全透明。AWS
生态系统中的完全托管服务示例包括 S3、DynamoDB 和 Cognito。
函数并发
在高负载情况下,FaaS函数需要并发调用。并发调用会导致冷启动,因为云服务提供商需要为每个新的并发执行启动一个新的底层容器。AWS 对并发运行的函数数量设置了 1000 个的软限制(实际数量因区域而异),超过此限制后,后续调用将被限制,并向调用/触发服务返回错误。
📖相关:Lambda 扩展计算器。
Google Cloud Functions
基础设施即代码
基础设施即代码是一门学科,它使用代码文件来管理与软件系统基础设施(服务器、网络、托管服务等)相关的所有配置,这些代码文件可以存储在 Git 等版本控制系统中。
其做法有诸多好处,包括允许使用一致的配置轻松设置多个管道阶段,便于灾难恢复,以及在变更集应用到生产环境之前对其进行同行评审。
IaC 实现的示例包括 AWS CloudFormation 和 Terraform。
Lambda
托管扩展
托管服务的一项特性是,工程师无需预先为服务配置特定容量,因为云提供商会负责扩展。Lambda、API Gateway 和 DynamoDB 等服务都具有托管扩展功能。
有些云服务虽然提供了扩展机制,但这些扩展并非自动进行,因此需要工程师进行容量规划,以便在需要时触发扩展,例如 AWS Elasticache 和 AWS ElasticSearch Service。从这个角度来看,托管扩展可以被视为一个连续的过程,而不是一个离散的状态。
微服务
微服务是一种软件架构方法,它将系统划分为许多独立部署的小功能块,这些功能块通常通过 HTTP 相互通信。
在 FaaS 应用中,由于部署单元(函数)本身就很小,可以独立部署,因此几乎默认就采用了微服务架构。
📖相关内容:AWS 的无服务器微服务模式。
巨石
单体软件系统将应用程序的所有功能都保存在一个大型的单一部署单元中。
虽然可以使用函数即服务 (FaaS) 开发单体应用(例如,使用一个通用函数来处理所有 API/Web 应用请求),但这种方法并不常见,通常被认为是不好的做法。它与微服务架构截然相反。
多云
多云是一种架构方法,它允许在同一个分布式应用程序/工作负载中使用来自不同供应商的云服务。
这种方法的主要优势在于减少对单一云服务提供商的依赖,并降低供应商锁定风险。其主要缺点是由于不同云平台上的类似服务缺乏标准化,导致实施成本高昂。
PaaS
平台即服务 (PaaS) 是一种云服务,它允许开发者将应用程序部署到云端,而无需管理代码部署的基础设施。这与无服务器应用程序类似,但 PaaS 的主要区别在于,云服务提供商实际上会配置虚拟服务器来托管这些应用程序,因此应用程序的可扩展性受到限制。另一个主要区别是,PaaS 服务的定价模式通常按小时计费,而不是按使用量计费。
PaaS 服务的例子包括 AWS Elastic Beanstalk 和 Heroku。
按使用量计费
按使用量计费是指云客户根据使用特定服务的次数而非固定时间段付费。例如,AWS Lambda 根据每次函数执行的次数和持续时间收费。
📖相关:如何计算将 EC2 应用迁移到 Lambda 的计费节省。
为闲置付费
当云客户使用 EC2 等服务时,即使资源当前没有接收任何流量,也会根据资源是否被启用来处理服务请求来向用户收费,这就意味着他们必须为闲置资源付费。
秘密管理
密钥管理是配置管理的一个子集,它关注的是如何安全地存储密钥(例如密码、API 密钥、数据库连接字符串)并将其分发到系统内的资源。
无服务器应用模型
SAM 是 AWS 开发的一种基础设施即代码框架,专门用于无服务器应用程序。
无服务器应用程序存储库
AWS 提供的存储库,允许开发人员发现并部署可重用的无服务器应用程序(或应用程序组件)到他们自己的云账户中。(
官方网站)
无服务器框架
Serverless Framework 是一个基础设施即代码框架,专门用于无服务器应用程序。它允许开发人员使用 YAML 或 JSON 配置函数和其他资源,并将其部署到 AWS、Azure 或 Google Cloud。
(官方网站)
无服务器优先架构方法
“无服务器优先”是一种构建软件应用程序的方法,默认情况下使用 FaaS 和云服务,除非出现需要使用基于服务器的系统来满足特定功能或操作要求的限制。
SSM参数存储
这是 AWS 提供的一项服务,用于帮助进行配置管理。它提供了一个集中式的键值存储,允许安全地存储基础设施和应用程序配置数据(包括密钥),并通过基础设施即代码(在部署时)和应用程序代码(在运行时)进行访问。
阶段
阶段是指整个软件系统在发布周期中的特定点的独立部署。该术语通常用于自动化持续集成/持续交付管道的上下文中,有时也称为“环境”。
阶段的示例包括开发、测试、预发布和生产。
阶跃函数
Step Functions 是 AWS 提供的一项服务,它提供了一种编排由多个 Lambda 函数或云服务事件组成的常见工作流的方法,而无需编写底层代码来处理工作流状态和重试逻辑等。(官方网站)
总拥有成本
软件应用的总拥有成本 (TCO) 是指在其生命周期内构建和运营该应用所需的所有成本的总和。它包括支付所有工程师(开发人员和运维人员)和支持人员的工资,以及云服务费用和任何其他运营支出。
需要考虑的成本既包括实际发生的成本,也包括考虑到特定设计决策而可能产生的未来成本风险。
📖相关内容:你对无服务器成本的看法完全错误。
未区分的重体力劳动
“非差异化繁重工作”一词通常用来指那些耗时费力、需要高昂技能,但并不能使公司在关键业务领域脱颖而出的工程活动。这类繁重工作通常被视为必要的运营成本,包括管理内部或云端服务器等任务。
📖相关:在无服务器世界中消失的担忧。
供应商锁定
供应商锁定是指软件应用程序的设计使得其架构中的某些组件是为特定的云提供商设计的,而迁移到另一个云提供商将产生巨大的成本。
与传统的基于服务器的应用程序相比,无服务器应用程序的这种风险略高,因为它们往往更多地使用专有的云服务和数据库,而这些服务和数据库无法在其他提供商的云上完全复制。
📖相关:FaaS 和供应商锁定——是真正的担忧还是 FUD?
工作量
工作负载是指运行在云服务提供商上的、具有特定功能和操作要求的软件制品。它与“应用程序”一词在某种程度上是同义词,但含义更广泛,并且不包含任何面向用户的组件(例如用户界面、应用程序接口)。
我很想听听您对这份清单的反馈,特别是如果:
- 你认为我应该在列表中添加一个重要的术语/概念吗?
- 您有一个链接指向一篇文章,您认为这篇文章是关于列表中某个特定概念的权威之作,我应该链接到这篇文章。
如果可以的话,请在下方留言。
💌如果您喜欢这篇文章,可以订阅我的每周新闻简报,了解如何在 AWS 中构建无服务器应用程序。
原文发表于winterwindsoftware.com。
文章来源:https://dev.to/paulswail/serverless-glossary-3a9g