最佳实践:部署Angular App和Spring REST Api

时间:2017-06-11 16:35:38

标签: java angularjs spring tomcat deployment

我正在尝试部署一个与spring rest api通信的角度应用程序。

spring应用程序托管在tomcat上,并按预期工作。

我的角度应用是一种简单的形式,在理论上也有效。现在我尝试在我的本地系统上部署它们,并将角度发布数据发送到tomcat服务器,它将由spring应用程序处理。

由于这将是我将在未来几个月不断发展的事情,我正在寻找关于部署的最佳实践的建议。 是否建议从tomcat容器中提供服务,还是应该分开关注点?我也希望通过这个实验了解可扩展性和体系结构,因此使用单独的vms,多个服务器,负载平衡等我渴望理解并接收任何有用的建议或指向正确的方向。谢谢。

1 个答案:

答案 0 :(得分:6)

如果您希望应用程序大幅扩展(更多服务,频繁更改),则将用户界面与核心业务逻辑(后端)分离是一个不错的选择。

你迈出了第一步。

以下是我的经验以及我可以安全地说出的“推荐”设置:

  • Angular基于应用程序和Spring的REST应用程序是Web应用程序的两个完全不同的组件。它们是围绕不同的关注环境发展起来的。如果您单独处理(开发,构建和部署)它们,您将能够很好地维护它们而不会破坏整个应用程序。

  • 将用户界面与核心业务逻辑分离也可以帮助您将不同的技术堆栈用于不同目的。对于构建UI更有效的方法可能不适用于后端,反之亦然

  • 您提到这些组件会不断发展。通常,它们是分开进化的。这是单独部署管道的最佳情况(单独构建和部署它们)。

  • Angular应用程序可以托管在node服务器上,而基于Spring的后端API可以在Tomcat实例上运行。这也将帮助您根据需要更多关注的组件单独对这些组件进行负载平衡。

  • 由于这种分离,整个应用程序在停机期间不会停机。 REST API可能因维护或故障而停机,但应用程序的UI可能仍处于运行状态,并且可以提供一些不依赖于后端的请求。这比完全没有的应用程序要好得多。

  • 可以在UI层使用特征切换等技术来禁用某些功能,这些功能取决于后端或完成一半。虽然可以在单个可部署的应用程序中执行此操作,但是当UI与后端逻辑分离时,理解和管理会更加清晰。后端可以有自己的功能切换框架(不同于UI层的框架)。

  • 将来,您可以向外部世界(或其他应用程序)打开REST API,并添加Angular应用程序可能不需要的更多服务。潜在地,专门的团队可以在设置中处理REST API组件,并且可能不将它们暴露给Angular代码。

  • 我的最爱:将面向应用程序的Angular组件的公众视为Spring应用程序的“客户端”(REST API)。这使得REST应用程序“通用”并与Angular组件松散耦合,从长远来看,它具有巨大的优势。

话虽如此,可以在初始阶段开始为两者进行单一部署,但是您必须准备好在第一时间提取组件。