从开发人员的角度来看,您会考虑使用大型社交网络应用程序的哪个平台?如果您可以提供有关您认为哪种替代方案的优势的详细信息,那将是很好的。

评论

我最近一直在比较同一件事-在博客上发布了我的优点/缺点。 Azure已淘汰(基于小型项目的成本),但是EC2和Google App Engine都是有力的竞争者! blog.dantup.com/2010/10/…

这个问题应该是社区Wiki。

机架空间ftw!

#1 楼

我已经在GAE(Python和Java)和Azure上编写了相同的应用程序。我可能会继续将两者用于不同的事物。以下是我将不断更新的一些想法:

使用GAE的原因:
您基本上每天可以获得一台免费的虚拟机。使用Azure,即使您没有一个网站访问者,您每月也要支付近100美元。如果您的数据库超过1GB,则需要额外支付$ 90($ 9-> $ 99)用于存储。更新:Azure现在具有不同价格的各种VM和DB大小。详细信息在这里。

GAE的付款是合理的-大多数资源是按请求/ GB / MB收费的,同样每天免费分配大多数资源。但是,在2011年11月,它与Azure和AWS一起按实例小时为Web服务器收费。详细信息在这里。

GAE的管理负载最轻。设置完成后,部署和重新部署很快,它们将自动进行所有操作。例如,您不必担心您的应用程序正在使用多少服务器,如何分片数据,如何进行负载平衡。

邮件就可以正常工作。在撰写本文时,Azure不提供SMTP,因此您需要第三方服务器。

与许多Google产品(日历,邮件等)的良好集成。如果您不想控制用户群,可以将用户管理委派给Google。

使用GAE,您知道他们添加到商店中的任何功能,您将获得。使用Azure,您会感觉到Sql Azure数据库将获得大多数人的喜爱,但价格会更高。 Azure存储可能具有最多的陷阱。没有关系完整性,没有顺序,您将在内存上下文中摆弄更多。与Azure Tables相比,GAE商店的限制和功能要少得多。

如果您已经在使用基于Python或JVM的语言,那就是不错的选择。如今,许多语言都可以编译为Java字节码。

更新应用程序非常快。对于Python,我有一个快捷键设置,它根本不需要时间。现在,我使用Java的Eclipse插件,并且效果很好。 Azure更加轻松自如。

经过本地测试的应用程序可能会在(无(或多或无)任何更改)情况下在云上运行。使用Azure时,配置有所不同,我花了一些时间在正确之前停止,删除,构建,上传,启动。

GAE具有出色的UI,其中包括日志查看器和数据编辑器。使用Azure,您当前必须为此寻找外部查看器/编辑器。

GAE使您可以在同一数据存储上运行多个版本的应用程序。您可以部署,测试版本,然后在准备就绪时设置当前的“实时”版本。如果出现问题,您可以改回来。


使用Azure的原因:


App Engine数据存储的性能特征和成本影响将令人惊讶您。如果您执行除简单CRUD之外的任何其他操作,则您将需要比使用普通DB更加努力。没有临时查询。

Azure有两种存储方法,提供了更多选择。它们是作为关系数据库的SQL Azure数据库(SAD)和由非关系表,blob和队列组成的Azure存储。如果您在SQL Server上进行了投资,则SAD易于使用,但成本很高,并且可伸缩性较差。更新:App Engine在有限的beta版中具有MySQL API。

如果您采用SOA类型的方法,则Azure似乎设计得更好。他们的体系结构似乎受益于企业领域的经验。 GAE似乎更专注于仅提供网页服务。

您可以在调试下运行应用程序,放置断点等。部署到云中,但是直到您满意它才可以运行。

我将.Net用于其他方面,并且将它们与.Net集成在后端比使用GAE容易得多。 (更新-在GAE上使用Java可以正常工作,并且10秒的超时现在为30秒)。

与许多MS“ Live”产品集成。明显的答案。由于费用和易用性,我目前默认使用App Engine。我可能会将Azure用于非常面向MS的应用程序。我使用Amazon S3进行下载,但可能不会使用EC2,因为我更喜欢将应用程序级别下的所有内容留给专家。


评论


理查德,也许Azure的另一个优点是拥有关系数据库。 Bigtable的碎片在某种程度上是外国范式。

–hyperlug
09年7月15日在5:42

App Engine还允许您暂存多个版本的应用程序。每个版本都有自己的URL,您可以对其进行测试,并且在准备部署时,只需将该版本标记为默认版本即可。易于测试,部署,如有必要,可回滚到以前的版本。

–mb
09年11月30日在18:48

Azure完全按照使用量收取费用,没有承诺,而只是按使用情况收费,每月承诺的最低费用不是99美元。

– Akash Kava
09年12月16日在7:52

在microsoft.com/windowsazure/pricing上显示有关SQL Azure的信息:“ * Web Edition:高达1 GB的关系数据库= 9.99美元/月* Business Edition:高达10 GB的关系数据库= 99.99美元/月*数据传输= 0.10美元/ $ 0.15 / GB-($ 0.30 in / $ 0.45 out / GB在亚洲)

–理查德·沃森(Richard Watson)
09年12月16日在8:49

App Engine现在具有与块存储一起提供的SQL支持。 code.google.com/apis/sql

– devnul3
2011年11月3日20:23



#2 楼

我显然有偏见-我在App Engine团队中从事开发人员关系的工作-但这是我的看法:

它们没有直接可比性。您可以为其中的任何一个编写一组应用程序,但是每种情况下您都将编写不同的应用程序。 App Engine提供了受限制的运行时环境-无需写入文件,不提供套接字等-以及非关系型DBMS。但是作为回报,您将获得一个无限期扩展的运行时环境,并有合理程度的保证,您的应用程序可以按自己的意愿进行扩展。较少受限制的环境,它使您可以编写更多的应用程序,但需要编写更多的应用程序-因为您自己要实现更多的堆栈-并提供了较宽松的可伸缩性保证。

最后,AWS提供了最终的自己动手解决方案。它们提供硬件和存储,仅此而已。您可以从头开始构建堆栈,对其进行维护,对其进行升级等。当且仅当您按比例编写应用程序时,您的应用程序才能扩展,这不是一个小挑战。但是,您可以完全控制自己的硬件。

我的建议是:如果您的应用符合App Engine模型-社交网络应用很可能是一个很好的例子-在App Engine上编写您的应用程序(可以选择Java或Python)。它更便宜,并且编写可扩展的应用程序要容易得多。

如果您的应用程序不适合GAE模型,请选择Azure或AWS,具体取决于您是为MS堆栈编写还是要对执行环境进行多少控制。如果您的大多数应用程序都适合GAE,而小部分应用程序则不适合,则可以考虑使用混合功能-例如,在GAE上实时投放,但在S3上进行存储,或在EC2上进行批量处理。

评论


那么这样的问题呢:当App Engine出错时?

–克里斯蒂安·丘皮图
2010年11月1日15:31

@Cristian我不确定您想听什么-任何服务都偶尔会停机。其中包括App Engine和EC2。

–尼克·约翰逊(Nick Johnson)
2010年11月1日于16:33

@尼克·约翰逊(Nick Johnson):没错,任何服务都偶尔会停机,而且我不希望正常运行时间达到100%。另一方面,该问题看起来并不像停机时间问题。在我看来,这似乎是Google App Engine的局限性,即您的代码必须在相当短的时间内运行。我对GAE不熟悉,因此如果我误解了某些内容,请纠正我。

–克里斯蒂安·丘皮图
2010年11月1日于16:53

@克里斯蒂安·阿是的,由于执行时间太长而引发了异常本身,是的,但是速度下降的原因是一些临时的性能问题。

–尼克·约翰逊(Nick Johnson)
2010年11月2日,9:13

我同意“它们不可比”。比较这些服务就像比较苹果和橘子。两者都是水果,仅此而已。

–直到
2010年11月7日在16:25

#3 楼

对我来说,锁定是决定因素。

如果您选择使用Google,则您的应用程序将仅在Google上运行。如果一段时间后发现自己不满意,那就很麻烦。

如果选择MS,则您的应用程序将仅在Azure上运行。同样的事情。

在Amazon,您将获得一个或多个虚拟服务器,它们的工作方式与您过去使用的计算机完全相同。不满意?拿起您的应用程序,在真实的硬件上安装,完成。

