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

时间:2014-11-22 15:09:33

标签: java scala java-ee web-applications akka

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

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

如果问题缺乏细节,我可以提供一些,但我希望听到策略而不是非常具体。

1 个答案:

答案 0 :(得分:2)

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

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

识别候选分区:对分区进行排名后,选择尽可能多的重叠并且耦合量最小的最小分区是很有用的。通常情况下,如果您的初始架构是模块化的。

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

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

填写原型:尝试将原型转移到一小部分用户/利益相关者并获得反馈。使用REST / pub-sub接口解耦原型是个好主意。

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

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