Php 如何管理web应用程序的逐步部署

Php 如何管理web应用程序的逐步部署,php,apache,deployment,Php,Apache,Deployment,我正在开发一个web应用程序,希望能够在我们的用户之间错开新版本的部署。例如 部署新版本的应用程序,并将几个测试帐户迁移到其中进行测试 测试满意时,将5%的客户迁移到新版本,并监视这些客户的支持问题和服务器负载问题 如果仍然正常,则逐渐将越来越多的客户转移到新版本,直到每个人都得到更新 Fogbugz和Cinel正在使用这样的部署系统。你可以读到它 我目前试图解决的问题是系统上的不同帐户可以使用不同版本的代码 管理和控制这种情况的好方法是什么?阿帕奇能在这里做一些繁重的工作吗?我希望避免过多

我正在开发一个web应用程序,希望能够在我们的用户之间错开新版本的部署。例如

  • 部署新版本的应用程序,并将几个测试帐户迁移到其中进行测试
  • 测试满意时,将5%的客户迁移到新版本,并监视这些客户的支持问题和服务器负载问题
  • 如果仍然正常,则逐渐将越来越多的客户转移到新版本,直到每个人都得到更新
Fogbugz和Cinel正在使用这样的部署系统。你可以读到它

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

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


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

实现这一点的方法有数百种;因此,让我们从更高的层次思考,而不谈论架构的细节:

  • 雅虎(Yahoo)和MSN等大型公共网站通过随机样本处理设计变更,并设置长时间超时的cookie,以确定谁应该接受新设计
  • 对于付费升级和测试邀请,您应该能够识别并标记哪些客户帐户在登录时将收到新的“设计”或功能集。例如,Digg v4的新更新仅针对登录和选择的客户。Facebook也在他们的系统中推出了类似的新个人资料页面
  • 您可以决定支付测试版测试人员的费用。您可以轻松使用亚马逊的Mechanical Turk或custfeedback.com等网站
具体细节将取决于您和您的体系结构。希望您在编写软件时考虑到了这一功能;希望您已经提供了在部署时轻松提供应用程序和数据库升级的简单方法。Magento(一个开源电子商务平台)很好地处理了这个问题。每个模块都以插件的形式构建,其每个组件都记录自己的版本。根据配置文件中保留的新/未来版本,使用安装和升级脚本动态执行数据库升级

您可以选择将beta测试人员移动到一个新的域或数据库,该域或数据库比生产机器具有更详细的日志记录和实时分析。这是窑炉博客文章中提到的方法——他们引用了该网站——最终,无论你如何实现帐户和流量的分离,你最终都必须进行整合。您很可能需要在维护窗口中执行迁移,并让每个人都升级到相同的版本

祝你好运

投票迁移到