将App Engine前端版本转换为模块

时间:2015-08-16 19:21:17

标签: google-app-engine gae-module app-engine-modules

我在App Engine(java)中略微“滥用”了前端“版本”概念,在它们被引入之前实现模块。我具有由的结构:module1-dot-myapp.appspot.com,module2-dot-myapp.appspot.com,module3-dot-myapp.appspot.com等,基于该版本概念(更通常与用于数字:1-dot-myapp等。)。

具体来说,所有版本中的代码都是相同的,但每个版本实际上都用于不同的目的。这种分离允许不同的客户端使用不同的api版本,单独的部署计划,登台版本,日志分离等。

我的问题是,在这些条件下,将我的应用程序转换为“真实”模块的最佳方法是什么?这样“module1”是一个实际的模块(仍然映射到同一个url - module1-dot-appspot.com)?

1 个答案:

答案 0 :(得分:0)

注意:我的答案来自某种类似的练习,但在 python GAE运行时,也可能会看到特定于Java的特定内容。

要注意的第一件事(可能的显示停止者)是应用级配置 - 这些将需要从您的不同旧应用版本(如果它们存在)合并并且将是所有模块共享(或仅指向默认模块),因此它们可能无法像以前那样工作,最好重新访问有关这些配置的最新文档:

注意:在多模块python应用中,这些配置可能无法在应用上传时自动更新,每个都可能需要显式上传,使用相应的应用配置实用程序选项。

单独的部署计划几乎是免费的(每个模块可以独立部署)。但是由于应用级配置可能会产生一些影响(例如,多个CLI调用而不是单个调用)

日志分离是免费的。

可能需要重新审视分段故事,具体取决于您的具体含义。

除此之外 - 您将应用程序的不同旧版本带入新应用程序的单独模块子目录中。检查您的版本控制系统是否更容易支持。旧的app配置文件需要“翻译”到相应模块的配置文件中,并且一些信息将进入新应用程序的顶级dir配置文件。

模块URL路由应该允许透明的URL映射,但请注意,URL实际上是<module>-dot-<appname>.appspot.com,获取完全相同的URL的唯一方法是删除所有旧的应用程序部署新版本之前的版本(由于网址冲突:<module>-dot-<appname> vs <appversion>-dot-<appname>,不确定您是否会收到旧代码或新代码,或者是否可以部署新代码而不会出错)。你可以先使用一个新的appname,只是为了让所有的鸭子在切换之前排好队列(可能是你可能会考虑进行的新的分段故事)。 如果之前没有调度文件,可能找到有用的补充URL路由。

最后,如果您在模块之间共享相同的文件,则可以考虑单个每个应用程序的文件副本,符号链接到相应的模块中,如果从源代码管理角度来看更容易或有意义。