在将应用程序移植到云环境当中时,我们到底应该对其进行上行转换、部分重构还是完全重构?下面一起来看各类作法的优势与弊端。
就目前来看,成千上万的应用程序正在被逐步移植到云环境当中,而企业则需要就此快速作出决策——即如何对每一款应用加以处理。
由于等待移植的应用程序数量太过庞大,对每一款都加以修改无疑将是一项艰巨的任务。不过如果不加任何调整就进行应用程序迁移,将意味着我们无法充分利用云平台当中的种种固有优势。
目前进行应用程序迁移的具体选项包括:
- 不对代码进行任何修改即进行直接移植,也就是上行转换。
- 对代码进行部分重构,通过应用程序定制的方式使其适应云平台。
- 对代码进行完全重构,通过应用程序定制的方式使其适应云平台并获得其它功能。
部分重构方式仅修改应用程序当中的特定部分以发挥云平台的固有优势,而整体重构则意味着需对应用程序的大部分代码进行变更。
上行转换的优势与弊端
上行转换方案的优势在于:
- 应用程序的迁移工作量***。
- 迁移与部署速度更快。
弊端在于:
- 通常无法发挥云平台的原生特性与优势。
- 在云环境下运行此类应用可能带来更高成本。
部分重构的优势与弊端
部分重构方案的优势在于:
- 只需要对应用程序中的一部分代码进行修改。
- 与整体重构相比,迁移与部署速度更快。
弊端在于:
- 只能发挥云平台上的一部分特性与优势。
- 在云环境下运行此类应用可能带来更高成本。
整体重构的优势与弊端
整体重构方案的优势在于:
- 应用程序通常能够获得更理想的执行效果。
- 应用程序能够针对运行方式作出优化,从而降低日常成本。
弊端在于:
- 移植成本更高,因为我们需要对应用程序中的大部分代码进行修改。
- 部署时间较前两种方案更长。
适合采用上行转换方案的应用程序往往拥有经过良好定义的架构,其中数据被耦合至应用程序逻辑当中,因此我们很难对其加以硬性拆分。在这种情况下,修改或者重构应用程序代码所带来的成本往往令人望而却步。如果这类应用程序能够在云环境下顺畅运行,那么我们并没有必要的理由对其加以重构。
不过某些关键性业务应用程序在设计水平方面比较糟糕。如果不加重构就将它们迁移到云环境下,则意味着其会占用大量云资源,导致更高的公有云服务使用成本,甚至有可能出现性能或者稳定性问题。在这种情况下,考虑到此类应用程序的重要作用,我们可以对其中的部分代码进行重写,从而充分发挥云平台的固有特性与优势、同时降低云资源使用成本。在必要时,甚至可以选择对其进行整体重构。
那么哪种方案最为理想?答案取决于应用程序的具体情况以及该应用负责实现的业务目标。建议大家首先对自己手中的应用程序资产进行深入分析,然后再做出慎重而正确的决定。
原文标题:Refactor or not? Decision No. 1 when porting apps to the cloud