有哪些替代Google App Engine的选择?

48

考虑到我已经有了一些好用的代码,我想保留它,那么除了 GAE,是否还有其他可选方案。换句话说,我正在使用 Python,但我的使用情况更多是低请求数、高 CPU 使用率类型,我担心我可能无法永远使用 App Engine。虽然我听到很多人谈论 Amazon Web Services 和其他云提供商,但我很难看出大多数其他服务提供商提供了 App Engine 提供的数据查询、用户认证和自动扩展等一系列服务。那么这里有哪些选择呢?


老问题。但是Azure应用服务提供了类似的开发PaaS堆栈:https://azure.microsoft.com/zh-cn/services/app-service/ - Saqib Ali
13个回答

31

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年,容器似乎是未来的趋势。出现了一些替代GAE的选择:

Google发布了Kubernetes,这是他们开发的容器调度软件,用于管理GCE容器,但也可用于其他集群。

有一些基于Docker的即将推出的PaaS,例如:

有趣的东西值得关注。


24
我认为目前在代码可移植性方面没有其他选择比GAE更好,因为GAE是独树一帜的。当然,GAE是云计算,但我认为GAE是云计算的一个子集。Amazon的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以分发工作负载。


6
截至2016年,如果你愿意将PaaS(平台即服务)和FaaS(函数即服务)归为同一无服务器计算类别,则有一些FaaS选项可供选择。

专有技术

AWS Lambda

AWS Lambda可以让您在不需要配置或管理服务器的情况下运行代码。您只需支付所消耗的计算时间 - 当您的代码未运行时不收费。使用Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码 - 所有这些都不需要管理。只需上传您的代码,Lambda会处理运行和扩展您的代码所需的所有内容,并具有高可用性。您可以设置您的代码自动从其他AWS服务触发或直接从任何Web或移动应用程序中调用它。

AWS Step Functions是AWS Lambda的补充。

AWS Step Functions使得通过可视化工作流程协调分布式应用程序和微服务的各个组件变得容易。从执行离散功能的单个组件构建应用程序可以让您快速扩展和更改应用程序。Step Functions是一种可靠的协调组件的方式,并按照应用程序函数的步骤进行操作。Step Functions提供了一个图形控制台,以将应用程序的组件排列和可视化为一系列步骤。这使得构建和运行多步应用程序变得简单。Step Functions自动触发和跟踪每个步骤,并在出现错误时重试,因此您的应用程序按顺序并按预期执行。Step Functions记录每个步骤的状态,因此当事情出错时,您可以快速诊断和调试问题。您甚至可以在不编写代码的情况下更改和添加步骤。

Google Cloud Functions

截至2016年,它处于alpha测试阶段。

Google Cloud Functions是一种轻量级的基于事件、异步计算解决方案,允许您创建小型的、单一目的的函数,以响应云事件,无需管理服务器或运行时环境。来自Google Cloud Storage和Google Cloud Pub/Sub的事件可以异步触发Cloud Functions,或者您可以使用HTTP调用进行同步执行。

Azure Functions

一个基于事件的无服务器计算体验,可以加速您的开发。它可以根据需求进行扩展,您只需支付您所消耗的资源。

开放式

Serverless

Serverless Framework允许您将自动缩放、按执行付费和事件驱动的函数部署到任何云中。我们目前支持Amazon Web Service的Lambda,并正在扩展以支持其他云提供商。

IronFunctions

IronFunctions是一个针对任何云 - 私有、公共或混合的开源无服务器计算平台。


目前还不清楚FaaS (函数即服务)与CaaS(容器即服务)之间的竞争如何。前者似乎更加轻量级,两者都适用于微服务架构。

我预计,函数(即FaaS)并不是终点,许多年后我们将看到更进一步的服务抽象,例如仅供测试开发,随后是简单语言场景。


5

3
您可能还想看看AWS Elastic Beanstalk - 它与GAE的功能更加接近,因为它被设计成PaaS,而不是IaaS(即EC2)。

3

微软的 Windows Azure 可能值得考虑。不过我没有使用过,无法确定它是否好用,你需要知道目前它还处于 CTP 阶段。

点击这里查看详情。


3
我有点晚了,但我建议试试Heroku:
Heroku是一个多语言云应用平台。使用Heroku,您无需考虑服务器。您可以使用您选择的编程语言和现代开发实践编写应用程序,并使用附加资源(例如SQL和NoSQL数据库、Memcached等)进行支持。您可以使用Heroku命令行工具管理应用程序,并使用Git版本控制系统部署代码,所有这些都在Heroku基础设施上运行。
来源:https://www.heroku.com/about

3
亚马逊弹性计算云(EC2)是一个很好的选择。基本上,您可以在他们的服务器上运行Linux虚拟机,并通过网络界面(供电的打开和关闭)进行控制,并且当然可以使用SSH或其他通常设置的方式访问。 由于这是您所控制的Linux安装,因此如果您希望的话,当然可以运行Python。

8
那么在这种情况下,我需要负责运行自己的http主机、数据库等吗?灵活性当然很理想,但我不是一个Linux系统管理员,如果有比我更聪明的人来处理这些事情会更好... - Chris Marasti-Georg

2

如果你对云感兴趣,也许想要为生产和/或测试创建自己的云,那么你需要看看Eucalyptus。它据称与EC2代码兼容,但是它是开源的。


3
请提供http://code.google.com/p/appscale/的链接。 - Chii

1

TyphoonAE 正在尝试做到这一点。我还没有测试过,但它仍处于 beta 版本,看起来至少正在积极开发中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接