【问题标题】:how to push new developments to production environment? [closed]如何将新的发展推向生产环境? [关闭]
【发布时间】:2008-12-23 15:50:49
【问题描述】:

一旦我们的 Web 应用程序在生产环境中使用,我们就很难通过增强或错误修复来更新它。主要原因是我们 CMS 系统设计的初始缺陷。我们通常必须花费数小时来更新每个产品环境,并且多次出现错误和长时间的调试。看起来我在抱怨,所以让我们回到讨论的客观部分。

该缺陷在于内容和编程功能如何一起存储在数据库中。所以基本上数据是如何显示的,数据本身是如何存储在数据库中的。有一些文件系统更改,但它们与内容无关。此外,应用程序本身创建了很多我们无法在数据库中跟踪的引用。

正如您在最终用户和利益相关者使用应用程序时所看到的那样,我们的开发团队必须以手动方式发布生产中的更改。

另一个问题是,当数据库被修改时,应用程序会动态更改文件系统。所以我们的开发环境和生产环境现在都不同了,为了同步它们的数据,他们的数据必须去,或者开发团队必须经历很多手工工作。

我可以解释更多,甚至可以给你一些更多的例子。如果需要,请给我留言。

【问题讨论】:

    标签: process production staging


    【解决方案1】:

    自动化手工操作。仔细记下您需要执行的所有操作,以便将应用程序从开发环境转移到生产环境,并创建一个脚本来自动运行这些操作。例如,该脚本将删除所有包含应用程序特定数据的表,然后根据应用程序的当前需求重新创建它们。

    将脚本拆分为多个部分以简化测试和调试。例如,一部分可能是 shell 命令,另一部分可能是 SQL 命令。使用充足的日志记录和错误检查。使脚本成为应用程序开发过程的一部分,并将它们置于修订控制之下。

    【讨论】:

      【解决方案2】:

      我过去肯定经历过类似的痛苦......这是我克服它们的方法。

      1. 拆分出代码数据(即数据库中不是客户数据但对应用程序运行至关重要的任何数据。将所有这些表拉到一个单独的数据库中。

      2. 编写将数据填充到数据库中的 SQL 脚本。这将允许您重新创建应用程序的骨架,而无需依赖生产数据或备份。

      3. 尽可能多地获取不会真正动态更改的数据,并将其放入属性文件和配置文件中。此类数据的平面文件存储是理想的选择。它的读取速度更快,并且不必与数据库一起维护。

      【讨论】:

        【解决方案3】:

        虽然这不能解决您的所有问题,但您可能会发现有一套“一键式”脚本/批处理文件可以刷新您的开发数据库,​​使其具有与生产数据库相同的结构,并在其中填充一些样本数据。 (这是我们在上一份工作中所做的,对我们来说效果很好)

        【讨论】:

          【解决方案4】:

          我们通过脚本以相同的方式进行所有开发、质量检查和生产部署。在 QA 和生产中没有手戳过任何东西。在我们的例子中,我们使用Ant,但这只是因为它为我们提供了进行所有更改所需的功能。因此,您需要像任何其他代码一样控制构建过程并将其版本化为脚本。

          【讨论】:

            【解决方案5】:

            听起来你也可以使用一个好的数据库比较工具。它可以帮助您生成允许您在环境之间迁移的脚本等。

            如果你有SQL Server,听说Red Gate有很好的工具,比较工具叫做SQL Compare。

            我也有同样的看法,您需要弄清楚如何通过安装程序、SQL 脚本或自定义 .NET 应用程序来自动化“升级”,以操纵数据库和“升级”。

            【讨论】:

              【解决方案6】:

              此外,您可能对Liquibase 感兴趣。它是一个开源工具,用于跟踪数据库数据和模式更改,并且可以轻松地应用您在生产环境中对开发数据库执行的重构。它是独立的 DBMS(供应商)。我还建议自动执行升级产品部署的步骤,如前所述。

              【讨论】:

                猜你喜欢
                • 2020-10-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-06-04
                • 2011-09-08
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多