【问题标题】:GAE: multiple modules vs. multiple applicationsGAE:多个模块与多个应用程序
【发布时间】:2016-09-05 12:20:25
【问题描述】:

App Engine 允许您在单个应用程序中拥有多个模块。我试图了解与拥有多个 App Engine 项目相比,这样做的好处是什么。

在我的情况下,我有三个组件

  • 执行所有处理、存储所有数据并可以通过 REST API 访问的后端组件
  • 第一个域名下的第一个前端(例如,请求处理程序)组件可能不需要自己的数据存储区
  • 第二个域名下的第二个前端组件,可能也不需要自己的数据存储。

无论我使用多个模块还是多个应用程序,组件之间的通信都是使用 HTTP 请求完成的。

对于模块,所有模块都使用相同的数据存储和内存缓存,但对于不同的项目,它们将各自拥有自己的内存缓存和数据存储。我认为这对我来说并不重要,因为只有后端组件需要数据存储。

我倾向于使用单独的应用程序而不是单独的模块,因为完全分离似乎更容易。

有什么理由我应该更喜欢单独的应用程序而不是模块,反之亦然?

【问题讨论】:

  • 如果 appengine TOS 滥用每日免费配额,则在同一系统中使用多个 appengine 是违反 appengine TOS 的。

标签: google-app-engine architecture


【解决方案1】:

这个问题在某种程度上是基于意见的,但还有更多理由使用services(现在已知)而不是单独的项目

您在问题中引用了主要原因:共享后端服务。尽管您不认为这很重要,因为他们可能不需要 Datastore,但我宁愿假设他们将来可能需要它们而不是不需要(然后必须集成通过您的其他应用程序的 HTTP 接口,而不是直接的 Datastore RPC)。

通过在同一个项目中使用不同的服务,您可以通过服务帐户等方式更轻松地访问其他云平台服务(例如 BigQuery)。

您还可以通过Modules Service 获得服务发现等功能。如果您要部署为单独的项目,App Engine 不会从我的项目中知道您的项目。

通过使用单独的项目,您可以获得与使用服务几乎相同的分离,但放弃了上述好处。

有些人可能希望使用单独的项目来从额外的 28 个免费实例小时中受益,但这不是我喜欢的长期设计目标。

【讨论】:

  • 使用服务也有弊端。比如:如果你使用通道 API,你只能在你的主服务中向通道发送数据,所以主模块必须是前端。路由并不适用于所有事情,它在开发服务器上根本不起作用,所以使用服务进行开发是相当痛苦的。但是,您将在多个开发服务器上遇到类似的问题。我想我想说的是,服务并没有像人们希望的那样集成,恕我直言。
  • 与开发服务器路由的好点,我忘记了 Channel API 限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 2011-07-22
相关资源
最近更新 更多