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

标签 java scala jakarta-ee web-applications akka

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

我的问题是:这里要遵循什么策略,旨在优化迁移时间和最终应用程序的可扩展性?

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

最佳答案

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

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

识别候选分区:对分区进行排名后,选择在尽可能多的维度上重叠且耦合量最少的尽可能最小的分区非常有用。如果您的初始架构是模块化的,通常就是这种情况。

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

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

展示原型(prototype):尝试将原型(prototype)展示给一小部分用户/利益相关者并获取反馈。使用 REST/pub-sub 接口(interface)解耦原型(prototype)是一个好主意。

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

如果您提出更有针对性的问题,我可以更具体。

关于java - 将大型应用程序从 JavaEE 迁移到 Akka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27078869/

相关文章:

java - 在 Android 上的 Scala 代码中改造 HTTP 报告 "HTTP method annotation is required"

java - Spring + Scala + 匿名 block 或类

java - Jersey 和 Jackson 的 REST-Web 服务示例中出现 404 错误

java - 使用 BorderLayout 创建两个偶数列

java - 包与 Java 9 中的自动模块冲突

java - Java中的部分反序列化和序列化?

java - fragment 事务空指针

class - 在包层次结构中具有重复名称的 Scala 包私有(private)

java - 嵌入式 tomcat 7 servlet 3.0 注释不起作用

javax.ws.rs.ProcessingException,在 Payara Server 5 中找不到内容类型 application/json 类型的 writer