将大型应用程序从JavaEE迁移到Akka

将大型应用程序从JavaEE迁移到Akka,java,scala,jakarta-ee,web-applications,akka,Java,Scala,Jakarta Ee,Web Applications,Akka,假设我有一个用JavaEE编写的大型服务器端web应用程序(以及与之经典结合的相关技术),我决定将其完全迁移到Akka(以及通常与之结合的相关技术,包括将代码移动到Scala)。迁移决定的原因并不重要:假设我必须这么做,就这样 我的问题是:为了优化迁移时间和最终应用程序的可伸缩性,这里应该遵循什么策略 如果问题缺乏细节,我可以提供一些,尽管我希望听到的策略不太具体。这是一个开放式问题。但是让我试着给你一些想法。在使用J2EE和基于Play2/Akka/Spray.io(Scala)的系统之后,我

假设我有一个用JavaEE编写的大型服务器端web应用程序(以及与之经典结合的相关技术),我决定将其完全迁移到Akka(以及通常与之结合的相关技术,包括将代码移动到Scala)。迁移决定的原因并不重要:假设我必须这么做,就这样

我的问题是:为了优化迁移时间和最终应用程序的可伸缩性,这里应该遵循什么策略


如果问题缺乏细节,我可以提供一些,尽管我希望听到的策略不太具体。

这是一个开放式问题。但是让我试着给你一些想法。在使用J2EE和基于Play2/Akka/Spray.io(Scala)的系统之后,我可以为您提供以下关于迁移的高级/通用指南

对系统进行分区:根据功能对当前系统进行分区,并根据其对业务、利益相关者和客户的重要性对其进行排序。可以根据不同的维度(运行时的体系结构组件、业务功能、开发团队/模块)进行分区。您还需要找到这些分区之间的依赖关系

确定候选分区:对分区进行排序后,选择尽可能多维度重叠且耦合量最小的最小分区非常有用。通常情况下,如果您的初始架构是模块化的,则会出现这种情况

实现一个原型:获取候选分区并创建一个提供相同功能的原型。现在,根据各种质量属性(性能、可修改性、可扩展性等)评估并比较新功能与旧功能。原型还将为您提供技术风险、挑战和努力的估计

创建一个新架构:我认为此时您应该有足够的投入来创建新架构的第一个版本。还要确定在这个新体系结构中如何实现其他分区的功能。选择最复杂的分区并尝试将其映射到这个新的体系结构是一个非常好的练习,可以大大降低将来的技术风险

输入原型:尝试向一小部分用户/利益相关者输入原型,并获取反馈。使用REST/pub-sub接口解耦原型是一个好主意

迁移计划:为系统的其余部分创建计划和时间表


如果你提供更有针对性的问题,我可以更具体一些

非常感谢你的回复)我理解,但是如果你能提供一些关于你上面提到的步骤的更“真实”的东西,那就太好了。例如,以任何已知的应用程序为例,粗略描述上述应用于此应用程序的步骤。有鉴于此,我将接受你的回答。