评论


GAE可以运行相当标准的Java Servlet应用程序,并且可以使用基于标准的持久性。

–斯蒂芬·丹尼(Stephen Denne)
2010年5月3日,1:10

GAE完全开放(尽管您需要坚持使用JDO存储API。)

–马克
2010-10-14 7:20

Google是否仍然限制您一次可以获取的数据量?他们的锁定基于数据而不是代码。

– Mark Ransom
2010年11月1日14:50

您可以使用AppScale在EC2或其他任何您想要的地方运行您的应用程序:appscale.cs.ucsb.edu

–阿米尔
2010年11月1日在18:12

今天遇到了这个问题,一个人能够在一周内从Google过渡过来。他们还承认,如果从一开始就没有采用好的做法,那可能要花费几个月的时间。 carlosble.com/?p=719

– Mark Ransom
2010-11-22 17:31

#4 楼


如果您是.NET Developer,请访问
Azure。
如果您使用Python或Java,请访问
Google。
如果您是.NET开发人员Ruby-转到Amazon

我现在的个人选择是使用Java的Google(即使我大多数时候都使用.NET)。
考虑成本-很难比较它们的架构。

查看本文-http://www.infoq.com/news/2008/11/Comparing-EC2-App-发动机天蓝色

评论


并非所有.NET开发人员都应使用Azure。 Amazon EC2是他们的完美选择。但是+1是指引用优秀文章。

–安德鲁·阿诺特(Andrew Arnott)
09年4月26日在22:19

是的,亚马逊在某种程度上是虚拟机的自由者,但是社区最初主要是面向Ruby的。

–饲料
09年4月26日在22:51

AWS确实在其Windows 2003 Server AMI上支持.Net开发人员,但我怀疑有很多.Net开发人员宁愿部署到尚未在AWS上实现的Windows Server 2008。如果您是AWS论坛的常客,那么您可能会发现Amazon在这个问题上显得有些沉默。

–理查德·多曼(Richard Dorman)
09年8月25日在14:24

我按行业是.NET开发人员,但是将Azure用于网站获得0次点击的价格发送了Google的信息。我在自己的博客上写了一些比较:blog.dantup.com/2009/12/…blog.dantup.com/2009/12/…

–丹尼·特彭尼(Danny Tuppeny)
2010年1月10日,12:08

如果您使用的是Ruby,请考虑使用Heroku或EngineYard而不是Amazon。

– andy318
2010-11-28 18:13

#5 楼

像Arachnid一样,作为一名Googler,我可能会有偏见。但是,我也是亚马逊的股东,因此偏见可能会部分抵消第一个;-)。没有Azure经验(尽管我也持有MSFT股票,所以我希望他们也做得很好-另一个偏见;-)。仅通过编码即可工作(在其限制内)的能力-无需系统管理任务。 AWS更加灵活,但是您需要大量的系统管理工作(一点也不琐碎)才能利用这种灵活性。因此,最后我要接受Arachnid的建议:如果App Engine可以满足您的需求,那就绝对要这样做;如果您需要更多的灵活性,AWS似乎是可行的方法(除非Azure的“我不知道”功能应该更好地匹配-但我认为,无论Azure可以做什么,例如AWS,AWS都将变得更加灵活)如果需要,甚至可以选择要使用的操作系统。

#6 楼

我刚刚开始使用Azure,并且给您留下深刻的印象,您可以在F#中完成它:http://code.msdn.microsoft.com/fsharpazure!到目前为止,它是唯一允许以托管方式使用功能编程的云平台(当然,您可以在EC2中执行Haskell ...或在Algol 68中进行此操作)。 Visual Studio集成的质量给我留下了深刻的印象-您将使用一个真实的SQL Server存储来测试本地的“云” DevFabric,因此可以在上载之前进行播放。 GAE可以做到吗?看着Azure,学习F#的VS(来自Linux和OCaml),希望我早就切换到MS堆栈。创建SQL存储并在VS中检查它非常容易-非常方便。开源没有匹配的工具集,是时候人们对MS给予公平考虑了-他们在这里做得很棒。我肯定会坚持使用Mac OSX基础(双重引导进入Vista),并且我的直觉是,由于能够在本地开发Azure,因此我将获得一个单独的Vista盒用于Azure开发。当您来自Unix管道世界-PowerShell,SQL和LINQ,C#和F#(这是我的关键原因)时,.NET确实是不堪重负的-但事实证明,这一切加在一起并且值得一读,除了的Linux;在任何情况下,Azure都会扩大您的视野。

