考虑到我已经有了一些好用的代码,我想保留它,那么除了 GAE,是否还有其他可选方案。换句话说,我正在使用 Python,但我的使用情况更多是低请求数、高 CPU 使用率类型,我担心我可能无法永远使用 App Engine。虽然我听到很多人谈论 Amazon Web Services 和其他云提供商,但我很难看出大多数其他服务提供商提供了 App Engine 提供的数据查询、用户认证和自动扩展等一系列服务。那么这里有哪些选择呢?
考虑到我已经有了一些好用的代码,我想保留它,那么除了 GAE,是否还有其他可选方案。换句话说,我正在使用 Python,但我的使用情况更多是低请求数、高 CPU 使用率类型,我担心我可能无法永远使用 App Engine。虽然我听到很多人谈论 Amazon Web Services 和其他云提供商,但我很难看出大多数其他服务提供商提供了 App Engine 提供的数据查询、用户认证和自动扩展等一系列服务。那么这里有哪些选择呢?
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,例如:
有趣的东西值得关注。
然而,解决这个问题的一种方法是构建一个自定义的解决方案,其中 GAE 作为前端,Amazon AWS(EC2、S3 和 SQS)作为后端。有些人会说你可以在 AWS 上构建整个堆栈,但那可能需要重写大量现有代码。此外,以前stackoverflow post的一个解决方法描述了在 GAE 中模拟后台任务的方法。此外,您还可以研究HTTP Map/Reduce以分发工作负载。
AWS Lambda可以让您在不需要配置或管理服务器的情况下运行代码。您只需支付所消耗的计算时间 - 当您的代码未运行时不收费。使用Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码 - 所有这些都不需要管理。只需上传您的代码,Lambda会处理运行和扩展您的代码所需的所有内容,并具有高可用性。您可以设置您的代码自动从其他AWS服务触发或直接从任何Web或移动应用程序中调用它。
AWS Step Functions是AWS Lambda的补充。
AWS Step Functions使得通过可视化工作流程协调分布式应用程序和微服务的各个组件变得容易。从执行离散功能的单个组件构建应用程序可以让您快速扩展和更改应用程序。Step Functions是一种可靠的协调组件的方式,并按照应用程序函数的步骤进行操作。Step Functions提供了一个图形控制台,以将应用程序的组件排列和可视化为一系列步骤。这使得构建和运行多步应用程序变得简单。Step Functions自动触发和跟踪每个步骤,并在出现错误时重试,因此您的应用程序按顺序并按预期执行。Step Functions记录每个步骤的状态,因此当事情出错时,您可以快速诊断和调试问题。您甚至可以在不编写代码的情况下更改和添加步骤。截至2016年,它处于alpha测试阶段。
Google Cloud Functions是一种轻量级的基于事件、异步计算解决方案,允许您创建小型的、单一目的的函数,以响应云事件,无需管理服务器或运行时环境。来自Google Cloud Storage和Google Cloud Pub/Sub的事件可以异步触发Cloud Functions,或者您可以使用HTTP调用进行同步执行。一个基于事件的无服务器计算体验,可以加速您的开发。它可以根据需求进行扩展,您只需支付您所消耗的资源。
Serverless Framework允许您将自动缩放、按执行付费和事件驱动的函数部署到任何云中。我们目前支持Amazon Web Service的Lambda,并正在扩展以支持其他云提供商。
IronFunctions是一个针对任何云 - 私有、公共或混合的开源无服务器计算平台。
目前还不清楚FaaS (函数即服务)与CaaS(容器即服务)之间的竞争如何。前者似乎更加轻量级,两者都适用于微服务架构。
我预计,函数(即FaaS)并不是终点,许多年后我们将看到更进一步的服务抽象,例如仅供测试开发,随后是简单语言场景。
如果你对云感兴趣,也许想要为生产和/或测试创建自己的云,那么你需要看看Eucalyptus。它据称与EC2代码兼容,但是它是开源的。