【发布时间】:2020-11-02 18:12:04
【问题描述】:
我们正在为使用 React-Native 与 GCP 后端对话的客户端开发/支持移动应用。数据库是 Firestore,对象存储使用 GCP Storage,我们使用 GCP app-engine 进行一些 REST 调用,以及一系列 Cloud Functions 来处理一些 Firestore 和 GCP Storage 处理。
我们的产品部署包括将移动应用构建文件交付给客户端(他们在自己的服务器上内部分发应用),对于后端,我们使用 GCP CloudBuild 从我们的主/产品部署我们的应用引擎和云功能分支。然而,在过去的六个月里,我们进行了一系列粗略的产品部署,主要归结为我们在 dev 或 qa 环境(或忘记)上没有遇到的意外环境配置问题,以及一些数据库更新问题(数据模型更改)。这样一来,我们就对客户束手无策,因为在我们解决问题时,部署可能会延迟几个小时。
为了尝试解决这个问题,我们一直在考虑为 GCP 后端制定蓝绿部署策略。这将包括创建一个新的 GCP 项目,向其部署最新的 master/prod 分支,并允许我们在将更新的移动应用程序交付给客户端之前进行全面测试——这不足为奇。这在理论上听起来很棒,但在实践中并不是那么简单。主要问题是 Firestore 数据库和 GCP 存储——我们还需要将存储对象和 Firestore 数据库转移到新项目。可行,但又是一个复杂的问题。
所以我们的蓝绿理念是这样的:
- 我们创建了一个新的“Firestore/GCP 存储”项目,其唯一目的是充当“产品”数据存储位置(此项目中没有应用引擎或云功能),并充当身份验证提供者。此项目将是静态的,不会在产品部署之间更新
- 我们创建了一个新的“prod”(绿色)GCP 项目,该项目将为绿色部署托管最新的 App-Engine 和 Cloud Functions。此项目将被授予访问“Firestore/GCP 存储”项目数据和存储对象的权限
- 移动应用将连接“数据存储”项目以与 Firestore 通信和上传文件,并将连接新的“绿色”项目以进行 App-Engine REST 调用
我们希望该模式能够让我们进行蓝绿后端逻辑部署,而无需担心数据/对象传输。我的问题是:有人在 GCP 中使用过这种类型的部署模式吗?它是推荐的模式,还是回避的反模式?
感谢任何反馈。 谢谢
【问题讨论】:
标签: google-app-engine google-cloud-platform google-cloud-functions google-cloud-build blue-green-deployment