如何为 Amazon Web Service 重构 Java Web 应用程序?
Posted
技术标签:
【中文标题】如何为 Amazon Web Service 重构 Java Web 应用程序?【英文标题】:How to refactor Java web application for Amazon Web Service? 【发布时间】:2018-03-01 19:46:01 【问题描述】:我刚刚将我的 Spring 应用程序从 VPS 提供商迁移到了 Amazon Web Service。所以我所做的是:
-
在 EC2 中重新部署我的应用,
将 DB 连接从 localhost:3306 更改为 RDS MariaDB,
为所有文件上传操作实现 S3
等等
我现在设法让我的应用在 AWS 下稳定运行。
现在我需要对我的应用程序进行一些增强,然后我意识到我不能简单地在我的笔记本电脑中复制那些 RDS 和 S3 功能。所以我转向了 Eclipse 的 AWS Toolkit,因为它提供了很好的开发和测试体验。但我发现大多数 AWS Toolkit 制作 Java Web 应用程序的教程都是使用 AWS Elastic Beanstalk 资源。我当前未使用的应用程序。
我现在的问题是:我是否必须重构我的应用程序才能使用 Elastic Beanstalk? (这种方法肯定不利于我)......或者无论如何(必须)我可以在 AWS 中开发 java web 应用程序而不使用 Elastic Beanstalk 并且仍然使用 AWS Toolkit 的权限?
请在此之前做过此操作的任何人向我显示链接或教程?
问候, 溴
【问题讨论】:
不,您不需要将应用程序迁移到 Elastic Beanstalk(尽管如果您愿意,也可以这样做)。 EB 只是将代码部署到 AWS 的众多选项之一。云的优势之一是您可以轻松启动一个并行环境,在部署到生产系统之前在其中进行测试。当您的系统在 VPS 提供商中运行时,您是如何部署生产更新的? 是的...我知道,因为我是通过使用 EC2... /跨度> 有很多选择,所以您应该阅读d0.awsstatic.com/whitepapers/… 来帮助您做出决定。从可用的最少信息来看,CodeDeploy 可能是最简单、最合适的选择。 【参考方案1】:您不必,甚至不需要使用 Elastic Beanstalk。到目前为止,您所做的一切都是完全合理的。此外,Elastic Beanstalk 确实无法帮助您解决在本地运行的问题。它可以帮助您在 AWS 上启动一个测试环境,但如果您想完全在本地运行它,您仍然会遇到同样的问题。
关于从本地笔记本电脑运行的东西,您应该能够在本地运行数据库服务器。在本地计算机上运行时,您似乎无法让应用程序连接到本地数据库,而不是尝试连接到 RDS 数据库,是否有特定原因?
对于 S3,您可以维护一组单独的代码,在本地运行时使用本地文件系统,尽管这会阻止您测试 S3 代码。或者,您可以设置一个“测试”S3 存储桶,并在本地运行时让您的代码连接到该 S3 存储桶。另一种选择是在本地运行某种 S3 仿真器服务,例如 this,但我从未使用过其中的一个,所以我不能说它的效果如何。
【讨论】:
我仍然有使用本地数据库和文件系统的原始代码。但是后来我必须维护2个版本的代码......我想使用AWS Toolkit的原因是跳过那些提交到repo,从我的EC2中提取,编译然后测试我的应用程序太多次......只是为了看看是否或不是我的控制器或服务按预期工作(忽略单元测试) 不应该有两个版本的代码来支持不同的数据库服务器。这应该只是改变你的数据库连接字符串的问题,这应该是一个环境变量。 是的,正确..我实际上使用的是 tomcat jndi 或 context.xml...我猜它更多地在 s3 上...也许我只是重构了 S3 相关部分以启用 1 个版本的代码以上是关于如何为 Amazon Web Service 重构 Java Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章