如何在 Google Cloud Functions 和 Google App Engine 之间进行选择?

Posted

技术标签:

【中文标题】如何在 Google Cloud Functions 和 Google App Engine 之间进行选择?【英文标题】:How to choose between Google Cloud Functions and Google App Engine? 【发布时间】:2017-07-31 15:41:32 【问题描述】:

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

【问题讨论】:

相关:***.com/q/47057770/4495081 【参考方案1】:

更新:As of June 12, 2018, Google App 支持 Node.js 8.x 引擎标准环境以及柔性环境。

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

长答案:这是清单

运行时 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。您还可以使用灵活环境中的 dockerfile 提供自己的运行时。 因此,如果您想在 Node.js 以外的任何地方开发应用程序,App Engine 是更好的选择。

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

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

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

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

在我看来,App Engine 可以解决大多数问题,因为 Cloud Functions 是针对特定要求而设计的。

【讨论】:

现在,您可以将 Node.js 应用部署到 App Engine 标准环境:cloudplatform.googleblog.com/2018/06/…【参考方案2】:

当您希望执行一个功能(某种逻辑)以响应源自云的事件,而您不想为此构建(并为此付费)一个完整的 Web 应用程序。

来自Product Overview:

云计算使完全无服务器的计算模型成为可能 逻辑可以按需启动以响应发起的事件 从任何地方。从一口大小的业务逻辑构建应用程序 计费到最接近的 100 毫秒,仅当您的代码是 跑步。为用户提供从零到全球规模的服务,无需管理 任何基础设施。

来自What are Google Cloud Functions?

Google Cloud Functions 是一个无服务器执行环境,用于 构建和连接云服务。使用 Cloud Functions 编写 附加到发出的事件的简单、单一用途的函数 来自您的云基础架构和服务。您的云功能是 当正在监视的事件被触发时触发。您的代码在 完全托管的环境。无需提供任何 基础设施或担心管理任何服务器。

如果您已经有一个与您想要实现的逻辑相关的 GAE 应用程序,那么在应用程序中执行它可能会更简单:)

【讨论】:

听起来仍然令人困惑。你有具体的例子吗?

以上是关于如何在 Google Cloud Functions 和 Google App Engine 之间进行选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中运行 Google Cloud Function 中的子进程

如何修改后台 Cloud Function 的 Google Cloud Pub/Sub 订阅确认截止日期

如何从 Firebase Cloud Function 在 Google Pub/Sub 中发布消息?

如何解决 Google Cloud Function 上的“No module named 'frontend'”错误消息

如何从Google Cloud Function(Cheerio,Node.js)发出多个http请求

在 Google Cloud Function 中设置环境变量