代码之家  ›  专栏  ›  技术社区  ›  systempuntoout

如何在谷歌应用引擎上建立一个登台环境

  •  55
  • systempuntoout  · 技术社区  · 14 年前

    已正确配置 发展 服务器与A 生产 服务器,我想设置一个 分期 在将新开发的版本部署到生产环境之前,谷歌应用程序引擎上的环境对测试新开发的版本非常有用。

    我知道两种不同的方法:

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

    version: app-staging
    

    我不喜欢这种方法的原因是生产数据被我的分段测试污染了,因为(如果我错了,请纠正我):

    1. 临时版本和生产版本共享同一数据存储
    2. 临时版本和生产版本共享相同的日志

    关于第一点,我不知道是否可以使用新的 namespaces python API .

    B. 第二个选项是通过修改 App.YAML 应用 参数

    application: foonamestaging
    

    使用这种方法,我将创建完全独立于生产版本的第二个应用程序。
    我看到的唯一缺点是我不得不配置第二个应用程序(管理员设置)。
    使用备份/还原工具 Gaebar 这个解决方案也很有效。

    您使用哪种方法为Web应用程序设置登台环境?
    另外,在部署之前,您是否有任何自动脚本来更改yaml?

    5 回复  |  直到 7 年前
        1
  •  13
  •   benwixen    14 年前

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

    但我现在看到的是,方案A是一个更清洁的解决方案。您可以使用几行代码根据版本切换数据存储名称空间,您可以从环境变量current_version_id动态获取该版本,如本文所述: http://code.google.com/appengine/docs/python/runtime.html#The_Environment

        2
  •  17
  •   andruso    8 年前

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

    1. 您可以保留用于生产应用程序的真正版本控制的版本功能。
    2. 您可以保留用于流量分割的版本功能。
    3. 您可以为多租户保留名称空间功能。
    4. 您可以轻松地将实体从一个应用程序复制到另一个应用程序。在名称空间之间并不容易。
    5. 很少有API仍然不支持名称空间。
    6. 对于具有多个开发人员的团队,可以为单个人员授予“上载到生产”权限。
        3
  •  5
  •   Maksim Luzik    9 年前

    我们选择了选项B,我认为总体上更好,因为它完全隔离了项目。因此,例如,在登台服务器上使用某些配置不会影响并不会损害安全性,也不会在生产环境中造成任何其他蝴蝶效应。

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

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

    这将大大简化您的部署脚本,不需要字符串替换或在app.yaml中进行任何类似操作。

        4
  •  4
  •   Campey    12 年前

    我们使用选项B。

    除了zygmantas建议在应用程序级别上分离dev和prod的好处之外,我们还使用dev应用程序测试性能。

    通常,dev实例在运行时没有太多可用的资源,这有助于了解应用程序“感觉”的速度有多慢。然后,我们还可以独立地调整性能设置,看看有什么不同(例如前端实例类)。

    当然,有时我们需要咬紧牙关,调整现场观看。但是有另一个应用程序可以玩真是太好了。

    仍然使用名称空间和版本,只是dev是脏的并且是实验性的。

        5
  •  0
  •   Community CDub    7 年前

    我更喜欢选项A,我正试图设置一个 simple build script 自动化处理