google-app-engine - 在 GCP 上部署 SSR Web 应用程序的正确方法是什么?

标签 google-app-engine kubernetes google-cloud-platform cloud google-compute-engine

出发点:我有一个通用的 JS 应用程序(基于 Next.js、Nuxt.js、Universal Angular 等构建),我希望它能够在 GCP 上运行(我认为同样的问题可以引用 AWS ,原理相同)。该应用程序不是“真正的”后端(具有数据库连接、业务逻辑等),它更像是“前端-后端”——它所做的只是前端的 SSR。该应用程序使用 Docker 容器化。该应用程序应该是生产就绪的(不应部署在某些测试版服务上)。

我遇到过4种可能的选择:

  1. 计算引擎
  2. GKE(库伯内特)
  3. 云端运行
  4. 应用引擎

接下来的问题是:最适合该应用程序需求的 GCP 服务是什么?

最佳答案

我是 Cloud Run 的忠实粉丝,无法向您推荐其他最佳地点。但是为什么在文字上

  • Compute Engine:传统服务器,需要自行管理所有无聊的事情(高可用性、备份、补丁/更新/升级)。并且不要扩展到 0。对于 HA,您需要 3 个 VM(至少在同一区域中)。相当昂贵。
  • GKE:与计算引擎非常相似。此外,您还需要 K8S 方面的技能。
  • AppEngine:出色的解决方案,但不像 Cloud Run 那样可定制。此外,您不能在 App Engine 标准上直接提供容器服务,它只能在 flex 版本、自定义运行时上提供(您不缩放到 0,而是缩放到 1);这里的主要优势是,与 Compute Engine 相比,服务器管理更容易,并且包含本地区域 HA。

对于 Cloud Run、Cloud Function 和 App Engine(具有自动/基本缩放模式的标准版本),服务可以缩放到 0。因此,当请求进入时,服务会启动并需要一段时间才能执行为请求提供服务(大约 300 -> 500 毫秒,除非您使用大型框架,如 Spring Boot,这需要几秒钟)。

如果这个冷启动是个问题,你可以设置一个最小实例来保持一个实例的温暖,从而放弃这个冷启动。

  • 您不能使用 Cloud Functions 执行此操作
  • App Engine,您无折扣地支付未使用的实例(保持温暖但不提供流量)
  • 使用 Cloud run,您只需支付 10 倍的空闲实例成本(折扣的 90%)。

遗憾的是,Cloud Run 上的最小实例仍处于 Beta 阶段(我相信它很快就会进入 GA,但今天还没有像您所说的那样“生产就绪”。

注意:根据我的经验,Beta 版本已准备就绪,一旦出现问题,您根本无法获得经济补偿

IMO,我建议您在没有最小实例参数的情况下在 Cloud Run(处于 GA 状态)上进行测试,看看冷启动对您来说是否是一个真正的问题。如果是,则您有 beta 参数,但考虑到它可能会成为 GA!

关于google-app-engine - 在 GCP 上部署 SSR Web 应用程序的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64512014/

相关文章:

azure - AKS 将 DNS 名称分配给私有(private) ClusterIP 地址

ssh - 重新连接到Google Cloud Platform终端

google-app-engine - 在任务队列为空后调用脚本

database - 使用 Kubernetes 在物理机上设置本地持久卷

google-app-engine - 如何在 App Engine 中有效地对查询运行两个不等式过滤器

kubernetes - 是否可以创建一个服务以将其同时显示为群集IP和NodePort?

Kubernetes - 将负载均衡的公共(public) IP 作为环境变量传递到 Pod

google-cloud-platform - 如何判断 GKE Autopilot 工作负载是否正在 Spot Pod 上运行?

java - URL 重写期间链接 URL(带有 JSessionID)被截断

python - 从元组列表中提取值(在这种情况下,列表中只有一个元组)