从开发人员的角度来看,您会考虑针对大型社交网络应用程序使用哪个平台?如果您可以提供一些您认为是哪种替代方法的优势的详细信息,那将是很好的。
从开发人员的角度来看,您会考虑针对大型社交网络应用程序使用哪个平台?如果您可以提供一些您认为是哪种替代方法的优势的详细信息,那将是很好的。
Answers:
我已经在GAE(Python和Java)和Azure上编写了相同的应用程序。我可能会继续将两者用于不同的事物。以下是我会不断更新的一些想法:
使用GAE的原因:
使用Azure的原因:
我显然有偏见-我在App Engine团队中从事开发人员关系的工作-但这是我的看法:
它们不是直接可比的。您可以为其中的任何一个编写一组应用程序,但是每种情况下您都将编写不同的应用程序。App Engine提供了受限制的运行时环境-无需写入文件,不提供套接字等-以及非关系型DBMS。但是作为回报,您将获得一个无限扩展的运行时环境,并有合理程度的保证,您的应用程序将按需要扩展。
另一方面,Azure提供了一个受约束较少的环境,该环境使您可以编写更多的应用程序,但是由于您自己实现了更多堆栈,因此需要编写更多的应用程序,并且提供了更为宽松的可扩展性保证。
最后,AWS提供了最终的自己动手解决方案。它们提供硬件和存储,仅此而已。您可以从头开始构建堆栈,对其进行维护,对其进行升级等。当且仅当您按比例编写应用程序时,您的应用程序才能扩展,这不是一个小挑战。但是,您可以完全控制硬件。
我的建议是:如果您的应用适合App Engine模型-社交网络应用很可能是一个很好的例子-在App Engine上编写您的应用(您可以选择Java或Python)。它更便宜,并且编写可扩展的应用程序要容易得多。
如果您的应用程序不适合GAE模型,请选择Azure或AWS,这取决于您是否为MS堆栈编写程序以及要对执行环境进行多少控制。如果您的大多数应用程序都适合GAE,而小部分应用程序则不适合,则可以考虑采用混合模式-例如,在GAE上实时投放广告,但在S3上进行存储,或在EC2上进行批量处理。
对我而言,锁定是决定性因素。
如果您选择使用Google,则您的应用程序将只能在Google上运行。如果一段时间后您发现自己不满意,那您就陷入困境。
如果选择MS,则您的应用程序将仅在Azure上运行。一样。
在Amazon,您将获得一个(或多个)虚拟服务器,它们的运行方式与您习惯使用的计算机完全相同。不满意?拿起您的应用程序,在真实的硬件上安装,完成。
我现在的个人选择是使用Java的Google(即使大多数时候我是.NET)。考虑成本-它们的架构很难比较。
查看本文-http: //www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
像Arachnid一样,作为一名Googler,我可能会有偏见。不过,我也是亚马逊的股东,所以该偏差可能会抵消一部分第一;-)。没有Azure经验(尽管我也持有MSFT股票,所以我希望他们也做得好-另一个偏见;-)。
我非常简单地认为,App Engine 只需通过编码即可轻松地(在其限制范围内)为您提供工作能力-无需系统管理任务。AWS是更加灵活,但你将需要大量的系统管理工作(并没有真正琐碎的话)采取的灵活性优势。因此,最后我要接受Arachnid的建议:如果App Engine可以满足您的需求,那就绝对要这样做;如果您需要更大的灵活性,AWS似乎是可行的方法(除非Azure的“我不知道”功能应该更好地匹配-但我认为,无论Azure可以做什么,例如AWS,AWS都将变得更加灵活)甚至可以选择要使用的操作系统)。
我刚刚开始使用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(在一个“小型”实例上使用一个proc)每月需要花费约90美元才能使用24x7,那么在这段时间内您可以为多少用户提供服务?添加第二个实例以实现冗余...如果您的流量需要,它仍然不会花费那么多。如果没有,为什么您要在云中而不是在廉价的托管服务提供商那里?实现这一点需要花费更多的成本因素。AWS是您自己的解决方案。要获得一个稳定且管理良好的解决方案,需要付出很多努力。Azure和GAE开箱即用。在我看来,由于必须进行的工作,AWS是最昂贵的。您是否真的需要以如此精细的级别对其进行控制?如果是这样的话,
能够做自己想要的事情:一直使用AWS。Azure排名第二,GAE排名第三。如果您想要的是Java和Python,这没什么大不了的。如果您想用C ++进行关系数据库或广泛的多线程数据处理,那就大了(不知道现在有没有这样做吗?)。
便携性如何?您以后可以将其带回自己的服务器场还是将其移至另一个云服务器场?它们在一定程度上都是可移植的。
有很多需要思考的...自己仍在学习。
如果您需要手动启动实例以满足需求,则它不是云。
Azure和EC2只是具有某些服务的虚拟服务器。
更新:
EC2和Azure确实为您提供了在负载下自动管理启动新实例的选项,但是您仍然必须进行管理。您可以为处于空闲状态的实例付费。
GAE可以自动解决此问题,并且仅在请求期间运行代码时才向您收费。
这是其他一些注意事项。
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会更加友好。
查看每种云产品提供的解决方案,然后进行混合模型。有些问题需要使用锤子,有些需要螺丝刀。了解您的工具并将其应用于正确的问题。
我的信誉不足,无法对上面的答案之一发表评论。任何这些云解决方案的适用性取决于许多因素,包括您的需求和技能。
我有一个需要nosql数据库的社交网络项目。如果AppEngine对各种框架有更好的支持,它将是一个很好的解决方案。带有nonrel适配器的Django可在Python GAE上运行,但出于多种原因,我更喜欢Rails。Rails3已经发布了几个月,但社区或GAE团队中尚未有人编写任何食谱来支持它。除非您具备掌握红宝石和Rails内部构件,jruby和GAE内部构件的技能来编写自己的食谱,否则,您只能依靠其他人来进入平台。
AWS要做的工作很多,但至少您可以使用任何工具进入平台,并通过管理方式解决许多问题,而不必担任内部开发人员或更高权力的要求者。
对于Ruby开发人员,我对Heroku和EngineYard的抱怨是关于数据库如何扩展的谜。它们如何缩放?
就我而言,我选择了NoSQL解决方案,而Mongo似乎是一个不错的选择。MongoMachine似乎是Heroku或EY之类的推荐解决方案,但价格昂贵。$ 2.50 / GB的存储空间?GAE或EBS的存储空间仅为$ 0.10 GB /月。
我最近才开始尝试Google App Engine,对于一个网络社交网络,我相信它将满足您的所有需求。很容易掌握它,可以与Python或Java一起使用。的确,它不能使您访问文件,但是对于您的应用程序,GQL(它们提供的数据库的类似SQL的接口)可能绰绰有余(并且非常健壮)。
您可能要考虑的一件事是,GAE上的应用程序可以使用一个界面,该界面将允许具有Google帐户或域中使用Google Apps的帐户的用户登录(快捷方式)。您可以选择其中之一。因此,如果您已经在使用Google Apps网站,那么Google App Engine将是您的理想选择,因为您的用户无需注册新帐户。
编辑:正如Arachnid指出的,这不是您不能编写自己的登录系统。对不起,如果我让你担心的话。
至于其他两个选择,我只阅读了它们,而没有对其进行测试。但是我相信GAE从我的研究以及您提到的高价中提供了一个更简单的框架。
无论如何,您都可以使用空间和带宽的免费配额试用GAE,并查看它是否满足您的需求。
祝你好运。
Azure将Windows / SQL作为服务器“平台即服务”,并且您肯定不会卡住,只是回到自己的数据中心中的Windows / SQL(没有linux,但是是的,它们支持Java,Python,PHP,Ruby,Tomcat ,Apache等)。像亚马逊一样,他们还将提供完全可访问的虚拟机选项,因此您可以安装/运行所需的任何东西。
亚马逊仅提供虚拟机服务,因此您仍然需要安装,修补,许可,安全等。您刚刚将某些东西从数据中心移到了另一个。
Google没有关系数据库,您会感到困惑。它们实际上仅迎合Python开发人员以及对Java的一些有限支持。从我的观点来看,他们确实不是云计算领域的参与者。
这里没有提到的一件事是,除了可怕的名字外,还有人认为“ Windows Azure AppFabric Service Bus&ACS”吗?
它似乎是一个非常强大的集成功能堆栈,这将使Azure从在内部基础结构上进行投资的任何企业的角度来看都具有吸引力。
经过一段时间的Amazon EC2实验并遇到一些延迟后,由于成本原因,我开始在研究Google Apps的同时进行研究。我更喜欢使用Erlang作为开发语言,但可以使用Python,因此这不是决定因素。当我没有看到静态IP时,就是这样。同样,关于它在堆栈中处于较高位置的整个部分也使我对性能有些紧张。
我希望AWS便宜一些,但是在Google提供静态IP并最好提供其他语言(例如Scala,JRuby和Erlang)之前,对我来说,选择是显而易见的:AWS。前两种语言也应该很简单,它们都是基于JVM的。甚至可能已经通过变通办法完成了,因为我似乎还记得阅读过一些有关的知识。
伙计们,我认为除了考虑支持哪个平台进行比较外,还应该考虑可伸缩性,易于访问性,多功能性(在实现方面),可以容纳不同的托管平台,对于商业案例在经济上同样可行,并为企业提供了多种解决方案应用程序(即存储,交付,带宽,许可策略等),跟踪记录的服务质量可信度,经过审核的安全性,计费和成本计算的透明度等。如果您查看以上所有指标,我认为AWS的得分要高得多。自2年以来,我在AWS上管理着10个生产账户,同时公司/业务部门能够满足客户的巨大可扩展性需求。...毫无疑问,AWS上需要维护基础架构,更新(如果有/需要),安全性等 但是,您可以自由拥有市场/网络中的所有工具。现有的IT资源也可以维护AWS上的所有基础架构。
Azure肯定具有与VS 2010集成的IDE,但是任何云的实际成本都将在成功部署应用程序(用于部署的平台)之后开始。解决实时部署/可扩展的生产方案还有很长的路要走……。众所周知,MS在成本方面扮演着许多隐藏的议程。很难确定所产生或将要产生的成本(发送时)估计)。
GAE非常适用于Python / Java应用程序。在重写(现有),测试,部署应用程序方面付出了巨大的努力(包括资源和成本)。