评论


Azure甚至没有与Amazon Elastic Map Reduce(基于开源Hadoop)的功能远程匹配的功能。它甚至不允许以编程方式设置工作者角色的数量。

–里纳特·阿卜杜林(Rinat Abdullin)
09年4月27日在7:40

微软显然正在尝试通过他们的.NET开发人员基础货币化,这确实是利用Microsoft堆栈的好处。我不敢相信仅此一项就能弥补昂贵,庞大的成本核算模型。云计算的重点是零维护即用即付的弹性,而Azure尚未提供。

–马克
2010-10-14在7:03

您可以在GAE中使用Clojure。 the-deadline.appspot.com/login

–edwin.nathaniel
2010年11月1日下午14:43

#7 楼

尽管我热爱GAE,但在我当前的项目中使用EC2 over GAE的主要原因之一是,我需要能够从世界各地的数据中心为应用程序的前端提供服务。 GAE一次在一个数据中心运行。例如,我需要亚洲的用户访问亚洲的服务器,以获得对我的应用程序最快的响应时间。加上管理dns,负载均衡器,选择的数据库,将水槽推入S3以进行数据的Hadoop处理等功能,EC2成为真正引人注目的解决方案。

#8 楼

需要考虑的一些事情:

赶快上手:
在选择的环境中您能多快地提高生产力
存在哪些文档,它们是否清晰易懂并得到良好的支持
样本明显且有用

成本:
成本是一个因素,但是如果您要制作一个真正有客户的商业应用程序,那么这些都是可行的选择。如果您假设Azure(在一个“小型”实例上使用一个proc)每月需要花费90美元才能使用24x7,那么在这段时间内您可以为多少用户提供服务?添加第二个实例以实现冗余...如果您的流量需要,仍然可以节省很多。如果没有,您为什么要在云中,而不是在便宜的托管提供商那里?实现这一点需要花费更多的成本因素。 AWS是您自己的解决方案。要获得一个稳定且管理良好的解决方案,需要付出很多努力。 Azure和GAE开箱即用。在我看来,由于必须进行的工作,AWS是最昂贵的。您是否真的需要以如此精细的级别对其进行控制?如果是这样的话,也许一blow而就,然后买自己的盒子吧……那么AWS仍然会比硬件成本便宜。

能够做自己想做的事情:
AWS一直存在。 Azure位居第二,GAE位居第三。如果您想要的是Java和Python,这没什么大不了的。如果您想用C ++进行关系数据库或广泛的多线程数据处理,那就大了(不知道现在有没有这样做吗?)。

可移植性如何?
以后可以将其带回自己的服务器场还是将其移至另一个云服务器场?它们在一定程度上都是可移植的。

评论


TyphoonAE和AppScale是在其他地方运行GAE应用程序的绝佳工具。

–诺亚·麦克里斯(Noah McIlraith)
2010-12-9 11:31

#9 楼

如果您需要手动启动实例以满足需求,则它不是云。

Azure和EC2只是具有某些服务的虚拟服务器。

更新:

EC2和Azure确实为您提供了管理在负载下自动启动新实例的选项,但是您仍然必须进行管理。而且您需要为处于空闲状态的实例付费。

评论


我认为Amazon CloudWatch解决了基于流量启动其他实例的问题。

–正常
2010年5月7日,11:02

我在Azure上看到的最常见的演示之一是可伸缩性演示,在该演示中,他们编写了一些代码来设置阈值,以根据负载来增加或减少Web Worker。它涵盖在Windows azuer培训套件中:microsoft.com/downloads/en/…

– MikeJ
2010年11月1日于16:39

#10 楼

以下是一些其他注意事项。

