Cloud Run 与 App Engine:基于事实和科学的正面比较

2025-06-07

Cloud Run 与 App Engine:基于事实和科学的正面比较

对于低流量应用程序,Cloud Run 比 App Engine 便宜得多。

抽象的

我当时托管了一个小型 Web 应用,作为我的副项目,希望节省开支。我最初使用 Heroku,后来迁移到 Google Cloud Platform。我运用严谨的方法和 Markdown 表格,对 App Engine 和 Cloud Run 进行了一次受科学启发的“这要花多少钱?”比较。这项研究发现,Cloud Run 通常是最佳选择,但如果你 有钱可烧是“对价格不敏感的消费者”,那么 App Engine 就更敏捷一些。

介绍

假设你有一个业余项目类型的 Web 应用,想把它托管在Google Cloud Platform (GCP)上,但又不想花太多钱。五分之四的科学家会推荐哪款 GCP 服务?让我们来一探究竟。

背景

我的奇妙旅程大致如下:我为即将到来的加拿大假期开发了一个小型Express应用,并希望找到一个价格实惠但可用的主机。最初,我使用的是Heroku 每月 7 美元的 Hobby Plan,因为在 一个月只需 7 美元。(也就是说,这相当于 3 杯咖啡:“一杯咖啡”是小额购买的基本单位。)

Heroku 上手非常容易,可以与GitHub Actions集成,而且ssh在我需要调整某些东西的时候也很容易上手。但大约在第五个月的时候,我意识到以后每月都要花 7 美元,所以我开始寻找其他选择。

转向 Google Cloud Platform (GCP)

GCP 是注册时奖励最多的云供应商,所以我认为这是选择它的一个相当客观公正的理由。然而,作为一个倒霉的首次用户,有很多“解决方案”可供选择。

看起来,除非你能用抽象的几何标识将新来者淹没在大量具有模糊区别的产品之下,否则你就不是真正的云供应商,因此像“我在哪里托管一个基本的快速应用程序?”这样简单的问题并没有明显的答案。

通过用事实和逻辑来消除媒体偏见,我能够通过谷歌搜索“谷歌云如何托管快速应用程序”的研究方法来缩小范围。

弹出的两个选项是:

  1. 应用引擎
  2. 云运行

这两个服务都能运行应用程序,我正好有一个应用程序可以运行。感觉很完美:他们预测到了我的情况,就像我预测到了加拿大人会搜索假期信息一样。

方法论

通过注册,我获得了 300 美元(!!)GCP 资金。作为一名资深政府公务员,我知道这意味着我必须在本财年结束前想个有创意的办法来花掉这笔钱。你跟我的想法一样吗?我们来做个研究吧!

(这就是科学发挥作用的地方。)

我的研究问题是“我应该使用 App Engine 还是 Cloud Run 来托管我有趣但无利可图的应用程序?”,为了调查这一点,我选择了沉浸式方法,在该方法中我将扮演一名试图在 Google Cloud 上托管应用程序的开发人员的角色。

设置

