2014-11-22 64 views
0

假设我有一个用JavaEE编写的非常大型的服务器端Web应用程序(以及与之相结合的相关技术),我决定将它完全迁移到Akka(和相关技术通常与其结合使用,包括将代码移至Scala)。迁移决定的原因并不重要:假设我必须这样做,这就是全部。将大规模应用程序从JavaEE移植到Akka

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

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

回答

2

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

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

确定候选分区:一旦您对分区进行了排名,选择尽可能多的维度中重叠的最小可能分区并且耦合量最小是很有用的。通常,如果您的初始架构是模块化的,就是这种情况。

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

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

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

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

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

+0

非常感谢您的回复))我明白,但如果您提供一些关于上述步骤的更多“真实”内容,那将会非常好。例如,以任何众所周知的应用程序为例,并粗略描述应用于此应用程序的上述步骤。有了这个,我会接受你的答案。 – ale64bit 2014-11-25 21:35:26

相关问题