Google App Engine中的生产和测试环境的最佳实践

时间:2014-10-13 00:12:21

标签: google-app-engine

Google App Engine中的生产和测试(临时)环境有哪些最佳做法?设置单独的项目是个好主意吗?

我们还使用Google云端存储和Cloud SQL。我想防止有人因打算在测试中工作而误操作的事故。

我们将在GCS中存储很多东西。根据我的理解,GCS环境在项目之间是分开的。这对我们来说是可取的。但是,如果我们想要将产品复制到测试中,是否可以将GCS从一个应用程序复制到另一个应用程序?

期待听到其他人如何做到这一点。

3 个答案:

答案 0 :(得分:6)

Bruyere的答案在技术上是正确的,您可以对应用进行版本设置或使用单独的项目。

在实践中,我已经做到了这两点,你总是需要将这些项目分开,原因很多:

  • 您可能不希望相同的人拥有更新登台环境的权利(例如,所有开发人员都具备此功能)和生产环境(通常这仅限于技术主管或QA团队,或者你持续集成服务器)
  • 隔离两个应用引擎版本并不容易,特别是在处理cron作业,电子邮件或XMPP接收时
  • 您可能不希望相同的人能够读取/写入临时数据和prod数据
  • 您希望确保App Engine prod应用程序不会写入暂存云存储桶。如果他们是同一个项目的一部分,默认情况下这是可能的

我的建议是将环境相关数据(云存储桶,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。