什么是无服务器计算?
无服务器计算是一种应用程序开发模型,基于此模型您可以在第三方托管服务器基础设施上构建和部署应用程序。所有应用程序都需要服务器才能运行。但是在无服务器模型中,云服务提供商管理常规工作;他们预置、扩展和维护底层基础设施。云服务提供商可处理多项任务,例如操作系统管理、安全补丁、文件系统和容量管理、负载平衡、监控和日志记录等。因此,您的开发人员可以专注于应用程序设计,同时仍能受益于经济、高效且可大规模扩展的服务器基础设施。
为什么无服务器计算很重要?
在互联网发展的早期,任何想要运行网络应用程序的用户都必须购买和维护实体服务器。公司通常会将其实体服务器设备存储在本地数据中心或主机托管设施中。此方式可能代价昂贵,因为大多数应用程序仅使用服务器硬件资源的极小部分。
云计算模型最初通过允许客户在云提供商硬件上创建虚拟服务器或实例来解决此问题。但是,客户仍然必须预置、配置、更新和扩展其虚拟服务器。
为了应对这些问题,云提供商开始提供无服务器技术,以提高灵活性并进一步优化成本。借助无服务器计算,开发人员可以运行代码、管理数据和集成应用程序,而不必担心如何完成基础设施管理任务。
采用无服务器有诸多优点,我们接下来将概述这些优点。
提高开发人员工作效率
开发团队可以专注于构建应用程序,而不是配置应用程序。较低的运营开销意味着应用程序可以更快地进入市场。开发人员可以回应客户反馈并频繁发布应用程序代码更改。
高效的可扩展性
云供应商在其无服务器环境中提供自动扩展功能。无服务器应用程序会自动从零扩展到满足峰值需求。开发人员在编写代码时不必考虑使用量。
降低成本
您只需为代码运行时所需的 CPU、内存和其他计算资源付费。无需为闲置资源支付任何费用。这种按价值付费的计费模式可确保最佳的资源利用率,并且不会因过度预置而造成浪费。
无服务器计算具有哪些使用案例?
在许多应用程序和系统中,无服务器计算可能非常有用。
无状态应用程序开发
无服务器架构非常适合在会话之间不保存客户端数据的异步、无状态应用程序。无服务器应用程序的示例包括聊天机器人、任务计划程序和 IoT 应用程序。例如,Coca-Cola 使用 AWS 在短短 100 天内为其非接触式饮料分配器开发一款移动灌装应用程序。Coca-Cola 使用 AWS Lambda 等无服务器构建基块。
批处理
批处理应用程序会定期完成高容量、重复的数据作业,例如备份、筛选和排序。批处理非常适合无服务器环境,这些环境在需要时可以大规模扩展,而在不使用时不会浪费任何成本。
例如,Liberty Mutual 使用 AWS 将其不同的全球业务线整合到名为金融中心服务(FCS)的集中式系统中。该公司使用 AWS Step Functions 创建一个无服务器应用程序,该应用程序可以在每个月底于一次运行中处理 1 亿笔交易。
实时数据分析
无服务器计算非常适合实时流式处理引擎,以提高客户响应能力。无服务器应用程序可以处理数十万个来源的大量流式处理数据,同时让客户体验低延迟和高带宽。因此,可以在几秒钟(而非几分钟)内获得见解。
例如,Genentech 使用 AWS 无服务器功能进行临床数据分析。研究人员现在可以在几个小时内完成以前需要数周才能完成的任务。
业务流程自动化
可以使用无服务器方法来自动化繁琐而耗时的业务流程。开发人员可以专注于将业务逻辑转换为应用程序代码,而无需管理服务器。
例如,Taco Bell 使用 AWS 创建无服务器应用程序来执行业务逻辑和数据转换。Taco Bell 向其送餐合作伙伴提供实时菜单和餐厅信息。在 COVID-19 疫情期间,无服务器投资帮助该品牌迅速转型,以满足消费者对送餐的需求。
无服务器架构如何运作?
任何应用程序都有两个广泛的功能领域 — 前端和后端。前端包括最终用户与之交互的所有内容,例如视觉布局、按钮和显示文本。后端包含用户无法访问的功能,例如数据存储和处理。
例如,考虑在您的移动设备上使用航班预订应用程序。前端是您的应用程序用户界面,您可以在其中选择日期并请求可用的航班列表。您的请求会转到后端,后端会查找数据库并返回有关所选时间范围内所有可用航班的信息。下图显示了传统架构。
在无服务器架构中,开发人员在云提供商提供的云基础设施中部署后端代码。无服务器应用程序的关键是事件驱动型架构 — 这是一种现代架构模式,由发布、使用或路由事件的小型解耦服务构建而成。 事件是在服务之间发送的消息。
借助此架构,可以更加轻松地扩展、更新和独立部署系统的单独组件。下图显示了事件驱动型无服务器微服务。
接下来,我们将概述无服务器架构的工作原理。
函数
函数是执行单一任务的小型离散代码单元。函数需要 CPU 和内存等计算资源才能运行。云提供商仅在需要时才分配这些资源。云提供商为无服务器函数的运行创建临时环境。
某些事件可以触发或使代码单元运行。例如,如果用户在应用程序中选择按钮,则事件可能会运行。该请求将触发读取数据库并将相关信息返回给用户的函数。
扩展请求
函数收到的请求越多,它需要用于运行的资源就越多。无服务器平台监控负载并持续以近乎无限的规模分配云资源。因此,单个无服务器函数可以在不更改代码的情况下处理一百万条请求。
一旦某个函数停止接收请求,云提供商就会关闭相关的基础设施以节省成本。云提供商仅在需要时分配资源。如果没有使用量,则环境资源可以缩减至零。
有哪些类型的无服务器架构?
在无服务器架构中,云提供商为您的应用程序管理多个小型和大型后端任务。您可以部署自定义代码;在代码运行期间,云提供商会动态分配资源。云平台还可以提供后端功能,您可以直接使用这些功能,而无需从头开始编写代码。
接下来,我们将解释这两种类型的无服务器架构。
函数即服务
函数即服务(FaaS)是一种无服务器架构,开发人员可以使用此架构编写自定义后端函数并将函数代码直接部署到云基础设施。调用函数时,云提供商会在现有的活动服务器上运行该函数,或者在需要时启动新的服务器。此类函数之所以称为无服务器函数,是因为开发人员无需关注其执行过程。开发人员可以编写和部署代码,而不必担心代码的运行方式和运行位置。
后端即服务
后端即服务(BaaS)可让开发人员使用 API 访问后端功能。API 是允许两个软件组件使用一组定义和协议相互通信的机制。
在其无服务器环境中,云供应商提供基于 API 的访问权限,以访问额外的加密、身份验证和可从云访问的数据库。它们还可以提供对其他第三方服务和应用程序的访问权限。这些无服务器函数是预先编写的,可以在代码中直接调用。
什么是无服务器优先的策略?
无服务器架构通过以下原则得到认可:
- 无需管理服务器
- 按价值付费的服务
- 持续扩展
- 内置容错能力
在组织的应用程序、运营和开发周期中,无服务器优先的策略会以这些原则为优先事项。无服务器开发人员或无服务器优先的公司会首先使用这些原则构建应用程序。
但是,无服务器计算并非适合所有工作负载。可以根据需要纳入非无服务器技术作为支持架构。
无服务器架构是否安全?
大多数云供应商都采用共享安全模型。云提供商负责云本身的安全性,而客户负责云中的安全性。
通过无服务器,云提供商可以管理许多额外的基础设施层,包括操作系统和网络。客户必须遵循最低权限原则和保护无服务器应用程序的最佳实践。
例如,在像 AWS Lambda 这样的 AWS FaaS 解决方案中,您可以使用熟悉的工具,如 AWS IAM Identity Center,通过精细权限保护每种资源。这可以帮助无服务器应用程序保持稳健的安全状况。
AWS 如何支持您的无服务器计算要求?
Amazon Web Services(AWS)提供许多产品/服务来支持您的无服务器计算。
AWS 上的无服务器详细介绍了相关技术,这些技术可用于运行代码、管理数据和集成应用程序,而无需管理服务器。借助 AWS 无服务器技术,您可获得自动扩展、内置高可用性和按使用付费计费模式等功能,从而提高敏捷性并优化成本。这些技术还免去了容量预置和打补丁等基础设施管理任务,因此您可以专注于编写为客户提供服务的代码。
无服务器应用程序以 AWS Lambda 为起点,这是一种事件驱动的计算服务,与 200 多项 AWS 服务原生集成。我们还提供大量额外的支持服务,例如:
- 用于构建无服务器应用程序的 AWS Fargate,其与 Amazon Elastic Container Service(Amazon ECS)和 Amazon Elastic Kubernetes Service(Amazon EKS)兼容
- Amazon Aurora Serverless,用于构建可根据应用程序需求自动扩展容量的无服务器数据库
- AWS AppSync,用于借助可扩展的 GraphQL API 加快应用程序开发速度
立即创建账户,开始在 AWS 上使用无服务器。