0

我稍微“滥用”了 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)?

4

1 回答 1

0

注意:我的答案来自某种类似的练习,但在python GAE 运行时中,可能还有其他特定于 Java 的东西要查看。

首先要看的东西(可能的显示停止器)是应用程序级别的配置 - 这些需要从您的不同旧应用程序版本(如果它们存在)中合并,并将由您的所有模块共享(或定向到默认模块)仅),因此它们可能无法像以前那样工作,最好重新访问这些配置的最新文档:

注意:在多模块 python 应用程序中,这些配置可能不会在应用程序上传时自动更新,可能需要使用各自的应用程序配置实用程序选项显式上传它们中的每一个。

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

原木分离是免费的。

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

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

模块 URL 路由应该允许透明的 URL 映射,但请注意,这些 URL 实际上是<module>-dot-<appname>.appspot.com并且获得完全相同的 URL 的唯一方法是在部署新版本之前删除所有旧应用程序版本(由于 URL 冲突:<module>-dot-<appname>vs <appversion>-dot-<appname>,而不是确定您是否会获得旧代码或新代码,或者甚至可以部署新代码而不会出错)。一开始你可以使用一个新的应用程序名,只是为了在切换之前让所有的鸭子排成一列(可能是一个你可能会考虑向前推进的新分期故事)。如果您以前没有调度文件,您可能会发现使用调度文件补充 URL 路由很有用。

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

于 2015-08-17T03:37:32.150 回答