部署ASP.NET网站和更新MSSQL数据库,零停机时间

Tom*_*mas 9 sql-server asp.net deployment

我对ASP.NET网站和MSSQL数据库部署有疑问.我们正在托管asp.net网站并开发了新版本,一些asp.net文件被更改,数据库被修改了一点.在没有停机的情况下上传新版网站和升级MSSQL数据库的最佳原因是什么?

Dav*_*ett 13

我在过去5年中管理了一个大型网站,每月发布一次,并且在95%以上的时间内实现零停机.遗憾的是,密钥是确保数据库始终向后兼容,但仅限于以前的版本,因此您有机会回滚.

因此,如果您打算删除一个列,例如,您的应用程序依赖于:

  1. 将应用程序代码更改为不依赖于列,并释放该列(不删除数据库中的列).
  2. 下一版本中删除列(如应用程序不再依赖于它).

它需要您的开发团队的一些纪律,但如果您有适当的环境设置(开发/测试/暂存/生产),则可以轻松实现.

当你发布:

  1. 将数据库更改部署到暂存环境,该环境尽可能接近生产环境.最好以自动方式执行此操作,使用SQL Compare和SQL Data Compare之类的东西,这样您就知道数据库与您的测试环境完全一致.
  2. 使用应用程序执行"冒烟测试" ,但使用数据库模式,确保没有对数据库引入重大更改.
  3. 发布您的应用程序代码
  4. 对测试应用程序进行抽烟测试.
  5. 发布到生产.

我们为确保网站零停机而采取的另一项措施是蓝绿色部署.这涉及为每个网站提供2个文件夹,更新一个并在IIS主目录更新后切换.我在这里写了博客:http://davidduffett.net/post/4833657659/blue-green-deployment-to-iis-with-powershell


小智 1

不去做。观点。

\n\n

零停机安装\xc2\xb4s 非常难以做到,并且涉及数据库的多个副本、在暂存环境中对其进行预检查、仔细编程并重新同步数据库。

\n\n

稍微休息一下总是更好。晚上睡得很长,凌晨 2 点部署。或者早点起床。确定何时对您的用户来说租赁不方便。

\n\n

就花费在其上的时间而言,实现 100% 正常运行时间的成本非常昂贵。除非这是一个严格的商业案例,否则偶尔的停机是一个更明智的商业决定。

\n