设置预发布和生产环境,最小化在简单托管上的停机时间。

4
我有一个ASP.NET MVC 3应用程序,WouldBeBetter.com,目前托管在Windows Azure上。我订阅了一个介绍性的特别套餐,免费使用了几个月,但现在开始付费后发现价格非常昂贵(平均每月150欧元!)。对于一个暂时无法产生收益的网站来说,这太过昂贵了,因此我决定转移到常规的主机提供商(DiscountASP.Net)。

不过,我真正会错过的是Azure提供的分离的演示和生产环境以及零停机环境交换。

我的问题是,在托管在传统提供商上时,我该如何“模拟”一个演示环境?并且,在新部署中最小化停机时间的最佳方法是什么?

谢谢。

更新:我选择了我选择的答案,并不是因为我认为它是最好的方法,而是因为它在这一点上对我来说是最有意义的。

3个回答

4
在放弃Windows Azure之前,有几件事情可以做来降低每月的费用。例如:
  • 如果您既有Web角色又有Worker角色,请将它们合并。将后台处理、队列处理等运行在Web角色中(在OnStart()中进行耗时的启动,然后只需添加一个Run()覆盖来调用队列处理等)。
  • 考虑使用新的Extra Small实例,其成本不到Small实例的一半。
  • 在您确信生产代码运行良好后,请删除Staging部署。但请保留cspkg文件,存储在Blob存储中,以便随时重新部署。

我实际上只有一个Web角色,并且确实在将其升级到生产环境后,总是会删除暂存部署。成本本来就很高。Extra Small实例可能会有所帮助,但您需要2个实例才能遵守SLA,并且通过放弃Azure,我实际上每年将节省数百欧元。我真的很喜欢这个平台,但对于我的网站来说,它还没有意义。 - Sergi Papaseit
好的。不过请考虑一件事情:当您转移到廉价主机时,如果机器崩溃,您将处于单实例模式,并且没有SLA(服务级别协议)(他们必须在另一个盒子上重新启动您)。您可以使用Azure进行相同的操作,并接受这样一个事实,即在操作系统升级、硬件移动等过程中,您会定期看到几分钟的停机时间。这只是一个思路…… - David Makogon

3
我自己使用DiscountASP。这是相当基础的托管服务,有点过时了。但是我发现只需创建一个子目录并将我的测试版本发布到那里就可以很好地解决问题。它不太花哨也不太漂亮,但确实能完成任务。
为了做到这一点,您需要先创建子目录,然后进入控制面板告诉DASP该目录是应用程序。然后您还必须考虑该目录的web.config将是其自身和父级web.config的组合。您还必须考虑该子目录的robots.txt以及通常保护它免受好奇的人的侵害。
您也可以通过子域来完成这个操作,这取决于您的域名设置。
另一个选择:AppHarbor?他们有一个免费计划。如果您可以在他们的免费计划范围内工作,它可能会很好(我从未使用过他们,但目前有兴趣尝试)。

谢谢,我也是这么想的,因为没有更好的选择并且考虑到成本。在部署到“生产环境”时,您如何处理停机时间? - Sergi Papaseit
我通常在晚上或周末更新生产环境,这是一种相当常见的方法。我的应用程序面向公司内部,而不是面向公众,因此我有实际的停机时间可以利用。 - Matt Greer

0

1)获取自动化部署工具。有许多免费/开源工具,实际上百万/十亿美元的公司也用它们来部署生产环境。

2)获取第二个与第一个完全相同的托管套餐。将其用作您的临时环境,仅当临时环境审核通过后再重新部署到生产环境。


事实上,远离Azure的整个意图是为了最小化成本,因此增加第二个托管账户的费用并不是我期望的事情。 - Sergi Papaseit
如果你转移到一个价格不到一半的包裹,那么你已经领先了。此外,我想托管服务可能会提供一个套餐交易,让你在第二个服务器上获得折扣。无论如何,你的舞台需要尽可能接近生产环境,否则你就失去了分期的目的。 - corsiKa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接