从零开始,实现AWS无服务器扩展

近年来,云原生应用已成为许多企业构建可扩展应用程序的首选标准。在云技术的诸多进步中,无服务器架构被视为一种革命性的方法。易用性和效率是现代应用开发中最理想的两个特性,而无服务器架构提供了这两点。这使得无服务器成为云服务提供商和消费者的变革者。

对于希望采用这种方法构建应用程序的公司,主要云服务提供商提供了多种无服务器解决方案。在本文中,我们将探讨这种架构的特点、优势和挑战,以及使用案例。在本文中,我以AWS为例来探讨这些概念,但相同的概念适用于所有主要的云服务提供商。

无服务器

无服务器并不意味着没有服务器。它只是意味着这些服务的基础架构由云服务提供商管理。这使得架构师和开发人员能够设计和构建应用程序,而不必担心管理基础架构。这类似于使用打车应用Uber:当您需要搭车时,您无需担心拥有或维护一辆汽车。Uber会处理所有这些,您只需专注于通过支付车费前往目的地。

无服务器架构提供了许多优势,使其适用于许多使用案例并具有吸引力。以下是一些关键优势:

自动扩展

无服务器架构的最大优势之一在于它本身支持扩展。云服务提供商处理繁重的工作,提供几乎无限的即插即用可扩展性。例如,如果使用无服务器技术构建的应用突然变得受欢迎,工具或服务会自动扩展以满足应用的需求。我们不必在半夜起床添加服务器或其他资源。

专注创新

由于不再需要管理服务器的负担,您可以将注意力集中在构建应用程序、添加功能以推动应用增长上。对于任何规模的组织,无论是小型、中型还是大型,这种方法有助于集中精力于真正重要的事情——业务增长。

成本效益

在传统服务器模型中,您经常会因为事先购买和管理未使用的资源而付费。无服务器通过转换为按使用量付费模式来改变这一点。在大多数情况下,您只需支付实际使用的资源。如果您构建的应用程序没有立即引起关注,您的成本将很低,就像支付单个会话而不是整整一年一样。随着应用的流量增长,成本也会相应增长。

更快的上市时间

使用无服务器框架,您可以比传统服务器模型更快地构建和部署应用程序。当应用准备就绪时,可以使用无服务器资源轻松部署。您可以将时间集中在开发和添加新功能上,以更快的速度发布它们,而不是花费时间在服务器管理上。

降低运维成本

由于云服务提供商管理基础设施,消费者无需担心配置、维护、扩展或处理安全补丁和漏洞。

无服务器框架提供灵活性,可应用于各种用例。无论是构建 Web 应用程序还是处理实时数据,它们都提供了这些用例所需的可扩展性和效率。

使用 AWS 无服务器构建 Web 服务 API

现在我们已经讨论了无服务器架构的优势,让我们深入一些实际示例。在本节中,我们将使用 AWS 无服务器资源 创建一个简单的后端 Web 应用程序。

上述后端应用程序设计包含三层,为 Web 应用程序提供 API。一旦部署到 AWS 上,网关端点就可以用于 API 消费。当用户调用 API 时,请求会通过 API 网关路由到适当的 Lambda 函数。对于每个 API 请求,Lambda 函数会被触发,它会访问 DynamoDB 来存储和检索数据。这种设计是一种简化的、具有成本效益的解决方案,随着需求增长,它会自动扩展,是构建具有最小开销的 API 的理想选择。该设计中的组件之间相互集成,提供了灵活性。

该架构中有两个主要组件 — 计算和存储。

无服务器计算

无服务器计算改变了构建和部署云原生应用程序和服务的方式。它承诺了一种真正的按使用量付费模式,以毫秒级粒度,而不浪费任何资源。由于其简单性和经济优势,这种方法变得流行起来,许多云提供商支持这些功能。

使用无服务器计算的最简单方式是提供要由平台按需执行的代码。这种方法导致了函数即服务(FaaS)平台的兴起,重点是允许表示为函数的小段代码在有限的时间内运行。这些函数由诸如HTTP请求、存储更改、消息或通知之类的事件触发。由于这些函数在代码执行完成时被调用并停止,它们不保留任何持久状态。为了维护状态或持久化数据,它们使用像 DynamoDB 这样提供持久存储能力的服务。

AWS Lambda 能够根据需求进行扩展。例如,AWS Lambda 在 2024 年 Prime Day 处理了超过 1.3万亿次调用。这种能力在处理突然的流量激增时至关重要。

无服务器存储

在无服务器计算生态系统中,无服务器存储是指基于云的存储解决方案,可以自动扩展,消费者无需管理基础架构。这些服务提供许多功能,包括按需扩展性、高可用性和按使用量付费。例如,DynamoDB 是一个完全托管的无服务器 NoSQL 数据库,专为处理键-值和文档数据模型而设计。它专为需要在任何规模下保持一致性性能的应用程序而构建,提供单位毫秒的延迟。它还提供与许多其他服务的无缝集成能力。

主要云提供商为特定需求提供了众多无服务器存储选项,例如 S3、ElastiCache、Aurora 等。

其他使用案例

在前一节中,我们讨论了如何利用无服务器架构为 Web 应用程序构建后端 API。还有几种其他使用案例可以从无服务器架构中受益。其中一些使用案例包括:

数据处理

让我们探讨另一个示例,即如何利用无服务器架构基于数据存储中的更改通知服务。例如,在电子商务平台中,假设在创建订单时需要通知多个服务。在 AWS 生态系统内,订单可以在创建时存储在 DynamoDB 中。为了通知其他服务,可以基于此存储事件触发多个事件。

使用DynamoDB Streams,当发生事件时可以调用一个Lambda函数。然后,此Lambda函数可以将变更事件推送到SNS(简单通知服务)。SNS充当通知服务,通知其他对这些事件感兴趣的多个服务。

实时文件处理

在许多应用程序中,用户上传需要存储、调整大小、转换为不同格式并进行分析的图像。我们可以通过以下方式在AWS无服务器架构中实现这一功能。当上传图像时,它会被推送到配置为触发事件以调用Lambda函数的S3存储桶。Lambda函数可以处理图像,在DynamoDB中存储元数据,并将调整大小后的图像存储在另一个S3存储桶中。这种可扩展的架构可用于处理数百万张图像,而无需管理任何基础设施或进行任何手动干预。

挑战

无服务器架构提供了许多优势,但也带来了需要解决的一些挑战。

冷启动

当调用无服务器函数时,平台需要创建、初始化并运行一个新的容器来执行代码。这个过程被称为冷启动,可能会在工作流程中引入额外的延迟。诸如保持函数保持活跃或使用预置并发可以帮助减少这种延迟。

监控和调试

由于可能存在大量的调用,监控和调试可能变得复杂。在经常使用的应用程序中识别和调试问题可能具有挑战性。建议配置AWS Cloudwatch等工具来收集指标、日志和警报以解决这些问题。

尽管无服务器架构可以自动扩展,但资源配置必须进行优化以防止瓶颈。适当的资源分配和成本优化策略的实施至关重要。

结论

无服务器架构是云原生应用程序发展的重要一步,支持无服务器计算和存储。它被广泛应用于许多类型的应用程序,包括事件驱动工作流、数据处理、文件处理和大数据分析。由于其可扩展性、灵活性和高可用性,无服务器架构已成为各种规模的企业的可靠选择。

Source:
https://dzone.com/articles/from-zero-to-scale-with-aws-serverless