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