Web应用程序部署和数据库/运行时数据管理

时间:2011-03-03 15:13:14

标签: deployment data-migration production-environment web-deployment

我已经决定最终确定我的团队的部署流程,从头到尾。我们最后一个难点是管理数据库和运行时数据迁移/管理。以下是两个例子,尽管存在许多例子:

  • 如果发布新的“上传”功能,则自动创建上传目录并配置权限。在以后的版本中,验证存在/权限 - 永远,自动。
  • 如果数据库中的值(假设“注册”的帐户状态)不再有效,则在给定一组业务规则的情况下,自动将数据库中的数据迁移到正确的值。

我感兴趣的是实现一个框架,允许开发人员管理和部署这些更改,同样方便我们管理和部署代码。

所以第一个问题是: 1。哪些工具/框架能够提供这种能力?

一般来说,这似乎是任何特定语言和平台的问题。在我的具体情况下,我正在部署一个.NET MVC2应用程序,该应用程序使用Fluent NHibernate进行数据库抽象。我已经在我的部署过程中有一个触发NHibernate的SchemaUpdate的工具 - 这太棒了。

我以自己的方式解决这个问题,是一个工具,它将扫描目标程序集中从某个抽象类继承的类(部署)。该抽象类公开了可以覆盖并实现自己的任意部署代码的钩子 - 在应用程序的代码库的上下文中。 Deployment类还提供了版本控制机制,该工具管理给定运行应用程序的当前“部署版本”。然后,自定义的NAnt任务将其与NAnt部署脚本粘合在一起,在适当的时间触发挂钩。

这似乎运作良好,并且确实符合我的目标 - 但这是我的牛肉,并导致我的第二个问题: 2。当然我刚刚写的东西已经存在了。如果是这样,你能指点我吗? 3。有没有人开始沿着这条道路前进并深入了解这种方法的问题?

最后,如果这样的东西存在,但不存在于.NET平台上,请仍然让我知道 - 因为我对移植已知解决方案比对自己的解决方案从零开始更感兴趣。

谢谢大家,非常感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

每个主要版本都有一个脚本来创建具有您所需要的确切要求的环境。

对于次要版本,请将脚本拆分为各种版本并逐步更改环境。这个有很多好处

  1. 您可以通过阅读脚本并将其与发行说明和更改日志相匹配来查看环境随时间的变化。
  2. 您可以通过运行最新的主要脚本和最新的次要脚本来创建全新的环境。
  3. 您可以通过将其指定为在某个次要版本停止来创建以前版本的全新环境(可能用于测试目的)。