遺留系統(tǒng)含有成千上萬(wàn)個(gè)執(zhí)行一大批業(yè)務(wù)功能的服務(wù)組件。比如說(shuō),假設(shè)貴企業(yè)運(yùn)行的一個(gè)內(nèi)部遺留系統(tǒng)中的一套組件向企業(yè)高管提供一份統(tǒng)計(jì)報(bào)告。為了趕在截至日之前獲得這份每周提交的報(bào)告,該高管應(yīng)該考慮將必要的組件遷移到新的軟件即服務(wù)(SaaS)應(yīng)用程序。
如果經(jīng)濟(jì)可行性研究表明這種遷移是明智的決策,他應(yīng)該與其他高管以及由開(kāi)發(fā)人員、系統(tǒng)工程師和業(yè)務(wù)分析人員組成的一個(gè)團(tuán)隊(duì)合作,將遺留系統(tǒng)細(xì)分成多個(gè)組件,然后著手開(kāi)發(fā)那個(gè)應(yīng)用程序。
1. 識(shí)別遺留系統(tǒng)資產(chǎn)
開(kāi)發(fā)團(tuán)隊(duì)、高管和遺留系統(tǒng)負(fù)責(zé)人需要識(shí)別遺留系統(tǒng)的資產(chǎn)。這些資產(chǎn)包括如下:
說(shuō)明文檔,包括遺留系統(tǒng)的描述和流程圖以及災(zāi)難恢復(fù)計(jì)劃;公司內(nèi)部數(shù)據(jù)中心所在的設(shè)施;與遺留系統(tǒng)有關(guān)的利益相關(guān)者;這包括當(dāng)前用戶(包括高管)、開(kāi)發(fā)人員、系統(tǒng)管理員和業(yè)務(wù)分析人員;遺留系統(tǒng)運(yùn)行在上面的IT基礎(chǔ)設(shè)施;以及開(kāi)發(fā)人員的技術(shù)技能,比如在平臺(tái)即服務(wù)(PaaS)上開(kāi)發(fā)SaaS應(yīng)用程序,讓開(kāi)發(fā)人員能夠在虛擬環(huán)境共享技能。2. 發(fā)現(xiàn)必要的組件及依賴關(guān)系
開(kāi)發(fā)人員應(yīng)該掃描源代碼,查找供以后提取的服務(wù)組件。源代碼包括主程序及其與子例程之間的接口,子例程可能采用了不同于主程序語(yǔ)言的編程語(yǔ)言編寫而成。
下一步是,開(kāi)發(fā)人員識(shí)別主程序和子例程中的組件之間的依賴關(guān)系。服務(wù)組件的依賴關(guān)系可能與其他服務(wù)組件的依賴關(guān)系之間存在多對(duì)多的關(guān)系。
在識(shí)別組件的過(guò)程中,開(kāi)發(fā)人員還應(yīng)該設(shè)計(jì)一份流程圖,幫助自己將服務(wù)組件彼此之間的依賴關(guān)系具象化。
3. 提取組件
開(kāi)發(fā)人員應(yīng)確定應(yīng)該從遺留系統(tǒng)提取哪些組件。提取服務(wù)組件的簡(jiǎn)易性取決于下面五個(gè)因素:
源代碼一開(kāi)始編寫得有多好;源代碼打補(bǔ)丁、再打補(bǔ)丁有多頻繁,以修復(fù)軟件錯(cuò)誤;遺留系統(tǒng)的說(shuō)明文檔是否定期更新;開(kāi)發(fā)人員的技術(shù)技能(比如,遺留系統(tǒng)的原始開(kāi)發(fā)人員可能再也找不到);以及服務(wù)組件的依賴關(guān)系具有的復(fù)雜性。4: 接受或拒絕提取的組件
一旦開(kāi)發(fā)人員厘清了依賴關(guān)系,他可以接受或拒絕依賴關(guān)系。接受依賴關(guān)系并不總是意味著按原狀接受服務(wù)組件。開(kāi)發(fā)人員可能需要重新設(shè)計(jì)服務(wù)組件的結(jié)構(gòu),以滿足新的業(yè)務(wù)需求。結(jié)合依賴關(guān)系有望消除重復(fù)或類似的服務(wù)功能,因而減少了服務(wù)組件的數(shù)量。開(kāi)發(fā)人員把所有被接受的服務(wù)組件放入到一個(gè)組件庫(kù),以便在構(gòu)建SaaS應(yīng)用程序時(shí)使用。
構(gòu)建和安裝SaaS應(yīng)用程序
在PaaS上構(gòu)建SaaS應(yīng)用程序時(shí),開(kāi)發(fā)人員應(yīng)該確定:
1. 用戶、開(kāi)發(fā)人員、系統(tǒng)管理員和業(yè)務(wù)分析人員期望從SaaS應(yīng)用程序獲得什么樣的東西,然后選擇SaaS應(yīng)用程序運(yùn)行所需的云部署類型:私有云、公有云還是混合云。
2. 根據(jù)用戶、開(kāi)發(fā)人員、系統(tǒng)開(kāi)發(fā)人員和業(yè)務(wù)分析人員的預(yù)期要求構(gòu)建應(yīng)用程序時(shí),使用哪些被接受的服務(wù)組件。
3. 什么方法將服務(wù)組件編排到松散耦合的SaaS應(yīng)用程序最經(jīng)濟(jì)高效,并測(cè)試該應(yīng)用程序的結(jié)果是否滿足預(yù)期目標(biāo)。松散耦合是指,應(yīng)用程序在等待用戶響應(yīng)的同時(shí),應(yīng)用程序的其余部分可以繼續(xù)運(yùn)行。
安裝應(yīng)用程序后,開(kāi)發(fā)人員應(yīng)該監(jiān)控SaaS應(yīng)用程序的性能以及業(yè)務(wù)需求方面出現(xiàn)的任何變化,這些變化可能需要更新及重新設(shè)計(jì)應(yīng)用程序的服務(wù)組件。
英文原文:Four steps to take before migrating legacy components to a SaaS app