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
























