周二. 9 月 16th, 2025

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。

这篇文章提供了有关如何将 MERN(Mongo、Express React 和 Node.js)Web 应用程序迁移到无服务器环境的指南。

本文由 AWS Principal Developer Advocate Marcia Villalba撰写,并经许可发布。

本文提供了有关如何将 MERN(M ongo、E xpress、R eact和N ode.js)Web 应用程序迁移到无服务器环境的指南。它不仅着眼于将非无服务器 Web 应用程序迁移到无服务器环境的过程,而且还探讨了迁移过程中出现的两个问题。

直接迁移通常是将迁移后的应用程序投入生产的最快方式,它允许开发团队重构可能受益于无服务器技术的应用程序部分。

在开始任何迁移之前,定义新应用程序需要具备的非功能性需求非常重要。对于此应用程序,这些要求是:

可扩展至零的环境尽可能少地为空闲时间付费配置尽可能少的基础设施应用自动高可用对原始代码的最小改动应用概述

这篇博文将指导您如何迁移 MERN 应用程序。原始应用程序托管在两台不同的服务器上:一台包含 Mongo 数据库,另一台包含 Node/js/Express 和 ReactJS 应用程序。

这个演示应用程序模拟一个 swag 电子商务网站。数据库层存储产品、用户和购买历史。服务器层负责电子商务业务逻辑、托管产品图像以及用户身份验证和授权。Web 层负责所有用户交互并使用 REST API 与服务器层通信。

应用迁移

应用程序的数据库层迁移到MongoDB Atlas,这是一个基于云的数据库集群,可以自动扩展并按使用量付费。这种情况就像将数据库的内容转储到本地文件夹,然后在云端恢复一样简单。

Node.js/Express 后端使用AWS Lambda Web Adapter迁移到AWS Lambda,这是一个开源项目,允许人们构建 Web 应用程序并在 Lambda 上运行它。您可以在此视频中了解有关迁移的更多信息。

下一步是为服务器应用程序创建一个 HTTP 端点。该演示使用Lambda 函数 URL,因为它们配置简单,一个函数 URL 将所有路由转发到 Express 服务器。您可以在此视频中了解有关 Lambda 函数 URL 的更多信息。

React Web 应用程序已迁移到AWS Amplify,这是一项完全托管的服务,可提供托管 Web 应用程序和管理 Web 应用程序的 CI/CD 管道等功能。您可以观看此视频了解如何进行迁移。

迁移挑战

至此,应用程序已从在传统环境中托管迁移到使用无服务器基础架构运行。但是,在迁移过程中,会出现两个问题:认证授权和存储。

身份验证和授权迁移

原始应用程序自己处理身份验证和授权。但是,对于当前迁移的应用程序,每次登录时,您都会意外地从应用程序中注销。这是因为服务器代码负责处理用户的身份验证和授权,现在我们的服务器运行在 AWS Lambda 函数中,函数是无状态的。这意味着每个请求都会运行一个功能——一个请求可以加载登录页面上的所有产品、获取产品的详细信息或登录站点——如果您在这些功能之一中执行某些操作,状态不共享。

要解决这个问题,您必须从函数中删除身份验证和授权机制,并使用可以在函数的多次调用中保持状态的服务。这就是此迁移使用Amazon Cognito来处理身份验证和授权的原因。您可以在此视频中了解有关 Amazon Cognito 的更多信息。

借助这种新架构,该应用程序可以直接从 AWS Amplify 应用程序调用 Amazon Cognito API,从而最大限度地减少所需的代码量。要了解这部分迁移是如何完成的,请查看其他视频。

存储迁移

在原始应用程序中,当创建新产品时,会将新图像上传到 Node.js/Express 服务器。但是,现在应用程序驻留在 Lambda 函数中。除非重新部署该功能,否则作为该功能一部分的代码(和文件)不能更改。因此,您必须将用户存储与服务器代码分开。

为解决此问题,此迁移将使用Amazon S3,这是一种提供可扩展性、数据可用性、安全性和性能的对象存储服务。此外,Amazon CloudFront可用于加速从云中检索图像。如果您想了解此迁移是如何完成的,可以查看此视频。

结论

通过遵循本指南,您可以快速轻松地将 Web 应用程序迁移到无服务器环境,并利用无服务器的优势,例如自动扩展和按使用量付费。

这是本文建议的迁移步骤的摘要:

数据库迁移:将数据库从本地迁移到 MongoDB Atlas。后端迁移:使用 Lambda Web 适配器和 Lambda 函数 URL 将 NodeJS/Express 应用程序从本地迁移到 AWS Lambda。Web 应用程序迁移:将 React Web 应用程序从本地迁移到 AWS Amplify。身份验证迁移:迁移自定义身份验证以使用 Amazon Cognito。存储迁移:将图像的本地存储迁移到使用 Amazon S3 和 Amazon CloudFront。

下图显示了为迁移的应用程序建议的解决方案:

如果您想阅读有关如何执行此操作、为什么每项服务都被选中而不是其他服务的扩展文章,并访问原始和迁移应用程序的代码,您可以阅读“将 Web 应用程序提升和转移到 AWS 无服务器:第 1 部分”, ” 如果您更喜欢视觉效果,下面的视频也涵盖了它。

Avatar photo

作者 UU 13723417500

友情提示:现在网络诈骗很多,做跨境电商小心被骗。此号发布内容皆为转载自其它媒体或企业宣传文章,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。---无意冒犯,如有侵权请联系13723417500删除!

声明本文由该作者发布,如有侵权请联系删除。内容不代表本平台立场!

发表回复

服务平台
跨境人脉通
选品平台
U选Market
展会&沙龙
群通天下