一旦我们的Web应用程序在生产环境中使用,我们就很难通过增强功能或错误修复来更新它。主要原因是我们的CMS系统设计的初步缺陷。我们通常需要花费数小时来更新每个prod环境,并且多次出现错误和长时间的调试。看起来我在抱怨所以让我们回到讨论的客观部分。
缺陷包括内容和编程功能如何一起存储在数据库中。所以基本上如何显示数据并将数据本身存储在数据库中。有一些文件系统更改但它们与内容无关。此外,应用程序本身会创建许多我们无法在数据库中跟踪的引用。
正如您所看到的,当最终用户和利益相关者使用该应用程序时,我们的开发团队必须以手动方式发布生产中的更改。
另一个问题是应用程序在修改数据库时动态更改文件系统。因此,我们的开发环境和生产环境现在都是不同的,为了同步它们,他们的数据必须要去,或者开发团队必须经过大量的手工工作。
我可以解释更多甚至为您提供更多示例。如果需要,请给我发一条评论。
答案 0 :(得分:2)
自动化手工。请仔细记下为将应用程序从开发环境移至生产环境而需要执行的所有操作,并创建脚本以自动运行这些操作。例如,该脚本将删除包含特定于应用程序的数据的所有表,并根据应用程序的当前需求再次创建它们。
将脚本拆分为多个部分以简化测试和调试。例如,一部分可以是shell命令,另一部分是SQL命令。使用充足的日志记录和错误检查。使脚本成为应用程序开发过程的一部分,并将它们置于版本控制之下。
答案 1 :(得分:1)
我过去肯定经历过类似的痛苦......这就是我克服它们的方式。
拆分代码数据(即数据库中的任何数据,不是客户数据,但对应用程序的运行至关重要。将所有这些表拉入单独的数据库。
< / LI>编写将该数据填充到数据库中的SQL脚本。这样您就可以在不依赖生产数据或备份的情况下重新创建应用程序的框架。
尽可能多地获取未真正动态更改的数据,并将其放在属性文件和配置文件中。这种数据的平面文件存储是理想的。它读取速度更快,而且不必与数据库一起维护。
答案 2 :(得分:0)
虽然这不能解决您的所有问题,但您可能会觉得有用的是一组“一键”脚本/批处理文件,这些脚本/批处理文件刷新您的dev db以具有与生产相同的结构并用一些填充它样本数据。 (这就是我上一份工作所做的,对我们来说效果很好)
答案 3 :(得分:0)
我们通过脚本以相同的方式完成所有开发,QA和生产部署。在质量保证和生产过程中,没有任何一只手可以探索。在我们的例子中,我们使用Ant,但仅仅因为它为我们提供了进行所有更改所需的功能。因此,您需要控制构建过程并将其作为脚本进行版本控制,就像任何其他代码一样。
答案 4 :(得分:0)
听起来你也可以使用一个好的数据库比较工具。它可以帮助您生成允许您在环境之间迁移的脚本等。
如果你有SQL Server,我听说Red Gate有很好的工具,比较工具叫做SQL Compare。
我同样认为,您需要弄清楚如何通过安装程序,SQL脚本或自定义.NET应用程序自动化“升级”来操作数据库和“升级”。
答案 5 :(得分:0)
此外,您可能对Liquibase感兴趣。它是一个用于跟踪数据库数据和模式更改的开源工具,可以轻松应用您在生产环境中的dev db上执行的重构。它是DBMS(供应商)独立的。我还建议自动执行前面提到的升级prod部署的步骤。