應用向云遷移的頭號難題:倒底需不需要重構?
譯文在將應用程序移植到云環境當中時,我們到底應該對其進行上行轉換、部分重構還是完全重構?下面一起來看各類作法的優勢與弊端。
就目前來看,成千上萬的應用程序正在被逐步移植到云環境當中,而企業則需要就此快速作出決策——即如何對每一款應用加以處理。
由于等待移植的應用程序數量太過龐大,對每一款都加以修改無疑將是一項艱巨的任務。不過如果不加任何調整就進行應用程序遷移,將意味著我們無法充分利用云平臺當中的種種固有優勢。
目前進行應用程序遷移的具體選項包括:
- 不對代碼進行任何修改即進行直接移植,也就是上行轉換。
- 對代碼進行部分重構,通過應用程序定制的方式使其適應云平臺。
- 對代碼進行完全重構,通過應用程序定制的方式使其適應云平臺并獲得其它功能。
部分重構方式僅修改應用程序當中的特定部分以發揮云平臺的固有優勢,而整體重構則意味著需對應用程序的大部分代碼進行變更。
上行轉換的優勢與弊端
上行轉換方案的優勢在于:
- 應用程序的遷移工作量***。
- 遷移與部署速度更快。
弊端在于:
- 通常無法發揮云平臺的原生特性與優勢。
- 在云環境下運行此類應用可能帶來更高成本。
部分重構的優勢與弊端
部分重構方案的優勢在于:
- 只需要對應用程序中的一部分代碼進行修改。
- 與整體重構相比,遷移與部署速度更快。
弊端在于:
- 只能發揮云平臺上的一部分特性與優勢。
- 在云環境下運行此類應用可能帶來更高成本。
整體重構的優勢與弊端
整體重構方案的優勢在于:
- 應用程序通常能夠獲得更理想的執行效果。
- 應用程序能夠針對運行方式作出優化,從而降低日常成本。
弊端在于:
- 移植成本更高,因為我們需要對應用程序中的大部分代碼進行修改。
- 部署時間較前兩種方案更長。
適合采用上行轉換方案的應用程序往往擁有經過良好定義的架構,其中數據被耦合至應用程序邏輯當中,因此我們很難對其加以硬性拆分。在這種情況下,修改或者重構應用程序代碼所帶來的成本往往令人望而卻步。如果這類應用程序能夠在云環境下順暢運行,那么我們并沒有必要的理由對其加以重構。
不過某些關鍵性業務應用程序在設計水平方面比較糟糕。如果不加重構就將它們遷移到云環境下,則意味著其會占用大量云資源,導致更高的公有云服務使用成本,甚至有可能出現性能或者穩定性問題。在這種情況下,考慮到此類應用程序的重要作用,我們可以對其中的部分代碼進行重寫,從而充分發揮云平臺的固有特性與優勢、同時降低云資源使用成本。在必要時,甚至可以選擇對其進行整體重構。
那么哪種方案最為理想?答案取決于應用程序的具體情況以及該應用負責實現的業務目標。建議大家首先對自己手中的應用程序資產進行深入分析,然后再做出慎重而正確的決定。
原文標題:Refactor or not? Decision No. 1 when porting apps to the cloud