如何为 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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 IP 地址设置 Amazon S3 策略

如何为 Amazon IAP 设置 ProGuard?

如何为Amazon IAP设置ProGuard?

AMAZON AWS 我如何为端点订阅 SNS 主题?

如何为 Heroku 应用程序配置带有 SSL 的 Amazon Route

如何为 Amazon S3 存储桶配置 SSL