我正在开发一个Web应用程序,并希望能够在我们的用户之间错开部署新版本和版本。例如......
来自FogCreek的Fogbugz和Kiln正在使用这样的部署系统。你可以阅读它here...
我目前要解决的问题是系统上的不同帐户可以使用不同版本的代码。
管理和控制这个的好方法是什么? Apache可以在这里做一些繁重的工作吗?我想避免过多的开销,或者奇怪的加载器脚本来确定发送请求的位置。像Fogbugz on Demand这样的网络应用如何处理这个问题?是否有公认的设计模式?
通过域名识别用户(例如user1.example.com,user-bob.example.com等)。
答案 0 :(得分:3)
有很多方法可以实现这一目标;所以让我们在没有谈论架构细节的情况下进行高级思考:
具体细节取决于您和您的架构。希望您已经编写了具有此功能的软件;希望您提供了在部署时轻松提供应用程序和数据库升级的简便方法。 Magento(一个开源电子商务平台)处理得非常好。每个模块都以插件的形式构建,每个模块都记录了自己的版本。使用基于配置文件中保留的新/未来版本的安装和升级脚本,即时执行数据库升级。
您可以选择将Beta测试人员移动到新域或数据库,该域或数据库具有比生产计算机更详细的日志记录和实时分析。这是Kiln博客文章中提到的方法 - 他们引用了网站http://martinfowler.com/bliki/BlueGreenDeployment.html - 最终,无论您完成了帐户和流量的隔离,您最终都必须进行整合。您需要最有可能在维护窗口中执行迁移,并使每个人都达到相同的版本。
祝你好运!