【发布时间】:2015-07-24 17:36:25
【问题描述】:
我们有一些网络应用程序,现在这些网站正在升级,不是第一次,但是对于用户和开发者来说,控制版本变得非常困难。
我们有很多客户,其中一些正在运行相同的应用程序,但他们需要支付升级费用。但是,并非所有客户端都为升级付费,因此我们有一些客户端运行一个版本,而另一个客户端运行另一个版本。
我们有两种方法,我们正在研究第三种方法:
- 将版本放在路径中,像这样:
www\project\version\system-files
但这种方式让一些用户感到困惑,因为对于他们来说,URL变成了:www.website.com/app-version,而当系统升级时,URL会发生变化。
- 将版本放入函数中,像这样:
function V1_functionX()
当函数需要升级时,我们创建一个新函数,名为V2_functionX。但是,这样创建了一个“胖”的网站,团队在开发过程中犯了一些错误,因为我们没有“一个开发版本”,而是“开发多个版本”,而且有些功能在多个网站中使用。
第一种方式很久以前就被放弃了。我们开发了 Web 应用程序,并“关闭了版本”,所有请求都包含在升级版本中,完成后的版本也被“关闭”。但这太慢了,也进行了更正并部署了“小升级”
我们谈到了另一家公司的方式:他们“关闭”网站以升级系统。这可能是我们的方式。
但是,如果有人有其他想法不关闭网站以升级应用程序,我们很乐意倾听。
注意:这与 SVN 无关。
【问题讨论】:
-
您是否希望同时维护多个实时版本(可能针对不同的客户)?或者这只是在你的 VCS 中创建不同的功能分支?
-
在我看来,名为
V1_functionX()的函数是一个重要的警告指标,表明开发方法出现了问题。您能否详细说明为什么要“开发多个版本”? -
您还有一个关于在升级网站时不关闭网站的问题 - 这是否相关?有可能,是的 - 广泛地说,您在服务器上的其他地方“构建”网站并运行脚本来修改符号链接。或者您可以在构建过程中修改虚拟主机定义,然后优雅地重启网络服务器。但这可能值得提出自己的问题,因为这是一个很大的话题。
-
您应该使用诸如 GIT 之类的 VCS ... 每个站点都可以有自己的存储库,并且可以从主存储库“拉”:分支 .. 您现在所做的事情存在严重缺陷,并且会造成几乎不可能的管理和头痛。
-
感谢您的 cmets。我们的团队有一些担忧,这个问题变得非常有问题。我们有很多客户,运行着不同版本的应用程序。
标签: php architecture system upgrade web-site-project