2011-02-10 36 views
3

我正在开发一个Web应用程序,并希望能够在我们的用户中错开部署新的构建版本和版本。例如...如何管理Web应用程序的逐步部署

  • 部署应用程序的新版本和迁移几个测试帐户,以它为测试
  • 测试时是快乐的,举说客户的5%到新版本和监控支持问题服务器负载问题与这些客户。
  • 如果它仍然正常,逐渐将越来越多的客户转移到新版本,直到每个人都更新。

FogCreek的Fogbugz和Kiln正在使用这样的部署系统。你可以阅读一下here...

我想在目前要解决的问题是,该系统在不同的帐号可以使用不同版本的代码的。

什么是管理和控制它的好方法? Apache可以在这里做一些繁重的工作吗?我想避免太多的开销,或者想知道在哪里发送请求的奇怪的加载器脚本。像Fogbugz on Demand这样的网络应用如何处理这个问题?有没有公​​认的设计模式?

用户通过域名(例如user1.example.com,user-bob.example.com等)进行标识。

+0

投票迁移到http://programmers.stackexchange.com – Mchl 2011-02-10 18:56:57

回答

3

有很多种方法可以完成这个工作;所以,让我们觉得在高水平而不谈架构的细节:

  • 大型公共场所像随机样本雅虎和MSN手柄设计变更,并设置有长超时cookies来确定谁应该接受新的设计。
  • 对于付费升级和beta邀请,您应该能够识别并标记哪些客户帐户将在其登录时收到新的“设计”或功能集。例如,Digg v4的新更新仅适用于登录和选择加入的客户。 Facebook在其新系统页面上展示了类似的系统。
  • 您可能决定支付beta测试者。您可以轻松使用亚马逊的Mechanical Turk或类似的网站,例如custfeedback.com

具体内容取决于您和您的架构。希望你已经用你的软件编写了这个功能;希望您能够在部署时轻松提供简单的方法来提供应用程序升级和数据库升级。 Magento(一个开源的电子商务平台)处理得很好。每个模块都以插件的形式构建,并且每个模块都保存自己版本的记录。基于配置文件中保留的新版本/将来版本,可以使用安装和升级脚本即时执行数据库升级。

您可以选择将测试版测试人员移动到比您的生产计算机具有更详细的日志记录和实时分析的新域或数据库。这是Kiln博客文章中提到的方法 - 他们引用了站点http://martinfowler.com/bliki/BlueGreenDeployment.html - 但是,最终,您完成了帐户和流量的隔离,最终必须进行整合。您需要在最有可能的维护时段内执行迁移,并让每个人都达到相同的版本。

祝你好运!