70

我想使用 Google 的一种无服务器选项部署容器化代码。据我了解,谷歌对此有两种选择:

  1. Google App Engine 柔性环境
  2. Google Cloud Run(测试版)

我已经观看了 2019 年 Google Next 演讲我应该在哪里运行我的代码?从 5+ 计算选项中进行选择。我阅读了 Jerry101 对一般问题“Google App Engine 和 Google Cloud Run 有什么区别?”的回答。.

对我来说,基本上听起来 Cloud Run 是对使用 Google App Engine 灵活环境的限制的答案。

我能想到选择 App Engine 灵活环境而不是 Cloud Run 的原因是:

  • 遗留- 如果您的代码当前依赖于 App Engine Flex,您可能不想处理移动它
  • 跟踪记录- App Engine Flex 已在一般可用性中出现了一段时间,从这个意义上说具有跟踪记录,而 Cloud Run 仅处于测试阶段

但这些都是操作类型的考虑因素。我也不担心。选择 App Engine Flex 而不是 Cloud Run 是否有技术优势?

谢谢

注意:截至 2019 年 4 月发布的这个问题,App Engine 的测试版无服务器 VPC 访问仅适用于标准环境,不适用于 Flex,因此这不是 App Engine Flex 与 Cloud Run 问题的考虑因素

4

7 回答 7

65

定价/自动缩放: GAE 灵活环境和 Cloud Run 之间的定价模型有些不同。

  • 在 GAE Flexible 中,您始终始终至少运行 1 个实例。因此,即使您的应用没有收到任何请求,您也要为该实例付费。计费粒度为 1 分钟。
  • 在 Cloud Run 中,您只在处理请求时才付费,计费粒度为 0.1 秒。有关 Cloud Run 计费模型的说明,请参阅此处

底层基础架构:由于 GAE Flexible 在 VM 上运行,因此部署应用程序的新版本并进行扩展比 Cloud Run 慢一些。Cloud Run 部署速度更快。

可移植性: Cloud Run 使用开源的 Knative API 及其容器合约。这在更大程度上为您提供了灵活性和自由度。如果您想在您管理的基础设施(例如 GKE)上运行相同的工作负载,您可以使用“Cloud Run on GKE”来实现。

于 2019-04-15T20:49:31.937 回答
20

我实际上建议您认真考虑 Cloud Run over App Engine。

随着时间的推移,我看到一些关于“新”App Engine 正在开发中的评论,而 Cloud Run 似乎就是那个答案。它处于测试阶段,这可能是一个问题。我见过一些公司在生产中使用 beta 服务,而另一些则在等待。但是,如果我今天要启动一个新应用程序 - 肯定会是 Cloud Run over App Engine Flex。

Google 对 Kubernetes 的业务功能非常深入。由于 Cloud Run 位于 GKE 上 - 这意味着它通过其他团队(通用 GKE 基础设施)间接接受开发。

相反,App Engine 使用的是一些较旧的技术。虽然它还不错——它是“昨天的”技术。对我来说,谷歌似乎是一家对行业内的新事物和被高度采用的事物感到非常兴奋的公司。

所有这一切 - 当您将服务包装在容器中时,您应该能够在任何地方运行它们?好吧,任何有容器平台的地方。您可以使用 Cloud Endpoints 之类的前端服务,并且可以在 App Engine 和 Cloud Run 上进行部署——来回交换。然后,到那时,限制可能是所提供的服务。例如,Cloud Run 目前不支持某些项目,例如 Cloud Load Balancing 或 Cloud Memorystore。这可能是今天的阻碍。

于 2019-10-08T17:18:08.687 回答
5

短篇小说:Appengine 是真实的,相对稳定的东西。Cloud Run 几乎只是一个草案/想法,非常不稳定。

