Lightbend Lagom - 如何重构Java EE monoliths

时间:2016-04-11 17:33:01

标签: java refactoring lagom

我正在观看一个由lightbend制作的网络研讨会,谈论将巨石重构为微服务,并向我提出了一个问题。该框架的主要目标似乎是重构整体,但拉格姆似乎在自己的容器和技术集上运行。当我考虑monoliths和遗留Java应用程序时,我想到的主要技术是Java EE。我认为今天生产中的大多数应用程序都依赖于某些Java EE技术。我工作的那个主要基于EJB。所以我的问题是:Lagom如何解决这个问题?我想重构这种应用程序涉及将远程EJB查找转换为其余调用。但是,如果lagom不在Java EE容器中运行,我将如何保留我的应用程序的本地EJB?可以同时使用两者吗?

3 个答案:

答案 0 :(得分:1)

我对Lagom并不了解,但是,使用基于微服务的架构的市场在很大程度上依赖于Spring Boot / cloud。目前,我正在使用微服务开展一个非常大的项目,看起来春天的人们为每个微服务模式提供了很多框架/工具,当你在微服务中思考时,你应该考虑到这些模式。另一方面,Netflix(最大的微服务用户)依赖Spring,我认为Spring Boot / Cloud是将Java EE单片应用程序重构为微服务的好方法

答案 1 :(得分:0)

我建议看https://vimeo.com/163760711。答案是你不应该只是把你的EJB转变成服务,如果你这样做,你只会介绍拥有许多服务的所有复杂性和性能上的痛苦,并且不会获得微服务的好处。如果您想从微服务中受益,则需要重新考虑您的架构。

答案 2 :(得分:0)

您可以从使用一组REST Web服务表示现有EJB服务开始,这些服务又将由您的基于Lagom的新微服务使用,如下所示:

[EJB服务]< - [基于EJB的REST服务网关]< - [基于Lagom的微服务]

或作为部署模块:

[您的EJB应用程序.EAR]< - [EJB-REST网关.WAR]< - [基于Lagom的应用程序]

由于您的EJB应用程序将在容器(例如Wildfly)中运行,因此您的Lagom应用程序将独立部署(可能在不同的主机上)。引入REST服务层将允许您独立开发每个模块,这是在这种情况下成功的关键。

接下来,逐步实现新功能,并可能在基于Lagom的新应用程序中重新实现一些遗留功能。

这正是我所做的,它就像一个魅力。