我对ASP.NET网站和MSSQL数据库部署有疑问。我们正在托管asp.net网站并开发了新版本,一些asp.net文件被更改,数据库被修改了一点。在没有停机的情况下上传新版网站和升级MSSQL数据库的最佳原因是什么?
答案 0 :(得分:13)
我在过去的5年中通过每月发布管理了一个大型网站,并且在95%以上的时间内实现零停机。遗憾的是,密钥是确保数据库始终向后兼容,但仅限于之前的版本,因此您有机会回滚。
因此,如果您打算删除一个列,例如,您的应用程序依赖于:
您的开发团队需要一些纪律,但如果您拥有合适的环境设置(开发/测试/升级/生产),则可以轻松实现。
发布时:
我们确保在网站上实现零停机的另一件事是蓝绿色部署。这涉及为每个网站提供2个文件夹,更新一个并在IIS主目录更新后切换。我在这里写了博客:http://davidduffett.net/post/4833657659/blue-green-deployment-to-iis-with-powershell
答案 1 :(得分:1)
不要这样做。点。
ZERO停机安装非常困难,涉及数据库的多重复制副本,在分段启动中进行预先检查,仔细编程并重新同步数据库。
停机时间过长总是好一点。在深夜睡觉,早上2点部署。或者早点醒来。确定何时对您的用户来说不方便。
就花费的时间而言,100%的正常运行时间对于imeplement来说是非常昂贵的。除非这是一个严格的商业案例,否则偶尔的停工时间是一个更加明智的商业决策。
答案 2 :(得分:0)
即使像salesforce.com和ebay.com这样的大型网站也安排了维护窗口,其中由于后端的更改,这些网站中至少有一部分在一段时间内不可用。
对于ebay来说,它是每Thursday nig ht并且持续4小时,其中“某些功能在此期间可能很慢或不可用”。对于salesforce,they schedule and notify users根据需要。
根据您的网站,您可能最好安排在您的网站处于最低流量水平的某个较晚时间安排1小时的窗口。在1周前,1天前和1小时前提前通知用户。
在将其脱机之前,请确保从另一台服务器上当前生产数据库的副本测试部署。这将让您了解可能遇到的任何问题,并让您知道应该花多长时间。通知用户时该号码加倍。多次运行测试以确保不仅要花费时间,还要验证数据的一致性。
对于在非常短的时间内并行运行版本以便推送更新,Duffman有一个很好的答案。但是,它们通常是数据模型更改的原因,通常最好在部署时转换所有现有数据。运行此转换可能使某些事务在进行时无效并导致数据损坏。
经历了许多“热门”的生产推动后,我可以100%肯定地说,我和我的客户都不想再与他们打交道。绝对没有错误的余地。