Google App Engine中的生产和测试(临时)环境有哪些最佳做法?设置单独的项目是个好主意吗?
我们还使用Google云端存储和Cloud SQL。我想防止有人因打算在测试中工作而误操作的事故。
我们将在GCS中存储很多东西。根据我的理解,GCS环境在项目之间是分开的。这对我们来说是可取的。但是,如果我们想要将产品复制到测试中,是否可以将GCS从一个应用程序复制到另一个应用程序?
期待听到其他人如何做到这一点。
答案 0 :(得分:6)
Bruyere的答案在技术上是正确的,您可以对应用进行版本设置或使用单独的项目。
在实践中,我已经做到了这两点,你总是需要将这些项目分开,原因很多:
我的建议是将环境相关数据(云存储桶,Cloud SQL URL等)存储在应用程序加载的配置文件中。如果您使用Java,我个人使用Maven根据两个配置文件填充的属性文件(dev和prod,dev是默认配置文件)。
另一个重点是从一开始就将环境分开。一旦您开始假设两个环境都将存在于同一个应用程序中,您的许多代码将基于该假设开发,并且将更难回到两个不同的项目。
答案 1 :(得分:2)
我可以看到两种方法,这取决于您的需求:
1)在您的应用程序上使用版本,Cloud SQL中的不同实例和GCS的不同存储桶名称,您可以使用相同的项目。您只需要非常小心地设置每个呼叫的目标,并在呼叫上线时对其进行重定向。
2)使用单独的项目可能是更安全的选项,但无论哪种方式,您都需要使用唯一的存储桶名称。存储桶名称在所有GCS实例中必须是唯一的。
一旦获得权限设置,很容易从一个存储桶复制到另一个存储桶。使用gsutil,您可以从存储桶复制到存储桶。
答案 2 :(得分:1)
我还想知道UAT / Prod env是否还有其他选项,我发现Google文档中的这篇文章说你应该使用不同的项目。
Best Practices for Enterprise Organizations
https://cloud.google.com/docs/enterprise/best-practices-for-enterprise-organizations
我们建议您花一些时间来规划项目ID 可管理性。典型的项目ID命名约定可能使用 以下模式:
[company tag]-[group tag]-[system name]-[environment (dev, test, uat, stage, prod)]
例如,人力资源的开发环境 部门的薪酬系统可能被命名为acmeco-hr-comp-dev。