2014-11-22 58 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

相關問題