GAE还有哪些替代方案,因为我已经有了一些我想保留的代码。换句话说,我正在挖掘python。但是,我的用例更多是请求数量较少,CPU使用率较高的用例,而且我担心我可能永远无法继续使用App Engine。我听过很多人谈论亚马逊网络服务和其他类型的云提供商,但我很难看到其他大多数产品提供的应用范围(数据查询,用户身份验证,自动扩展)引擎提供。我有什么选择?
答案 0 :(得分:30)
<强> AppScale 强>
AppScale是一个允许用户部署和托管自己的Google App Engine应用程序的平台。它通过Amazon EC2和Eucalyptus以及Xen和KVM自动执行。它由AppScale Systems开发并维护。它支持Python,Go,PHP和Java Google App Engine平台。
http://github.com/AppScale/appscale
......它是2015年的amost,似乎容器是前进的方式。 GAE的替代方案正在出现:
Google发布了由Kubernetes开发的manage GCE containers容器调度软件,但也可以在其他群集上使用。
Docker上有一些upcoming PaaS,例如
有趣的东西值得关注。
答案 1 :(得分:23)
我认为GAE目前还没有另一种替代方法(关于代码可移植性),因为GAE属于自己的类。当然,GAE是云计算,但我将GAE视为云计算的一个子集。亚马逊的EC2也是云计算(以及Joyent Accelerators,Slicehost Slices),但显然它们也是两种不同的野兽。所以现在你需要根据自己的需要重新思考架构。
GAE的直接好处在于它基本上免维护,因为它与基础设施(可扩展的Web服务器和数据库管理)相关。 GAE更适合那些只想专注于他们的应用程序而不是底层系统的开发人员。在某种程度上,您可以考虑开发人员友好。现在还应该说,这些其他云计算解决方案也试图通过提供VM映像/模板让您只需要担心您的应用程序。最终,您的需求将决定您应采取的方法。
现在考虑到这一切,我们还可以构建可满足我们需求的混合解决方案和解决方案。例如,GAE似乎不直接适合您描述的特定应用程序需求。换句话说,GAE提供相对较多的请求,较少的cpu周期(不确定付费版本是否会有所不同)。
然而,解决这一挑战的一种方法是构建一个定制解决方案,将GAE作为前端,将Amazon AWS(EC2,S3和SQS)作为后端。有些人会说你也可以在AWS上构建整个堆栈,但这也可能涉及重写大量现有代码。此外,作为解决方法,先前的stackoverflow post描述了在GAE中模拟后台任务的方法。此外,您还可以查看HTTP Map/Reduce以分发工作负载。
答案 2 :(得分:5)
答案 3 :(得分:4)
有点晚了,但我会给Heroku一个去:
Heroku是一个多语言云应用程序平台。有了Heroku,你 根本不需要考虑服务器。您可以使用编写应用程序 现代开发实践在您的编程语言中 选择,用SQL和NoSQL数据库等附加资源来支持它, Memcached和许多其他人。您使用Heroku管理您的应用程序 命令行工具,您使用Git修订控件部署代码 系统,都在Heroku基础设施上运行。
答案 4 :(得分:4)
截至2016年,如果您愿意将PaaS(平台即服务)和FaaS(作为服务功能)归为同一serverless computing类别,那么您有一些FaaS选项。
AWS Lambda允许您在不配置或管理服务器的情况下运行代码。您只需为您消耗的计算时间付费 - 当您的代码未运行时不收取任何费用。使用Lambda,您可以运行几乎任何类型的应用程序或后端服务的代码 - 所有这些都是零管理。只需上传您的代码,Lambda就会负责运行所需的一切,并以高可用性扩展您的代码。您可以将代码设置为自动从其他AWS服务触发,或直接从任何Web或移动应用程序调用它。
AWS步骤功能是对AWS Lambda的补充。
AWS Step Functions可以使用可视化工作流程轻松协调分布式应用程序和微服务的组件。从各个组件构建应用程序,每个组件执行一个离散功能,可以快速扩展和更改应用程序步骤函数是协调组件和逐步执行应用程序功能的可靠方法。 Step Functions提供了一个图形控制台,可以通过一系列步骤来安排和可视化应用程序的组件。这使得构建和运行多步应用程序变得简单。步骤函数自动触发并跟踪每个步骤,并在出现错误时重试,因此应用程序按顺序执行并按预期执行。步骤函数记录每个步骤的状态,因此当出现问题时,您可以快速诊断和调试问题。您甚至无需编写代码即可更改和添加步骤
截至2016年,它处于alpha状态。
Google Cloud Functions是一种基于事件的轻量级异步计算解决方案,可让您创建响应云事件的小型单一用途功能,而无需管理服务器或运行时环境。 Google云端存储和Google Cloud Pub / Sub中的事件可以异步触发云功能,也可以使用HTTP调用进行同步执行。
基于事件的无服务器计算体验,可加速您的开发。它可以根据需求进行扩展,只需为您消耗的资源付费。
无服务器框架允许您将自动扩展,按操作付费,事件驱动的功能部署到任何云。我们目前支持Amazon Web Service的Lambda,并且正在扩展以支持其他云提供商。
IronFunctions是一个面向任何云的开源无服务器计算平台 - 私有云,公共云或混合云。
FaaS与CaaS(容器即服务)竞争的程度仍然存在。前者看起来更轻巧。两者似乎都适合微服务架构。
我预计函数(如在FaaS中)不是行的末尾,而且多年后我们将看到进一步的服务抽象,例如仅测试开发,然后是普通语言场景。
答案 5 :(得分:3)
亚马逊的弹性计算云或EC2是一个不错的选择。您基本上可以在他们的服务器上运行Linux VM,您可以通过Web界面控制(用于上电和下电),当然还可以通过SSH或通常设置的任何方式进行访问... 因为它是你控制的linux安装,你当然可以运行python。
答案 6 :(得分:3)
Microsoft Windows Azure可能值得考虑。我担心我没有使用它,所以不能说它是否有用,你应该记住它现在是CTP。
答案 7 :(得分:2)
如果您对云感兴趣,并且可能想要为生产和/或测试创建自己的云,那么您必须查看Eucalyptus。据称它与EC2代码兼容,但开源。
答案 8 :(得分:2)
你可能还想看看AWS Elastic Beanstock - 它与GAE功能更接近,因为它被设计为PaaS,而不是IaaS(即EC2)
答案 9 :(得分:1)
我更感兴趣的是看看App Engine如何与另一台用于CPU密集型请求的服务器轻松配合。
答案 10 :(得分:1)
TyphoonAE正试图这样做。我还没有对它进行过测试,但是当它仍处于测试阶段时,它似乎至少在积极开发中。
答案 11 :(得分:0)
向云计算的转变发生得如此之快,以至于您没有时间浪费在测试不同的平台上。 如果您对Java感兴趣,我建议你试试Jelastic。
Jelastic最大的优点之一是您不需要对应用程序的代码进行任何更改,除了应用程序功能的更改,但不是因为所选平台要求这样做的原因。参考这个,你实际上并没有浪费你的时间。部署过程完美无瑕,您可以在任何地方部署.war文件。使用GAE需要您根据系统需求修改应用程序。如果您碰巧使用Java并开始寻找更灵活的平台,Jelastic是一个兼容的替代方案。
答案 12 :(得分:0)
您还可以使用Red Hat的Cape Dwarf项目,在Wildfly应用程序服务器(以前的JBoss)之上运行GAE应用程序而无需修改。
你可以在这里查看: