两个(或更多)Google 个 App Engine 项目之间的反向代理

Reverse proxy between two (or more) Google App Engine projects

您有一个 Google 云项目 Project1 启用了 App Engine 并为您的遗留应用程序提供服务。

您想使用不同的编程语言重建您的应用程序,因此需要一个单独的项目 (Project2),它有自己独立的 App Engine。

您想在 Project1 App Engine 前面安装某种反向代理设备,以便可以逐渐将越来越多的流量路由到 Project2 的 App Engine。

实现此目标的最佳方法是什么?

Google Cloud Load Balancer 似乎不适用于 App Engine(仅 Google Compute Engine),所以我正在考虑建立一个反向代理服务器(例如 NginX)容器最好的选择。

根据您想要的组织方式,您可以在同一个项目中复制整个应用程序,只需部署为不同的服务或现有服务的新版本即可。例如,假设您有两个服务 frontendbackend 用于一个简单的 Web 应用程序。 (假设它们都是用 Python 编写的)

要作为单独的服务进行部署,您可以使用不同的语言创建应用程序的新版本,比如 Node.js。您可以将新服务部署为 frontend-nodebackend-node

如果您不想这样做,您可以用不同的语言重写您的应用程序,然后部署为现有服务的新版本。在 "Versions" 部分,您可以看到同一服务的版本,它们可以是不同的语言运行时。

无论哪种方式,您都可以使用 "split-traffic" 功能来自定义和测试应用程序的实现。

一般来说,您应该避免使用项目来隔离应用程序的不同变体 and/or 组件,除非您也确实需要。每个 App Engine 服务都可以是彼此不同的运行时,因此即使您使用不同的语言重新部署,也几乎没有必要配置一个全新的项目。