postgresql - 将测试和开发应用程序版本部署到 Google Compute Platform 的最佳策略

标签 postgresql google-app-engine angular

谷歌计算平台

我有一个 Angular (2) 应用程序和一个 Node.js 中间件 (Loopback) 在项目的 App Engine 中作为服务运行。 对于数据库,我们在同一个项目中有一个运行 PostgreSQL 的计算引擎。

我们想要什么

测试进行得很顺利,我们现在想要一个测试版本(用于持续的升级测试/演示/等)和一个更稳定的发布部署对于我们最初的内部客户。

我们将在 psql 中为发布版本使用不同的数据库,但可以为我们的测试和部署的应用程序使用相同的服务器。

我们应该....?

  1. 在我的本地机器上创建另一个 GCP 项目和另一个 gcloud 设置,以部署到该新项目以进行发布部署,
  2. 还是将多个版本的服务部署到具有不同前缀的单个项目更好 - 我该怎么做?

成本是我们小型非营利组织的一个大问题。 :)

最佳答案

我的建议如下:

创建两个项目,一个用于每个数据库实例。您可以在测试项目中随心所欲,不必担心搞乱您的产品部署。您需要将数据库凭据安全地存储在某个地方。一个可能的解决方案是使用 Google Cloud Project Metadata ,因此您的代码可以在项目之间保持相同。

当您准备好部署到生产环境时,我建议您在生产项目中部署新版本的 App Engine 应用,但不要将其升级为默认版本。

gcloud app deploy --no-promote

这意味着客户仍会使用旧版本,但会部署新版本,因此您可以确保一切正常。之后,您可以缓慢(或快速)将流量转移到新版本。

在这段视频的大约 8:45 处,演示了流量拆分: https://vimeo.com/180426390

此外,我建议积极关闭未使用的 App Engine 灵活部署以节省成本。您可以阅读更多 here .

关于postgresql - 将测试和开发应用程序版本部署到 Google Compute Platform 的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397430/

相关文章:

postgresql - 生成带有前缀和前导零的系列 (postgresql)

javascript - 类型 'controls' 上不存在属性 'AbstractControl'。在 Angular 8

postgresql - 无法在 OpenShift 上附加或装载 Postgres pod 副本的卷

postgresql:为什么空值比空字符串提高了性能?

google-app-engine - Google Drive SDK 推送通知 - 查看所有文件的更改?

python - 如何检查 AppEngine 上是否提供了 DataStore 索引?

angular - 如何从 Angular 构建中排除瞬间语言环境?

angular - 输入掩码以允许电话号码?

postgresql - 在多边形中查找点

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'JDODETACHEDSTATE' in 'field list'