0

我们基本上拥有基于 J2EE 的应用程序。它是跨全球(多个时区)运行的小型电子商务应用程序。每当我们必须部署补丁时,大约需要 3 个小时(数据库备份、数据库更改、Java 更改、QA 冒烟测试)。我知道它太高了。我想将此部署时间缩短到 30 分钟以内。现在我将简要介绍一下应用程序基础架构:我们有两个 Jboss 服务器和单个 DB,为两个 jboss 服务器配置了负载平衡器。它不是集群环境。目前我们所做的:我们同时关闭 jboss 和 DB
进行 DB 备份 更改 DB,运行一些脚本 更改 java,运行补丁 以上步骤对我们来说大约需要 2 小时,而 QA 将进行 1 小时的测试。而不是启动服务器。

你能建议一些更好的方法来实现这一目标吗?我的主要问题是,当我们有多个 jboss 和单个 DB 时。如何使部署顺利

4

1 回答 1

0

我听说 Netflix 使用的一种方法,但我自己没有机会使用:

  1. 使您的所有数据库模式更改都与当前运行的软件版本以及您将要部署的软件版本向前和向后兼容。使新软件版本继续写入旧版本需要的任何数据。希望这是一个最小的集合。

  2. 备份您正在运行的数据库(大多数数据库不需要停机进行备份),并在软件部署前至少一周部署您的数据库架构更新。

  3. 一旦您的数据库更改已经生效并且当前运行的版本似乎没有错误,请重新配置您的负载均衡器以仅指向您的 JBoss 服务器的一个实例。将更新后的软件部署到另一个实例,并让 QA 对其进行脱机冒烟测试,同时另一个服务器继续处理生产请求。

  4. 当 QA 对结果感到满意时,将 LB 指向离线 JBoss 服务器(使用新软件)。当它上线时,在新离线的 JBoss 服务器上更新软件,如果需要,可以进行 QA 冒烟测试。如果成功,将 LB 指向两个 JBoss 实例。

  5. 如果 QA 发现重大错误,并且无法快速修复错误和“前滚”,则回滚到已部署软件的先前版本。由于您的架构和新代码向后兼容,因此您不会丢失数据。

  6. 在您的下一次部署中,从架构中删除所有垃圾(例如当前部署未使用的列),使其仍然向后和向前兼容。

虽然比您当前的方法更复杂,但这种方法应该可以以最小的风险减少您的部署停机时间。

于 2013-06-23T18:26:28.780 回答