我应该选择云吗?

时间:2011-12-16 17:51:10

标签: asp.net-mvc transition cloud-hosting

我即将开始开发一个具有非常不确定的负载/流量细节的项目。当它被释放时,肯定会有非常低的负载,可以通过单个桌面四代码机轻松处理。

问题在于(在一些邀请期限之后)产品的强烈宣传,因此我预计会有相当大的流量/负载达到峰值。

我还没有充分了解云提供商,而且我主要倾向于亚马逊或Azure以获得这两家公司的信誉,而不是像其他人那样检查它们(即我认为Rackspace也是云服务)提供者)。

我想要什么

我想创建一个可以在内部单机低成本服务器上运行的普通Asp.net MVC Web应用程序。它将运行Web服务器以及数据库(关系,也可能是文档)和全文搜索(不是SQL FTS,而是像Lucene或Sphinx这样的高速独立产品)。但在最初的邀请期后,我想将此应用程序迁移到云端,以使其对流量/负载的需求更加友好。

据我所知,亚马逊提供了一种虚拟机托管,据我所知,您将其设置为普通服务器,但在负载功率方面可能具有灵活的资源。我不确定是否可以在Azure上完成。

问题

  1. 您在应用程序过渡到云的过程中有什么经验?您选择了哪一个?为什么?
  2. 您在设计/开发解决方案时应该考虑什么,以尽可能轻松地进行过渡。
  3. 根据您的经验,最好是迁移到云端(财务方面)还是自己购买自己的服务器和负载均衡应用程序更好,从长远来看可能省钱?

4 个答案:

答案 0 :(得分:4)

“云”是一个模糊的术语。不过,我认为这是一个非常好的问题。

基本上,IaaS云托管会神奇地使您的应用程序扩展。它实际上是一个虚拟私人服务器,合同/取消期很短。

对于可扩展性,主要不在于托管,而在于应用程序代码本身的水平可伸缩性。这与所有分布式计算挑战有关。例如,添加更多应用程序服务器并不总是很容易:您必须确保不在服务器应用程序中保留任何用户状态(而是在数据库中,static可能是邪恶的),缓存可能会有问题因为当你使用循环策略等时,本地缓存会使情况变得更糟。

  
      
  1. 您在应用程序过渡到云的过程中有什么经验?您选择了哪一个?为什么?
  2.   
  3. 您在设计/开发解决方案时应该考虑什么,以尽可能轻松地进行过渡。
  4.   

你不需要做任何不同的事情只是为了在EC2或Azure上托管 - 基本上。但当然,事情发展并不容易。

例如,EC2实例存储相当有限。但是,EBS上的额外存储不提供可比较的性能特征,并且可能比磁盘更滞后。这里的重点是EBS 神奇地扩展,它可能比IaaS更多PaaS;但它不是一个简单的硬盘,因此它的行为不像硬盘。我不知道Azure块存储。通常,期望额外的抽象层引入自己的问题,无论他们做什么。

  
      
  1. 根据您的经验,最好是迁移到云端(财务方面)还是自己购买自己的服务器和负载均衡应用程序更好,从长远来看可能省钱?
  2.   

典型的云提供商比通常的'角落VPS提供商更昂贵,但根据我的经验,它们也更加可靠和专业。 EC2有一个免费等级(但它非常小),Azure为您提供一个免费的小实例3个月。

做正确的计算是相当棘手的;例如,如果您因任何原因必须关闭服务,那么能够取消现在而不是再支付一年是很好的 - 您可能希望将此风险计入您的计算中。另一方面,如果您注册6个月或12个月,而不是按小时付费,EC2和Azure都会相当便宜。

您可能想要查看免费的Azure计划,因为开始摆弄并且不花任何费用是很好的。云提供商的一大优势是您可以非常轻松地纵向扩展:购买 16核,64GB RAM服务器机器非常昂贵,但如果您的网站上有如此多的流量,升级您的计划就会赢得'这是一个很大的问题。

答案 1 :(得分:3)

有人还没有提到它......

AppHarbor令人惊叹。你可以在几分钟内推送东西。部署轻而易举。并且为它设置项目也更容易。它甚至不需要对您的解决方案进行任何重大更改。

对于全文搜索,您可能会考虑使用Websolr

答案 2 :(得分:1)

这很大程度上取决于你的应用程序正在做什么(例如,是否有可分离的组件可能会受益于在不同的实例上运行,而不是具有前端的简单CRUD应用程序)。需要考虑的一件事是,在云应用程序中,您通常没有传统的关系数据库。因此,您必须选择云或传统托管,或计划对访问层进行两次编码。 Azure确实有关系数据库(SQL Azure),尽管它们与SQL Server 2008R2不同。您将不得不根据具体情况研究云设置的优缺点。

就财务问题而言,通过托管公司而不是云服务获得帐户通常要便宜得多,因为您按月支付,而不是按小时支付(上次我在Azure运行时检查帐户)一个月24/7的费用大约是40到50美元,而你可以每月15美元的托管费用。当您必须运行多台服务器时,云计算可以节省成本,而维护它们的成本将超过云平台上实例的成本。

所以,对不起,没有银弹答案给你。阅读可用的不同服务。考虑一下您的应用需求,价格,并从那里开始。

答案 3 :(得分:0)

我刚刚将基于MVC的应用程序从专用服务器迁移到Azure。迁移MSSQl数据库时,我首先尝试导入.bacpak文件,但由于其大小,某些表失败。然后,我使用了SQL Database migratio wizard,它适用于小型表,但对于具有BLOB字段的表失败。对于这些表,我不得不使用临时中间表。然后在转移完所有数据一段时间后,设置Webapp变得轻而易举,我们开始投入生产。起初,一切似乎都运行得很好,但是在负载变重的几个小时之后,发生了所有类型的错误。我进入了Azure门户,很容易看到