我可以将我的asp.net应用程序移动到云端吗?

时间:2012-03-01 21:07:20

标签: asp.net .net azure amazon-web-services cloud

我们公司正在考虑迁移到云端。我们是否仍能满足我们目前的所有要求(下文)。我们希望能够在没有高成本的情况下轻松扩展。

  • 运行5个ASP.net 4.0网站(使用sql数据库,见下文)
  • SQL Server 2008 Express(此处有8个数据库)
  • 2运行调度程序服务(通过电子邮件发送夜间报告,例如db中的新订单)
  • MongoDB和Memcached也安装在服务器上

目前,出于安全原因,这些网站位于与数据库服务器不同的服务器上。

我们考虑将Windows AzureAmazon Web Services (AWS)作为提供商,最符合我们的要求?

我们还需要考虑其他因素吗?

6 个答案:

答案 0 :(得分:2)

Windows Azure上的

Re:SQL数据库:会映射到SQL Azure。对于高达100 MB的实例,成本从每月5美元开始 - 并且一直高达150 GB - 并超越了联盟。

Re:5个运行的ASP.net 4.0网站:这些地图自然会进入Windows Azure Web角色。 “小”实例是$ 0.12 /小时/实例,你通常需要两个实例(以避免一些情况下的单点故障)。根据您的负载,您可以将所有5个站点放在相同的实例上。如果您的使用率非常低,请考虑$ 0.05 /小时/实例“超小”实例。

Re:目前,出于安全原因,这些网站位于数据库服务器的单独服务器上:当然这也是可行的。

Re:2个调度程序服务正在运行:运行Windows服务没问题。

回复:通过电子邮件发送每晚报告,例如: db中的新订单:没问题,虽然没有直接进入Windows Azure,但有很多简单的方法可以做到这一点(即使是免费的,例如通过SendGrid)。

Re:我们希望能够在不增加高成本的情况下轻松扩展:您需要对实际成本进行数学计算,但Windows Azure无疑可以扩展。

Re:MongoDB和Memcache也安装在服务器上:这些都可以在Azure上运行。查看https://github.com/mongodb/mongo以查看MongoDB。此外,Azure缓存服务也可用(为您管理)。

Re:我们考虑将Azure和亚马逊作为提供商,这最符合我们的要求:这些在功能上非常相似(在功能和成本方面),但有一些值得注意的差异。

  1. Windows Azure是平台即服务,这意味着您无需担心虚拟机,而是应用程序。换句话说,您将(基本上)Zipped应用程序包上传到云端以供执行。有了亚马逊,您将自己处理虚拟机。在Azure中,您将获得一份为您管理的Windows Server 2008副本,但如果需要,您还可以对其执行管理操作。如果您的应用程序是一个不太干净的旧杂乱安装(尽管可能不是一个好的高价值云候选者),这远远不是一个优势。
  2. Windows Azure有一个非常好用的模拟器 - 从Visual Studio到F5,可以使用存储系统和虚拟机以及更受欢迎的功能。
  3. Re:我们还需要考虑其他因素:是的。对于任何云应用程序,您需要准备好处理扩展(而不是向上),处理瞬态重试(您可能需要重试对云服务的操作 - 任何云服务)。这样做的好处是更好(更具成本效益)的可扩展性和更高的可靠性(当您跨节点运行时,您没有单点故障)。确保了解VM上的存储时间/位置是持久的还是短暂的。还有更多考虑因素,但这些都是主要考虑因素。

    您可以查看Windows Azure Pricing calculator

    祝你好运!欢迎来到云端。

答案 1 :(得分:1)

除了扩展问题和2个物理服务器之外,您可以将此功能移动到托管环境中,从技术上讲,您将处于“云”状态。这可以是专用或VPS(虚拟专用服务器),如果你很小,也可以是共享服务器。

随着时间的推移,这些可以促进增长......您只需要升级提供商所拥有的内容。

您还可以将colo-server与托管服务提供商一起使用,这基本上意味着您将硬件放在托管服务提供商机架中,并使用他们的电力和带宽。它们根据带宽使用情况收费。

由于您使用的是SQL Express,请记住每个数据库限制为8GB。这样会在某些时候限制你的增长。如果您不想重新设计任何内容,那么就需要从Express升级到常规SQL。

答案 2 :(得分:1)

您考虑过AppHarbour了吗?它有MemcachedMongoDBSQL Serverso on,并且比Azure更快部署。我喜欢 Azure,但是有一个学习曲线,我发现与SQL Azure的连接非常糟糕 - 这意味着重新设计你的DAL以使用像SQL Transient Failure Library =这样的东西对现有项目有点了解。

AppHarbour没有blob存储 - 因此,如果您要上传文件,则需要使用Azure Blob存储或Amazon S3或某些等效文件。

希望这有帮助。

答案 3 :(得分:0)

不是专家,但由于Asp.net是Microsoft产品,因此应该更容易迁移到azure,尽管从我听到的内容来看AWS并不困难。您可能想要考虑的另一件事是成本。上次我检查AWS的成本要低得多,除非您已经为MSDN订阅付费。

答案 4 :(得分:0)

您总结的所有要求都不是在Windows Azure中部署的任何问题。您可以在互联网上找到有关如何执行此操作的大量信息。

请记住,如果要将服务部署到windows azure,则需要对应用程序进行一些代码检查,以修复Web应用程序上的会话状态,输出缓存等。

由于您希望将它们缩小并且它们位于非粘性循环负载均衡器后面,因此如果将其保存在计算机本身上,则会遇到会话状态问题。例如,您需要将会话状态分配到SQL Azure或Windows Azure表存储。

在Azure中安装MongoB和Memcache不是问题,你会发现很多关于如何操作的信息,但是需要一些人来设置你的角色和脚本

答案 5 :(得分:0)

codingoutloud给出了非常详细的答案。在将任何应用程序移动到Azure(或者实际上是许多其他云提供商)时,我会考虑两个非常关键的考虑事项。

当地国家
对于普通的Azure,他们保留随时关闭角色的任何一个实例以便移动或升级它的权利。这意味着您始终需要至少两个任何一个角色的实例,并且它们将透明地进行负载平衡。如果您当前的网站当前正在各个服务器上运行,那么它们可能依赖于会话状态或本地目录中的文件等。现在,有很多方法可以解决这个问题(比如将会话状态放在SQL中,使用cookie提供程序提供临时数据,使用共享驱动文件等)或者,实际上,绕过Azure的许多好处并使用他们的“虚拟服务器”概念,这意味着你没有获得规模效益等。 但是,严重依赖本地国家的网站可能难以迁移到云端。

时区
所有Azure服务器都在UTC时运行。如果您习惯在从单个时区为用户提供服务的专用服务器上运行,那么您可能会使用类似DateTime.Now()的内容,而这些内容并不真正符合用户的需求。

我没有将上述任何内容视为Azure的限制,我发现它们非常有用,可以从一开始就强制您构建全局和可扩展的解决方案。但是,在移植现有应用程序时,即使有解决方法,上述内容可能也很难适应。

正如其他地方所提到的,Azure有一个学习曲线,不知何故,文档 - 尽管很多 - 但由于某些原因似乎没有帮助。但是,一旦你“得到它”,我发现Azure非常好,有一些微妙的功能可以帮助你构建可扩展的解决方案,如整个排队基础设施,blob存储和表存储。在某些方面,学习因为选择太多而受到阻碍。

祝你好运!