长话短说:处于 alpha/beta 版 Google Cloud Run 可能会发生许多变化。如果您足够大,您可能还记得 Appengine 定价发生了多么巨大的变化。它承诺基于 CPU/RAM 的定价,然后它认为这不是“可能的”或至少不是很有利可图并转向基于 VM 的定价,然后他们发布了一个不错的 appengine 版本(Appengine Flex 或当时的任何名称)但也通过添加最小实例模型再次提高了价格。更不用说无数的 API/重大更改或限制更改。

Cloud Run 基于 gVisor,它有一些限制,因此取决于您使用的语言/库以及您所做的事情,它可能会在某些时候中断(或者只是 Google 的实现可能会中断)并且您无能为力(即修补系统),它会破坏您的生产力,并可能破坏您的业务。你可以看看它当前的问题

免费建议:即使您选择 Appengine 或 Cloud Run,也要避免使用专有 API/服务,例如Google Datastore。他们可能会毁了你的生意。定价、API 和限制将会改变。没有真正的开源或付费替代方案,因此您的代码不可移植。你的代码在谷歌云之外毫无价值。

免责声明:我被 appengine 更改和数据存储锁定所困扰,所以我的意见可能有偏见。

于 2019-07-13T08:37:02.497 回答
3

我有一个带有 REST API 接口的 ML 模型作为微服务。当我尝试使用 Cloud Run 运行时,它会部署但无法正常工作。我不得不切换回 App Engine Flexible Env。

Cloud Run(完全托管)目前(2020 年 7 月)的 RAM 限制为 2GB。为了获得更好的硬件,我应该选择 Anthose with GKE infra。但这至少需要 4 个实例才能正常工作。我是一个很小的应用程序,我选择了 App engine 灵活的环境。虽然自动缩放设置需要最少 2 个实例,但在早期,它可以通过手动缩放和 1 个实例作为限制来管理。

编辑:截至 2020 年 8 月 22 日,对于完全托管的 GCP 云运行,RAM 限制为 4GB,核心数为 2。

于 2020-07-07T07:23:41.037 回答
2

主要区别是后台任务。

在云运行中,一切都由请求启动,一旦该请求完成,实例将不再启动。

App Engine 还为您提供了一些内置的免费赠品,例如内存缓存,但我认为 App Engine flex 并非如此。

对于简单的 HTTP API,差异可以忽略不计,您可以获得 App Engine 通过其他 GCP 产品(Cloud Scheduler、Cloud Task)为您提供的一些东西。

您可以查看此视频以进行云运行的比较和演示: https ://www.youtube.com/watch?v=rVWopvGE74c

于 2021-12-04T03:11:46.473 回答
1

App Engine 灵活,专注于“代码优先”,以开发者为中心,App Engine 应用程序由多个服务组成,您在部署应用程序时真的不需要做任何命名。

GAE柔性环境的特点:

  • 不可能缩小到零
  • 以任何受支持的编程语言的版本编写的源代码:Python、Java、Node.js、Go、Ruby、PHP 或 .NET
  • 在包含自定义运行时或以其他编程语言编写的源代码的 Docker 容器中运行。
  • 使用或依赖于包含本机代码的框架。
  • 访问位于 Compute Engine 网络中的 Google Cloud 项目的资源或服务。
  • 最大请求超时:60 分钟

Cloud Run是一个托管计算平台,使您能够运行可通过请求或事件调用的容器,一切都是服务,无论是实际服务还是具有 Web 界面的应用程序,因此请将其用作服务的部署而不是比一个应用程序。

云跑的特点:

  • 它是无服务器的:它抽象了所有基础架构管理
  • 这取决于您的应用程序应该是无状态的。
  • GCP 将启动您的应用程序的多个实例以动态扩展它
  • 缩小到零
于 2021-08-05T09:07:46.647 回答
0

您可以使用下面的 url 来获取Cloud RunApp Engine之间的区别。 托管选项

有时,在 Cloud Run 上使用App Engine 的很多原因是,Cloud Run没有后台进程。它的响应时间也只有 15 分钟。

于 2021-09-11T14:08:09.590 回答