2012-03-01 93 views
0

我们公司正在考虑转向云计算。我们是否仍能满足我们目前的所有要求(如下)。我们希望能够在未来高成本的情况下轻松扩展。我可以将我的asp.net应用程序移动到云端吗?

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

目前该网站是从出于安全原因,该数据库服务器的单独服务器上。

我们在考虑Windows AzureAmazon Web Services (AWS)作为供应商,哪种最符合我们的要求?

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

+1

如果您可以支付价格,您当然可以将所有内容移至Amazon EC2实例。从小而便宜的东西开始,建立起来会很容易。 EC2实例是云中完全可远程控制的虚拟机。非常酷的东西。 – 2012-03-01 21:09:43

+1

如果你已经在.NET中做了所有事情,那么Azure可能会是一个更好的选择,因为它对开发人员来说会更自然。我正在从IIS迁移到Azure,这非常酷:如果您不想利用Azure的独特功能(例如AppFabric进行缓存),那么实际上很少有改变。 – frenchie 2012-03-01 21:13:05

+0

我可以使用天蓝色轻松运行Windows服务吗? – 2012-03-01 21:24:19

回答

2

回复:Windows Azure上的SQL数据库:这将映射到SQL Azure。成本从5美元/月开始,最高可达100 MB实例 - 并且一直达到150 GB - 超过联盟的水平。

Re:5 ASP.net 4.0网站运行:这些映射自然成了Windows Azure Web Roles。 “小”实例为0.12美元/小时/实例,并且通常需要两个实例(以避免几个方案出现单点故障)。根据您的负载,您可能可以将所有5个站点放在同一个实例上。如果您的使用率很低,请考虑$ 0.05 /小时/实例“超小”实例。

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

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

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

回复:我们希望能够轻松扩展到未来的高成本:您需要根据您的实际成本来计算数学,但Windows Azure肯定可以扩展。

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

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

  1. Windows Azure是平台即服务,这意味着您不必担心虚拟机,而是应用程序。换句话说,您将(基本上)压缩的应用程序包上传到云中执行。借助亚马逊,您将自己处理虚拟机。在Azure中,您将获得为您管理的Windows Server 2008副本,但是如果需要,您还可以对其进行管理。如果您的应用程序是一种旧式凌乱的安装,但这种安装不太干净(尽管可能不是一个好的高价值云端应用程序),这种优势远不会那么有利。
  2. Windows Azure有一个效果很好的模拟器--F5直接使用Visual Studio来处理存储系统和虚拟机以及更多流行功能。

回复:是否还有其他因素需要我们考虑:是的。使用任何云应用程序,您需要做好准备来处理扩展(不是up),处理瞬时重试(您可能需要重试对云服务的操作 - 任何云服务)。这样做的好处是更好(更具成本效益)的可扩展性和更高的可靠性(当您跨节点运行时,您没有单点故障)。一定要了解虚拟机上的存储何时/何处存在,而不是暂时的。有更多的考虑,但这些是主要的。

您可能想要查看Windows Azure Pricing calculator

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

0

不是专家,但是因为Asp.net是微软的产品,它应该更容易迁移到Azure,尽管从我听说AWS应该不难。您可能要考虑的另一件事是成本。上次我检查AWS的成本要低得多,除非你已经支付了MSDN订阅费用。

1

除了扩展问题和2台物理服务器之外,您可以将此功能移入托管环境,并且您在技术上将处于“云端”。这可能是专用的或VPS(虚拟专用服务器),或者如果你很小,甚至可以是共享服务器。

那些可以允许随着时间的推移增长...你只需要升级你提供的东西。

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

由于您使用的是SQL Express,请记住每个数据库都限制为8GB。所以这会限制你在某个时候的成长。如果你不想重新设计任何东西,这将需要从Express升级到常规SQL。

0

您总结的所有要求都不是在Windows Azure中部署的任何问题。你可以在互联网上找到很多关于如何做到这一点的信息。

请记住,如果要将服务部署到Windows Azure,则需要对应用程序执行一些代码审查,以便在Web应用程序上修复会话状态,输出缓存等。

由于您想扩展它们,并且它们坐在非粘性的循环负载平衡器后面,所以如果会话状态保存在机器上,会遇到会话状态问题。例如,您需要将会话状态分配给SQL Azure或Windows Azure表存储。

在Azure中安装MongoB和memcache是​​不是一个问题,你会发现很多关于如何做到这一点的信息,但它会需要一些设置你的角色和脚本

1

你有没有考虑AppHarbour?它有Memcached,MongoDB,SQL Serverso on,并且部署速度比Azure更快。我 Azure,但有一个相当的学习曲线,我发现与SQL Azure的连接非常糟糕 - 这意味着重新设计您的DAL使用像SQL Transient Failure Library =现有项目的一个faff的东西。

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

希望这会有所帮助。

0

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

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

时区
所有Azure服务器都在UTC时间运行。如果您习惯于在单个时区为用户提供服务的专用服务器上运行,那么您很可能会使用诸如DateTime.Now()之类的内容,这些内容并不真正对应用户想要的内容。

我没有看到上述任何一个作为Azure的限制,我发现它们非常有用,可以迫使您从一开始就构建全局和可扩展的解决方案。但是,在移植现有应用程序时,即使存在解决方法,上述操作也可能是相当难以适应的挑战。

也如其他地方提到的那样,Azure有一条学习曲线,不知怎的,文档 - 尽管很丰富 - 但由于某种原因似乎不太合适。但是,一旦你“明白了”,我发现Azure真的很棒,并且有一些细微的特性可以帮助你构建可扩展的解决方案,比如整个排队基础架构,blob存储和表格存储。在某些方面,学习受到太多选择的阻碍。

祝你好运!

相关问题