GAE-在平台上作为服务栈的地位高于AWS和Azure,所有流量均通过其ghs.google.com DNS路由,并通过其中之一动态加载为您的页面提供服务机器,这使他们可以保持较低的价格。使用此方法可以很好地缩放比例,Cons不是静态ip,容易被过滤或阻塞。由于没有静态IP限制,您将无法设置任何特定于站点的https证书。

AWS和Azure为您提供了一个静态IP和一个专用的VM,可以满足诸如https证书之类的基本要求。您还将获得关系存储支持。反映此专用VM事实的成本也较高,您将按40美元/月的块数扩展每个VM。优点是,由于您可以自己获得虚拟机,因此不受GAE 30秒cpu处理限制的约束,并且可以运行更大的任务。或希望使用静态IP来进行自己的DNS设置,或者需要使用关系数据库或超过30秒的任务。 AWS,Azure使用起来会更加友好。

#11 楼

查看每种云产品提供的解决方案,然后进行混合模型。有些问题需要使用锤子,有些需要螺丝刀。了解您的工具并将其应用于正确的问题。

#12 楼

我的信誉不足,无法对上面的答案之一发表评论。任何这些云解决方案的适用性都取决于许多因素,包括您的需求和技能。

我有一个需要nosql数据库的社交网络项目。如果AppEngine对各种框架有更好的支持,它将是一个很好的解决方案。带有nonrel适配器的Django可在Python GAE上运行,但出于多种原因,我更喜欢Rails。 Rails3已经发布了几个月,而社区或GAE团队中尚未有人编写任何食谱来支持它。除非您具备掌握红宝石和Rails内部构件,jruby和GAE内部构件的技能来编写自己的食谱,否则您会受到其他人的怜悯,而这仅仅是为了上平台。 > AWS要做的工作还很多,但至少您可以使用任何工具进入平台并通过行政方式处理许多问题,而不是作为内部开发人员或更高权限的请求者。

我对Heroku和对于Ruby开发人员而言,EngineYard是关于数据库如何扩展的谜。它们如何扩展?

就我而言,我选择了NoSQL解决方案,而Mongo似乎是一个不错的选择。 MongoMachine似乎是Heroku或EY之类的推荐解决方案,但它的价格非常昂贵。 $ 2.50 / GB的存储空间? GAE或EBS的存储空间仅为$ 0.10 GB / mo。

#13 楼

我最近才开始尝试Google App Engine,对于一个网络社交网络,我相信它将满足您的所有需求。很容易掌握它,可以与Python或Java一起使用。的确,它不能使您访问文件,但是对于您的应用程序,GQL(它们提供的数据库的类似SQL的接口)可能绰绰有余(并且非常健壮)。

您可能要考虑的一件事是,GAE上的应用程序可以使用一个界面,该界面将允许具有Google帐户或域中使用Google Apps的帐户的用户登录(快捷方式)。您可以选择其中之一。因此,如果您已经在使用Google Apps网站,那么Google App Engine将是您的理想选择,因为您的用户不必注册新帐户。

编辑:正如Arachnid所指出的那样,您无法编写自己的登录系统代码。抱歉,如果让您担心的话。

至于其他两个选择,我只阅读了它们,而未对其进行测试。但是我相信GAE从我的研究以及您提到过的高价中提供了一个更简单的框架。您的需求。

祝您好运。

评论


Nitpick:GQL不是数据库。 GQL是用于Python运行时的类似SQL的查询语言,写在数据存储区的顶部。您甚至不必使用它-还有Query API。

–尼克·约翰逊(Nick Johnson)
09年4月26日在21:38

另外,您可以在GAE应用程序中登录所需的任何用户-仅仅是GAE提供了使用Google帐户的快捷方式。

–尼克·约翰逊(Nick Johnson)
09年4月26日在21:39

正确,两种情况下的单词选择错误,感谢您指出。将对其进行编辑:)

– alkar
09年4月26日在22:14

BigTable是Google的数据存储引擎,花了一些时间后,我开始怀疑我是否整个职业生涯都被洗脑了,以为SQL RDBMS对编写Web应用程序至关重要。 BigTable存储模型简单,灵活,高效且可扩展,并且运行良好。

–马克
10-10-14在7:07

#14 楼

