如何在Google App Engine上设置暂存环境

在正确configuration了开发服务器和生产服务器之后,我希望在Google App Engine上设置一个临时环境,以便在将其部署到生产环境之前对新开发的版本进行实时testing。

我知道两种不同的方法:

:第一个选项是通过修改app.yaml 版本参数。

version: app-staging 

我不喜欢这种方法是生产数据受到我的分期testing的污染,因为(纠正我,如果我错了):

  1. 暂存版本和生产版本共享相同的数据存储
  2. 分段版本和生产版本共享相同的日志

关于第一点,我不知道是否可以使用新的命名空间python API “修复”。

B.第二个选项是通过修改app.yaml 应用程序参数

 application: foonamestaging 

用这种方法,我会创build第二个完全独立于生产版本的应用程序。
我看到的唯一缺点是我不得不configuration第二个应用程序(pipe理员设置)。
有了像Gaebar这样的备份\恢复工具,这个解决scheme也可以。

您使用什么样的方法为您的Web应用程序设置临时环境?
另外,你有没有自动化的脚本来部署前更改yaml?

我在我的设置中select了第二个选项,因为这是最快的解决scheme,而且我没有编写任何脚本来更改部署中的应用程序参数。

但是我现在看到的方式是,选项A是一个更清洁的解决scheme。 您可以使用几行代码行切换基于版本的数据存储区名称空间,您可以从环境variablesCURRENT_VERSION_ID中dynamic获取该版本,如http://code.google.com/appengine/docs/python/runtime.html #The_Environment

如果需要单独的数据存储, 选项B对我来说看起来更干净,因为:

  1. 您可以保留用于生产应用程序的实际版本的版本function。
  2. 您可以保留stream量分裂的版本function。
  3. 您可以保留多租户的名称空间function。
  4. 您可以轻松地将实体从一个应用复制到另一个。 名称空间之间并不那么容易。
  5. 很less的API仍然不支持名字空间。
  6. 对于拥有多个开发人员的团队,您可以将上传授予单个人的生产许可。

我们select了B,而且我认为它总体上更好,因为它完全隔离了项目。 因此,例如,在舞台服务器上播放一些configuration不会影响安全性,也不会影响生产环境中的其他蝶形效果。

至于部署脚本,你可以在app.yaml中拥有你想要的任何应用程序名称。 一些虚拟/ dev的名称和部署时,只需使用-A参数:

 appcfg.py -A your-app-name update . 

这将简化您的部署脚本相当多,不需要在你的app.yamlstringreplace或任何类似的东西

我们使用选项B.

除了Zygmantas关于在应用程序级别将dev与prod分离的好处的build议之外,我们还使用我们的dev应用程序来testing性能。

通常情况下,开发实例在资源方面运行得不多,这有助于了解应用程序“感觉”缓慢的地方。 然后,我们可以独立地调整性能设置,看看有什么不同(例如前端实例类)。

当然有时候我们需要咬紧牙关,调整和观看现场。 但是有另一个应用程序来玩是很好的。

仍然使用命名空间和版本,只是开发是肮脏的和实验性的。

我更喜欢选项A,我试图设置一个简单的构build脚本来自动处理