【问题标题】:Should I choose cloud?我应该选择云吗?
【发布时间】:2012-01-22 05:07:56
【问题描述】:

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

问题是(经过一段时间的邀请后)该产品会受到强烈宣传,因此我预计会有相当大的流量/负载高峰。

我对云提供商的了解还不够,我主要倾向于亚马逊或 Azure,因为这两家公司的信誉没有像我应该与其他公司一样检查它们(即,我认为 Rackspace 也是一种云服务)提供者)。

我想要什么

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

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

问题

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

【问题讨论】:

  • 听起来您真正需要的是与您讨论这些事情的同事。 :)
  • @bzlm:没错。但是,如果没有人有云经验,那将与我自己完成整个调查一样富有成果的对话......而且我参与的项目仅包括我作为开发人员。所有其他人都不是......
  • 我不敢相信人们投票结束了这个问题。完全合法的,特定主题的问题。

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


【解决方案1】:

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

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

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

  1. 您在将应用程序过渡到云方面有什么经验,您选择了哪一种?为什么?
  2. 您建议我在设计/开发解决方案时应该考虑什么,以使过渡尽可能轻松。

您实际上不需要做任何不同的事情来托管在 EC2 或 Azure 上——基本上。但当然,事情发展起来就没那么容易了。

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

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

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

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

您可能想查看免费的 Azure 计划,因为无需任何费用即可开始摆弄是件好事。云提供商的一大优势是您可以非常轻松地垂直扩展:购买一台 16 核、64GB RAM 服务器机器确实很昂贵,但如果您的网站上有这么多流量,升级您的计划将不会’这不是一个大问题。

【讨论】:

  • 首先:当你说你不必做任何不同的事情时,我认为(即使我没有经验)是错误的。如果我要开发一个通常的 Asp.net MVC + SQL 数据库,我想我至少应该重新开发应用程序的 DAL 部分以将其移植到 ie。天蓝色。所以事情几乎从来没有那么简单。是的,我也很清楚每个应用程序实例必须相互共享的共享资源。这应该不是问题。
  • 第二:我的印象是亚马逊的云更类似于 round-the-corner VPS 提供商。至少是 EC2 部分。
  • 但是感谢您提供的所有信息。您是否有将 Asp.net MVC 应用程序移植到 ie 的实际经验。 Azure 还是亚马逊?
  • 我的应用使用本地 MongoDB 实例运行;它是在我的本地机器上为专用服务器开发的,我只是将它部署到 Azure。无需更改。但这取决于你想要什么。如果要使用 SQL Azure 而不是 SQL Server,则可能需要更改数据提供者。但是,如果您不需要 SQL Azure,您可以像使用其他任何服务器一样在 Azure 实例上使用本地 SQL 服务器。
  • 我刚刚发现的一件事:Azure 不保证永久 IP 地址,因此您应该通过 CNAME 而不是 A 记录对您的应用程序进行 DNS 解析。这可能会有问题,特别是如果您想使用通配符子域或 IP 敏感功能(如您自己的邮件服务器),或者您使用带有 IP 过滤的服务。
【解决方案2】:

因为还没有人提过……

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

对于全文搜索,您可以考虑类似Websolr

【讨论】:

【解决方案3】:

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

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

所以,抱歉,您没有灵丹妙药的答案。阅读可用的不同服务。考虑您的应用程序需要什么,价格是多少,然后从那里开始。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 2012-10-28
      • 2014-06-23
      • 2010-10-30
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      相关资源
      最近更新 更多