【问题标题】:Gradually migrate from Spring Boot MVC Monolith to JAVA Backend + React Frontend逐步从 Spring Boot MVC Monolith 迁移到 JAVA Backend + React Frontend
【发布时间】:2021-11-09 09:24:55
【问题描述】:

在我的团队中,我们需要并且希望将前端与后端分离,以改善用户体验并分离开发团队。

现在我们有一个 java spring boot MVC 单体渲染 jsp 模板到浏览器。 我们必须选择前端语言:React+Redux。

在这个时刻,我们无法在幕后完全开发新的前端,因此我们需要逐步整合“旧”和“新”前端。 我们需要独立的代码库,位于不同的远程仓库。

我们该如何处理?

我们探索了一些理论上的选择,主要是:

  1. 将来自 React 的静态构建文件“放在”war 包中不希望
  2. 让后端应用程序从浏览器中获取请求并以某种方式呈现所选 JSP 中的 React 应用程序
  3. 让前端应用程序从浏览器中获取请求,路由到后端以防万一是前端的“旧”部分

我们在这一点上陷入困​​境,决定如何进行,有人可以帮助我吗?

旁注:Web 应用程序通过 AWS 云提供服务:我们有一个负载均衡器,它使用 Tomcat 和一个预置的 MySQL Aurora DB 管理 ubuntu 实例。主域指向负载均衡器

【问题讨论】:

    标签: reactjs amazon-web-services spring-boot spring-mvc react-redux


    【解决方案1】:

    React+Redux 是一个单页应用程序 (SPA),它只提供静态内容。您可以将其部署在 S3 存储桶中并通过 Cloud Front 提供服务。

    在您的 Spring Boot 代码中,您应该实现将由 React 应用程序使用的 REST API(或 GraphQL)。

    因此,您将拥有两个代码存储库,一个用于 React 应用程序,一个用于后端。

    需要考虑的一些事项:

    • 部署:React App 和 Spring Boot 可以分开部署。您应该设置 CI/CD 管道。
    • CORS:React 应用程序将位于与后端服务不同的域中。应该在 Spring Boot 中正确配置 CORS。
    • 身份验证:JWT 身份验证适用于此架构。
    • 后端团队与前端团队协作:GraphQL 可以解决一些问题,但对您的团队来说可能改变太大。如果您使用 REST API,则应该记录该 API。 Spring Boot 可以轻松与 Swagger 集成。

    【讨论】:

    • 非常感谢您抽出宝贵时间。我们被困在你名单的第二点上。我们如何渲染与主域不同的域中的 ReactApp?
    • 这可以使用 CORS:spring.io/guides/gs/rest-service-cors
    • 您好,团队几乎完成了新拼图的配置。我的问题仍然没有解决方案。您回复中的所有内容都是正确的,但它并没有解决我真正的问题,当然是因为我没有很好地解释自己。我们需要有一个过渡期,在此期间用户看到的部分内容由新的 react 应用程序呈现,其余部分由旧的 MVC 单体通过 JSP 呈现。实现这一目标的最佳方法是什么?
    • 做一些关于 A/B 测试的研究。发布一个包含更多细节(部署环境、约束)的新问题
    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2010-12-17
    • 2011-03-04
    • 2013-08-09
    • 2015-12-20
    • 2019-01-07
    • 2020-11-18
    相关资源
    最近更新 更多