Java 谷歌云平台:我的架构解决方案正确吗?
我正在尝试制作一个简单的应用程序,并将其部署在Google云平台Flexible App Engine上,它将包含两个主要部分:Java 谷歌云平台:我的架构解决方案正确吗?,java,google-app-engine,Java,Google App Engine,我正在尝试制作一个简单的应用程序,并将其部署在Google云平台Flexible App Engine上,它将包含两个主要部分: 前端应用程序(基于Java8(Spring+Thymeleaf)的简单Web UI,具有来自不同外部站点的OAuth授权) 后端应用程序(基于登录的用户,在单独的线程中监视多个资源,并以某种方式对其输入作出反应(行为更改)) 最初,我计划将它们作为一个应用程序进行开发,但我认为,潜在的繁重后台处理可能会导致我的前端应用程序出现故障。部分应用程序引擎文档称,已部署的服务
出于以下原因,您提出的体系结构似乎是将这两种服务划分为不同服务的正确方法:
- 可以分别为每个版本部署代码,分别回滚版本,并分别拆分流量以进行实验或分阶段推出
- 可以调整每项服务的机器类型和内存分配,以更好地满足其需求。如果您正在后端执行内存密集型工作,则可以调整该服务的设置,以便为每个实例分配更多内存
- 允许每种类型的服务根据需求独立扩展,从而更好地利用服务,减少浪费。这也应该会降低您的总体开支,而不是在单个单一服务中尝试“一刀切”的方法
- 您可以跨服务混合不同的运行时环境。例如,您可以在项目中混合使用语言运行时,甚至可以在标准和灵活的环境中混合使用。假设您的前端代码在标准中更具成本效益,将该服务指定为标准环境服务,将您的后端指定为灵活的环境服务。或者说,您需要一个包含Perl的customer docker文件,您可以将其作为一个灵活的环境自定义运行时来实现,并使用Java 8作为前端
- 您仍然可以共享诸如云SQL、PubSub、云任务(当前为alpha)或Redis等用于内存缓存的公共服务。您的作品不需要驻留在App Engine中,如果它更适合您的需要,它们可以驻留在不同的产品中
总的来说,您可以更好地控制应用程序以将其分离。最大的好处可能是优化您的应用程序,使其只用于您需要的东西。您提出的体系结构听起来是将两者分离为不同服务的正确方法,原因如下:
- 可以分别为每个版本部署代码,分别回滚版本,并分别拆分流量以进行实验或分阶段推出
- 可以调整每项服务的机器类型和内存分配,以更好地满足其需求。如果您正在后端执行内存密集型工作,则可以调整该服务的设置,以便为每个实例分配更多内存
- 允许每种类型的服务根据需求独立扩展,从而更好地利用服务,减少浪费。这也应该会降低您的总体开支,而不是在单个单一服务中尝试“一刀切”的方法
- 您可以跨服务混合不同的运行时环境。例如,您可以在项目中混合使用语言运行时,甚至可以在标准和灵活的环境中混合使用。假设您的前端代码在标准中更具成本效益,将该服务指定为标准环境服务,将您的后端指定为灵活的环境服务。或者说,您需要一个包含Perl的customer docker文件,您可以将其作为一个灵活的环境自定义运行时来实现,并使用Java 8作为前端
- 您仍然可以共享诸如云SQL、PubSub、云任务(当前为alpha)或Redis等用于内存缓存的公共服务。您的作品不需要驻留在App Engine中,如果它更适合您的需要,它们可以驻留在不同的产品中