首先,我需要同时在两个服务上设置我的应用。初始设置时,我使用了 Google 为像我这样的嵌入式研究人员免费提供的快速入门资料。(安装好命令行工具后,这两个快速入门资料都很容易上手gcloud

概述:App Engine (AE)

在 AE 上,我的 Express 应用以 Node 进程的形式运行,就像在本地启动一样npm start。AE 是一个传统的托管平台:它持续运行,并在请求到来时提供服务。每月月底,您需要按运行时间付费,通常是“整月”。

概述:Cloud Run

Cloud Run 运行容器,因此每次发布时您都必须构建一个容器并将其推送到 GCP。与 App Engine 不同,Cloud Run仅在请求到来时运行,因此您无需为空闲时间付费。

容器化应用的可移植性更高,但在开发过程中并非总是需要重点关注。值得注意的是,Cloud Run Quickstart 提供了 9 个 Dockerfile 示例,具体取决于您选择的语言。(我以 Node.js 版本为基础。)

模拟交通

在研究的这个阶段,我的应用程序有两个实例正在运行:

  1. 在 App Engine 中:https://hols-ae.nn.r.appspot.com/
  2. 在 Cloud Run 中:https://hols-hzlcxvebra-ue.a.run.app/

因为真实的应用程序有真实的流量,所以我设置了一个 ping 服务,在其余时间内每 47 分钟向每个站点发送一次请求,就像真实人类™️ 浏览的方式一样。

完成设置后,就该让实验顺利进行,所以我把时间花在做一些非常学术的事情上,比如在dominion.games上清洗新手。

期间

2个月。

发现

该研究有两个主要发现。

  1. 对于低流量应用程序,Cloud Run 比 App Engine 便宜得多
  2. App Engine 的响应速度似乎稍快一些

1. 持续成本 — Cloud Run 胜出

云运行 应用引擎 Heroku 爱好计划
每月费用 0.09 美元 11.29 美元 7.00 美元

哇。

App Engine 整个月全天候运行,而 Cloud Run 仅在处理请求时运行,两者之间的差异令人吃惊。

此前,我一直每月支付 7 美元购买Heroku 的 Hobby Plan

  • App Engine 的成本将增加约 50%
  • Cloud Run 价格便宜了 99%,我的天哪

因此,从根本上来说,这是 Cloud Run 的一次大胜。

2. 请求延迟 — App Engine(通常)获胜✅

我还使用了一些在线测速工具来测量我的两个实例的响应时间。结果并不完全一致,但 App Engine 的响应速度总体上更快。

Pingdom 速度测试

(圣保罗 3 场比赛的结果)

云运行 应用引擎
运行 1 632 毫秒 471毫秒
运行 2 485毫秒 568 毫秒
运行 3 562毫秒 470毫秒
平均的 559 毫秒 503毫秒

我们看到 App Engine 的响应速度平均比 Cloud Run 快 56 毫秒(不过在某个案例中,Cloud Run 的速度更快)。需要注意的是,这些时间在两次运行之间差异很大,有时会快三倍甚至四倍,这得看谁知道了。

网页测试

(使用“3G”下载速度运行 3 次的结果。)

云运行 应用引擎
运行 1 5.217 秒 5.010秒
运行 2 5.310秒 4.922 秒
运行 3 5.353 秒 5.089秒
平均的 5.293 秒 5.007 秒

再次提醒,请记住这些数字在运行之间会发生变化。

为什么 App Engine 更快?

我不完全清楚这一点,但我可以推测。

我注意到的一个可衡量的差异是,Cloud Run 的总请求大小更大,因为它默认不会对文件进行 gzip 压缩。

云运行 应用引擎
页面大小 125.8 千字节 119.4 千字节

Pingdom Speed Test for Cloud Run 推荐我Compress components with gzip,通过查看请求,我发现我的合并.js资产确实大约大了 6 KB。

下载更大的文件会使您的网站变慢,但我认为这并不是全部原因。

这两种服务之间的最大区别在于,Cloud Run 只有在收到请求时才会运行容器。当收到请求时,它会执行以下三件事:

  1. 启动容器
  2. 满足请求
  3. 关闭容器

启动容器所需的额外时间可能会增加总请求时间,从而导致 Cloud Run 的平均响应时间变慢。

当然,这样做还可以节省很多钱,所以这里的权衡是你更关心优化速度还是成本。

发现

对我来说,这些发现至关重要。如果你是一位业余开发者,并且希望以近乎免费的方式托管你的趣味应用,那么你绝对应该使用 Google Cloud Run。

然而,如果钱不是问题,那么您可以每月支付更多的费用来获得 App Engine 的边际速度提升。

进一步阅读

文章来源:https://dev.to/pcraig3/cloud-run-vs-app-engine-a-head-to-head-comparison-using-facts-and-science-1225
PREV
10 分钟内开始您的博客!
NEXT
简单的 React 文件夹结构