google-app-engine - 如何在 Google Cloud Functions 和 Google App Engine 之间做出选择?

标签 google-app-engine google-cloud-platform google-cloud-functions

Google Cloud Functions 似乎非常有趣,因为它是无服务器和零维护解决方案。但是,什么时候适合使用 Google Cloud Functions 而不是 Google App Engine?

最佳答案

Update:
As of June 12, 2018, Node.js 8.x is supported in Google App Engine Standard environment along with the Flexible Environment.

简答:这取决于您的需要。

长答案:这是 list

运行时
Cloud Functions 目前仅支持 Node.js,据我所知,没有任何计划在那里引入新的运行时。如果您擅长于此,则可以将 Cloud Functions 添加到您的选项中。

App Engine 确实支持 Node.js,尽管它仅在灵活环境中可用。App Engine 标准环境支持 Python 2.7、Java 8、Java 7、PHP 5.5、Go 1.8 和 1.6,而App Engine 柔性环境支持 Python、Java、Node.js、Go、Ruby、PHP 或 .NET。您还可以在 Flexible 环境中使用 dockerfile 提供自己的运行时。 因此,如果您想使用 Node.js 以外的任何语言开发您的应用程序,App Engine 是更好的选择。

无服务器架构
您在寻找无服务器架构吗?您是否对管理实例并让它们按比例放大或缩小感到沮丧?您不想花时间管理您的服务器吗?如果您对所有这些问题的回答都是肯定的,请选择云功能。
您是否正在寻找 no 上的精细颗粒控制?实例和这些实例的计费。您想要单独的版本并希望更好地控制这些版本吗?在这种情况下寻找 App Engine。

微服务
你能把你的代码分解成更小的独立函数吗?使用云函数。
App Engine 确实支持使用相同代码库的微服务架构,但使用不同的 yaml 文件来拆分服务,但是是否要将它们分解为服务取决于您。过去几年,我们将所有代码运行到一个单体应用程序中,它在 App Engine 上仍然运行良好。

数据库
您的应用数据是否存储在 Firebase 中?然后可以在那里轻松使用云功能。如果没有,App Engine 是更好的选择。如果您想知道,App Engine 也可以连接到 Firebase。

还有其他一些事情需要考虑,例如定价,以及您是否要迁移现有应用程序或是否要从头开始编写内容。事实上,您可以同时使用这两个选项。我们正在为我们的应用程序使用 App Engine (Python) 标准环境,但我们最近将一些长期运行的任务迁移到云功能上,它们运行得非常好。

在我看来,App Engine 是大多数问题的答案,而 Cloud Functions 是为满足特定需求而设计的。

关于google-app-engine - 如何在 Google Cloud Functions 和 Google App Engine 之间做出选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715938/

相关文章:

firebase - Google API 的 Google OAuth 2.0 范围与 Google Cloud 上的 IAM 中的角色和权限有何不同?

firebase - Firebase 函数可以通过查询字符串参数进行缓存吗? #askfirebase

firebase - 发送响应后继续执行(Cloud Functions for Firebase)

node.js - Route from node-js app engine to google cloud functions - 云函数与 App Engine 的集成

javascript - 在纯 Python 环境中执行 JavaScript

java - GAE session 离线或在线的行为不同

kubernetes - 如何在Google Kubernetes集群(GKE)中删除GPU

google-app-engine - Google App Engine - 随机 ssl 连接重置

python - 如何刷新保存在 Google App Engine Datastore 中的配置条目?

java - 如何模拟 StorageOptions.newBuilder()