【问题标题】:How to manage gradual deployment of a web app如何管理 Web 应用程序的逐步部署
【发布时间】:2011-02-10 17:51:12
【问题描述】:

我正在开发一个网络应用程序,并希望能够在我们的用户之间错开部署新的构建和版本。比如……

  • 部署新版本的应用并将几个测试帐户迁移到其中进行测试
  • 当测试满意时,将 5% 的客户转移到新版本,并监控这些客户的支持问题和服务器负载问题。
  • 如果一切正常,请逐步将越来越多的客户转移到新版本,直到每个人都更新为止。

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

我目前试图解决的问题是系统上的不同帐户可以使用不同版本的代码

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

通过域名识别用户(例如 user1.example.com、user-bob.example.com 等)。

【问题讨论】:

标签: php apache deployment


【解决方案1】:

有数百种方法可以轻松实现这一点;因此,让我们在不讨论架构细节的情况下从高层次思考:

  • Yahoo 和 MSN 等大型公共网站使用随机样本处理设计更改,并设置具有较长超时时间的 cookie,以确定谁应该接收新设计。
  • 对于付费升级和测试版邀请,您应该能够识别和标记哪些客户帐户将在登录时收到新的“设计”或功能集。例如,Digg v4 的新更新仅适用于已登录和选择加入的客户。 Facebook 在其系统中也推出了类似的新个人资料页面。
  • 您可以决定为 Beta 测试人员付费。您可以轻松使用亚马逊的 Mechanical Turk 或 custfeedback.com 等网站

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

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

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多