Azure将Windows / SQL作为服务器“平台即服务”,而且您肯定不会卡住,只需回到自己的数据中心中的Windows / SQL(没有linux,但是是的,它们支持Java,Python,PHP,Ruby,Tomcat ,Apache等)。像Amazon一样,他们也将提供完全可访问的Virtual Machine选项,因此您可以安装/运行任何所需的软件。许可证,安全性等...在我看来,这种优势击败了迁移到云的好处。您刚刚将某些东西从数据中心移到了另一个。

Google没有关系数据库,您会陷入困境。它们实际上仅迎合Python开发人员以及对Java的一些有限支持。从我的观点来看,他们确实不是云计算领域的参与者。

评论


Jeff-对Microsoft合作伙伴进行了SQL Server 2008培训,我很喜欢并熟悉Windows / SQL堆栈的好处,但是我很难接受一个人对Google BigTable的看法。大约有六十个好的包装BigTable API的库,将其公开为从伪RDBMS到索引文档仓库的所有内容。 BigTable经过精心设计,可以跨许多服务器进行扩展(Google发现每个集群的耗水量为1,500),这是SQL不能很好完成的壮举。

–马克
10-10-14在7:14

#15 楼

这里没有提到的一件事是,除了可怕的名字外,还有人认为“ Windows Azure AppFabric Service Bus&ACS”是什么?通过在场所基础架构上的投资,使Azure从任何企业的角度来看具有吸引力。

评论


是的,但另一方面,微软正式对企业内部部署的Azure托管表示“否”,这不利于总线的吸引力。

–马克
2010-10-14 7:16

尽管名副其实,但实际上却并非如此,Microsoft提供了一个非常引人注目的私有云堆栈,其中包含Hyper-V(免费)以及诸如Systems Center和InTune之类的东西,但这并不是“ Azure”。如果您希望不久就会有第三方的“ Azure设备”选项,但是您必须要花很多钱才能证明这些费用是合理的。听说您至少需要支持大约1000个节点,所以对于Datacentre所有者来说更多。

–杜比
2010-10-16 8:23

#16 楼

经过一段时间的Amazon EC2实验并遇到一些延迟后,由于成本原因,我开始在进行实验的同时研究Google Apps。我更喜欢使用Erlang作为开发语言,但可以使用Python,因此这不是决定因素。当我没有看到静态IP时,就是这样。同样,关于它在堆栈中处于较高位置的整个部分也使我对性能有些紧张。

我希望AWS便宜一些,但是在Google提供静态IP以及最好提供其他语言(例如Scala,JRuby和Erlang)之前,对我来说选择是显而易见的:AWS。前两种语言也应该很简单,它们都是基于JVM的。甚至可能已经通过变通方法完成了,因为我似乎还记得阅读过有关它的内容。

评论


要学究一点,您可以在App Engine上运行Scala,JRuby甚至Clojure,因为所有JVM都在后台运行。现在,是否容易使用这些语言又是另一回事了……

–克里斯·史密斯(Chris Smith)
2011年4月3日,0:46

#17 楼

伙计们,我认为除了考虑支持比较的平台之外,还应该考虑可伸缩性,易于访问性,多功能性(在实现方面),可以容纳不同的托管平台,在商业上同样经济可行,并为企业提供了多种解决方案应用程序(即存储,交付,带宽,许可策略等),跟踪记录的服务质量可信度,经过审核的安全性,计费和成本计算的透明度等。
如果您查看上述所有指标,我都会感到AWS得分远高于此。自2年以来,我在AWS上管理着10个生产帐户,同时公司/业务部门能够满足客户的巨大可扩展性需求。...
毫无疑问,AWS上需要维护基础架构,更新( (如果有的话/如果需要的话),安全性等。但是您可以自由使用市场/网络中的所有工具。现有的IT资源也可以维护AWS上的所有基础结构。

Azure当然已将IDE与VS 2010集成在一起,但是任何云的实际成本都将在成功部署应用程序(用于部署的平台)后开始。要解决实时部署/可伸缩的生产方案,还有很长的路要走……。
众所周知,MS在成本方面扮演着许多隐藏的议程。很难确定所产生或将要产生的成本(同时发送估算值)。

GAE非常适用于Python / Java应用。在重写(现有),测试,部署应用程序方面付出了巨大的努力(包括资源和成本)。