我的问题实际上包含多个问题。我经常阅读有关使用实时“数据库”为部分客户部署一小部分功能的公司。 Ruby on Rails及其生态系统具有部署工具和数据库迁移,可在实时生产或登台环境中部署或回滚此类功能。
我的问题是,如何为asp.net(特别是mvc)应用程序完成这项工作?如何针对实时数据测试新发布的功能?您是否有任何工具可以修改现有数据库并在必要时回滚更改?您是否在部署之前进行备份?
更新
也许我应该指出我的问题不是很清楚,在这里获得更多答案将有助于我更好地表达问题。为了方便起见,我将描述一些我常常与一些客户见过的情况。
我的客户有大量流行的Web应用程序部署。他们没有登台/ QA /测试服务器。 (是的,这不是最佳的)。他们的应用程序包含的数据是图像,xml文件,用户上传和Sql Server中的数据。在我看来,拥有一些记录,他们的生产数据库和几个虚拟文件不能代替对真实数据进行测试。如何设计一个工作流程,可以创建一个可接受的环境来模仿生产环境,然后再上线?
另一次更新
我仍然想知道您可以使用哪些工具或程序来获取生产数据(文件,数据库)的真实快照,以便您可以构建自己的Q&一个环境。整个数据库和与之相关的文件太大,无法完全复制到Q&一台服务器。但是如果你只是复制每个表的前几行,它们可能彼此没有关系,并且在整个地方给出随机错误或意外行为,并且不反映真实的生产数据库。
PS。如果有人理解我的目标,并有更好的方式来表达我的问题,请随意编辑我的!
答案 0 :(得分:8)
如何测试新发布的内容 针对实时数据库的功能?
你没有。您针对数据库的QA版本测试新功能和修复,然后在审核后将代码更改和任何数据库架构更改提升到生产服务器。
Red Gate生产的产品对于打包数据库修改非常有用,可用于升级和回滚数据库架构更改。
<强>更新强>
测试环境实际上无可替代。你不能对生产进行测试,这太危险了。没有专用测试环境,您可以做的最好的事情就是在开发环境中尽可能准确地模拟生产行为。使用虚拟机运行服务器操作系统(即Windows Server 2003),并尽可能将这些虚拟机配置为生产服务器的设置方式。
另一个更新:
您可以使用Filesync之类的diff工具在QA和Production环境之间同步应用程序文件。如果由于某种原因,您不能在QA中维护生产数据库的完整副本,那么请使用脚本“分出”并导出足够完整的数据进行测试。
我还建议The Build Master。它是软件开发的配置管理,源代码控制和构建管理的绝佳参考。
答案 1 :(得分:1)
QA是要走的路,你已经告诉过你了解它。如果有一个QA框不是一个选项,为什么不有一个仅用于测试的虚拟网站。您可以拥有一个靠近生产数据库。您可以在单独的应用程序池中针对数据库副本运行此虚拟网站,并在需要时重置应用程序池,而不会妨碍生产。完成后,删除数据库副本并将更改汇总到实际网站。
注意 - 这只是一种解决方法,直到您获得真正的质量检查设置。
答案 2 :(得分:0)
这是一个有趣的问题,但你无法将rails与ASP.Net MVC 1:1进行比较,因为ASP.Net MVC只是一个UI-Framework而不是像rails(或grails)这样的全栈框架。
因此,关于数据库的问题取决于您使用何种数据访问技术。如果你使用NHibernate,有一些支持。但是使用Microsoft数据访问技术(数据集,linq2sql,实体框架),我不知道如何自动执行迁移或降级数据库模式(使用数据迁移)等方法。