什么是 Serverless 应用?
Serverless 应用是一种使用云计算平台的方式,其中应用程序逻辑被以函数的形式运行,而无需管理底层服务器或操作系统。在Serverless 应用模式下,应用可以自动扩展以符合流量需求,不需要用户自行管理人员。
Serverless 应用最受欢迎的云计算平台是 AWS Lambda,但是和其他云计算平台类似,Azure、Google Cloud Platform 以及其他云计算平台也提供函数服务。
为什么要进行本地开发和集成测试?
当应用程序已经部署到生产环境,调试问题非常困难。本地开发和集成测试可以帮助我们在应用程序的开发过程中及早发现并解决问题,从而最大程度地减少对生产环境的影响。
在 Lambda 或其他服务器端计算设施中开发 AWS 函数时,我们通常使用编辑器并运行函数代码,通过输入数据为测试提供输入以进行测试。这种方式的问题是代码本身无法获得最终结果,而是由 AWS 计算环境来处理并返回结果。因此,当发现问题时,我们很难确定问题是由代码还是由 AWS 计算环境引起的。此外,每次更新 Lambda 函数代码后,测试功能必须亲自手动和运行整个工作流程,以确保它仍然按照预期工作。在某些情况下,运行完整的工作流程可能需要等待几分钟甚至更长时间。
本地开发和测试
在本地设施中进行开发和测试 Serverless 应用可以帮助我们在一切准备就绪之前检查代码的各个方面。以下是一些您可以使用的工具:
AWS Serverless Application Model (SAM)
AWS SAM 是一种命令行界面的工具,可用于在本地端运行、测试和对 AWS Lambda 应用程序进行本地构建和部署。在此过程中,该工具会下载并运行一个本地的 Lambda 运行环境,并以相同的方式处理事件和调用。
例如,以下命令将在本地启动具有名称“helloworld”的 AWS Lambda 函数:
--- ----- ------------ ---------- -------- ------- ----------
LocalStack
LocalStack 是一种本地应用程序,可以模拟 AWS 云基础设施环境。我们可以使用它来在本地运行 AWS Lambda、API Gateway、S3、DynamoDB 等服务以及其他 AWS 服务。这样,我们就可以在开发期间模拟与 AWS 函数交互的所有功能。我们还可以将本地 AWS 函数的输出附加到 AWS CloudFormation 服务栈,以便使用 CloudFormation 来管理我们的 Serverless 应用程序,并使用 Stack Update、Delete 等操作对其进行处理。
Serverless Framework
Serverless Framework 是一个集成工具,能够解决开发和部署 Serverless 应用程序时遇到的大多数问题。它是一个开源框架,提供了一种轻松构建和部署 Serverless 应用程序的方式,并为 AWS、Azure 和 Google Cloud Platform 等云提供了插件和功能。使用 Serverless Framework,我们可以在本地设备上测试 AWS Lambda 函数,以确保我们的代码能够正确工作。
集成测试
集成测试是一种测试服务器端应用程序的方法,旨在确保它的各个部分正确协调工作,并满足其目标要求。AWS Lambda 函数也需要进行集成测试。让我们看看如何进行集成测试:
AWS SAM
AWS SAM 提供了一种在构建 AWS Lambda 应用程序之前进行本地测试的方法。按照以下步骤使用 AWS SAM 进行集成测试:
安装 SAM CLI 并启动 Lambda 函数代码。
在本地设备上通过浏览器或 CURL 命令行工具发送输入数据。
SAM CLI 将此输入转发到本地 Lambda 运行环境,并将其视为 AWS Lambda 的事件。Lambda 函数将处理事件并返回结果。
接下来,SAM CLI 将 Lambda 函数的执行日志和文件输出复制到命令行和本地磁盘。
例如,以下命令将构建和部署具有名称“my-function”的 AWS Lambda 函数,并启动 API Gateway 本地服务以便测试:
--- ----- --------- ---------- --------
测试框架
测试框架是一种用于编写需求文档并使用标准化格式自动检查源代码的工具。使用测试框架,我们可以编写自动化测试用例,以确保我们的代码在各种条件下都能正常工作。
例如,Mocha 是一个流行的JavaScript 测试框架,它是一种适用于Node.js 和浏览器的测试框架,支持 JavaScript、TypeScript、CoffeeScript 等。我们可以使用它来编写自动化测试用例,并自动运行这些测试用例以验证代码是否按预期工作。
总结
使用本地开发和集成测试工具,我们可以优化 AWS Lambda 函数的开发、测试和部署流程。这可以帮助我们更快地迭代和解决问题,从而更快地向客户提供更好的应用程序。在 AWS Lambda 函数开发过程中,本地开发和测试以及集成测试是非常重要的,它们可以帮助我们在生产环境之前发现和解决问题,从而更好地满足客户的需求。
示例代码
以下是使用 AWS SAM CLI 运行本地 Lambda 函数的示例代码:
sam.pizza-nodejs,其中 event.json 文件包含要输入到 Lambda 函数的事件,您可以更改其属性以符合您的需求。
template.yaml
---------- ----------- ----- ------------------------- ----------- -------- ------------- -------- ---------- -------- ------------
event.json
- ------- ----- -
index.js
--------------- - ----- ------- -- - ----- ---- - ---------- -- -------- ------ - -------- ------- --------- -- --
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/647a23d7968c7c53b05fd066