遺留系統(tǒng)現(xiàn)代化是足以讓CIO心碎的詞語(yǔ)。
很多時(shí)候,這個(gè)概念指的是重新設(shè)計(jì)21世紀(jì)早期(如果不是更早)構(gòu)建的應(yīng)用程序,使其提供接近21世紀(jì)的性能和用戶體驗(yàn)(UX)。這樣做的結(jié)果幾乎總是不盡人意。除了花費(fèi)的時(shí)間、金錢和精力外,企業(yè)還有不參與其他更具變革性的項(xiàng)目的機(jī)會(huì)成本。并且,最終結(jié)果很少像最新設(shè)計(jì)的系統(tǒng)那樣敏捷、靈活、實(shí)用或用戶友好。
但也不一定都是這樣。對(duì)遺留系統(tǒng)現(xiàn)代化采用結(jié)構(gòu)化方法可以最大限度地減少升級(jí)的工作和成本,同時(shí)確保從功能、性能和用戶體驗(yàn)的角度獲得良好結(jié)果。
遺留系統(tǒng)現(xiàn)代化的結(jié)構(gòu)化方法
對(duì)遺留系統(tǒng)現(xiàn)代化采用結(jié)構(gòu)化方法意味著提出兩個(gè)關(guān)鍵問(wèn)題,然后根據(jù)這些問(wèn)題的答案采取正確的方法。這也意味著使遺留系統(tǒng)現(xiàn)代化成為持續(xù)的過(guò)程,而不是一勞永逸的項(xiàng)目。
對(duì)于很多CIO來(lái)說(shuō),最困難的部分是強(qiáng)迫他們自己和他們的團(tuán)隊(duì)有條不紊地解決他們確信他們已經(jīng)知道答案的問(wèn)題。但這值得付出努力:很多時(shí)候,這里的答案將使技術(shù)專業(yè)人員能夠完全避開(kāi)勞動(dòng)密集型的努力。
1.你企業(yè)對(duì)遺留的定義是什么?
你對(duì)這個(gè)問(wèn)題的回答將決定你將精力集中在哪些系統(tǒng)上,以及暫時(shí)擱置哪些系統(tǒng)。
根據(jù)烏克蘭軟件公司Mobindustry的說(shuō)法:“遺留系統(tǒng)是指阻礙進(jìn)一步發(fā)展、不允許輕松集成新功能并減慢企業(yè)日常運(yùn)營(yíng)的系統(tǒng)。簡(jiǎn)而言之,遺留系統(tǒng)很難維護(hù)、支持和擴(kuò)展。”
這里的關(guān)鍵點(diǎn)是遺產(chǎn)并不意味著老舊。如果開(kāi)發(fā)人員由于無(wú)知或匆忙而沒(méi)有遵循最新的架構(gòu)原則,那么上周構(gòu)建的應(yīng)用程序也可能屬于遺留系統(tǒng)。匆忙的應(yīng)用程序開(kāi)發(fā)是技術(shù)債務(wù)的常見(jiàn)來(lái)源。
因此,第一步是將所有系統(tǒng)現(xiàn)代化分為三類:遺留、中間和現(xiàn)代。
遺留系統(tǒng)是那些需要現(xiàn)代化的系統(tǒng),無(wú)論新舊程度;現(xiàn)代系統(tǒng)是那些不需要現(xiàn)代化的系統(tǒng)。中間系統(tǒng)和應(yīng)用程序允許進(jìn)行現(xiàn)代化,但可能不是首要任務(wù)。
CIO通常會(huì)拒絕這一關(guān)鍵的第一步,理由是業(yè)務(wù)利益相關(guān)者在對(duì)特定應(yīng)用程序的容忍度方面已經(jīng)達(dá)到極限,并要求立即對(duì)其進(jìn)行現(xiàn)代化改造。通常的想法是,“我們已經(jīng)知道哪些系統(tǒng)需要現(xiàn)代化,我們不需要浪費(fèi)時(shí)間對(duì)它們進(jìn)行分類。”
這種想法很誘人,但事實(shí)并非如此。即使遺留系統(tǒng)現(xiàn)代化團(tuán)隊(duì)擁有的帶寬只可以處理單個(gè)應(yīng)用程序,了解列表中的其他系統(tǒng)也很重要,以便將最佳實(shí)踐應(yīng)用于所有系統(tǒng)。
換句話說(shuō),不要將遺留系統(tǒng)現(xiàn)代化視為針對(duì)關(guān)鍵應(yīng)用程序的單個(gè)臨時(shí)項(xiàng)目,而應(yīng)將其視為遵循一致方法的持續(xù)過(guò)程,應(yīng)用于最需要現(xiàn)代化的應(yīng)用程序。
2.遺留系統(tǒng)現(xiàn)代化的最佳方法是什么?
到目前為止,很明顯這個(gè)問(wèn)題是關(guān)于給定應(yīng)用程序的最佳方法,因?yàn)榻Y(jié)構(gòu)化方法的重點(diǎn)是在為每個(gè)系統(tǒng)部署最佳方法。
為了回答這個(gè)問(wèn)題,我們需要回顧遺留系統(tǒng)現(xiàn)代化的核心方法。
Gartner公司提到了五個(gè)R:重新托管(rehost)、重構(gòu)(refactor)、重新架構(gòu)(rearchitect)、重建(rebuild)、替換(replace)。這是看待事物的一種方式,它既是具體的(重新架構(gòu)和重建往往重疊),也是范圍廣泛的-對(duì)于遺留系統(tǒng)現(xiàn)代化的特定目的而言。
考慮遺留系統(tǒng)現(xiàn)代化的更好的方法是從這五種方法的角度來(lái)考慮:封裝、更換平臺(tái)、重構(gòu)、重新設(shè)計(jì)、重新思考。
封裝系統(tǒng)(通過(guò)API)本質(zhì)上限制了對(duì)系統(tǒng)的訪問(wèn),以匹配與其連接的現(xiàn)代系統(tǒng)的信息和工作流。例如,你可以通過(guò)API將系統(tǒng)集成到通用UX平臺(tái)中,以便其信息以用戶易于使用的格式顯示,以提供最佳的用戶體驗(yàn)。
封裝的價(jià)值在于,它解決了糟糕用戶體驗(yàn)的短期痛苦,并使遺留系統(tǒng)看起來(lái)像現(xiàn)代系統(tǒng)一樣運(yùn)行。缺點(diǎn)是它沒(méi)有解決遺留系統(tǒng)的根本問(wèn)題:維護(hù)開(kāi)銷。封裝的遺留系統(tǒng)仍然是遺留系統(tǒng);當(dāng)封裝后,它將繼續(xù)消耗與以前一樣多的勞動(dòng)力和成本。很多研究表明CIO將高達(dá)80%的預(yù)算用于支持和維護(hù)遺留系統(tǒng),因此企業(yè)必須考慮這個(gè)問(wèn)題。
更換平臺(tái)聽(tīng)起來(lái)就像是:將系統(tǒng)(可能還有它的所有數(shù)據(jù)和存儲(chǔ)資源)移動(dòng)到另一個(gè)平臺(tái)。通常,這是指托管設(shè)施或IaaS。在解決短期目標(biāo)(例如關(guān)閉本地?cái)?shù)據(jù)中心或避免昂貴的WAN升級(jí)以使遠(yuǎn)程用戶能夠訪問(wèn)系統(tǒng))時(shí),更換平臺(tái)是有吸引力的選擇。
然而,平臺(tái)重構(gòu)在很大程度上是過(guò)渡步驟。將問(wèn)題轉(zhuǎn)移到IaaS或托管設(shè)施可能會(huì)解決短期問(wèn)題,但維護(hù)云服務(wù)的成本可能會(huì)增加,并且為遺留應(yīng)用程序支付云成本只是另一種形式的技術(shù)債務(wù)。
根據(jù)Agile Alliance的定義,重構(gòu)包括“改進(jìn)現(xiàn)有程序源代碼的內(nèi)部結(jié)構(gòu),同時(shí)保留其外部行為。”具體來(lái)說(shuō),這包括改進(jìn)代碼的客觀屬性:長(zhǎng)度、重復(fù)、耦合、內(nèi)聚和圈復(fù)雜度,使其易于維護(hù)、增強(qiáng)代碼理解和增加可重用設(shè)計(jì)元素和代碼模塊的使用。Agile Alliance繼續(xù)指出,重構(gòu)并不意味著重寫代碼、修復(fù)錯(cuò)誤或改進(jìn)軟件的可觀察方面,例如其界面。
為了理解重構(gòu),我們可以將其視為代碼優(yōu)化。也就是說(shuō),開(kāi)發(fā)人員不會(huì)更改功能或基本編碼算法,而是會(huì)審查代碼,以確保其最佳理解,并實(shí)例化良好的敏捷開(kāi)發(fā)做法。你還可以通過(guò)重構(gòu)從代碼中消除技術(shù)債務(wù),即用更清晰、優(yōu)化的設(shè)計(jì)替換所有編碼快捷方式和次優(yōu)部署。
重構(gòu)是降低系統(tǒng)支持成本的好方法,很多企業(yè)將其部署為云遷移策略的健康組成部分。從遺留系統(tǒng)現(xiàn)代化的角度來(lái)看,重構(gòu)的困境在于它沒(méi)有解決依賴于過(guò)時(shí)架構(gòu)的系統(tǒng)的挑戰(zhàn)。
重新設(shè)計(jì)包括重新構(gòu)建和重建,包括重寫代碼。本質(zhì)上,這是指架構(gòu)和設(shè)計(jì)現(xiàn)代化。這是大多數(shù)企業(yè)技術(shù)人員在考慮遺留系統(tǒng)現(xiàn)代化時(shí)立即選擇的選項(xiàng),因?yàn)樗钪庇^:提供相同的業(yè)務(wù)功能,但使用現(xiàn)代編碼技術(shù)和架構(gòu)。
重新設(shè)計(jì)當(dāng)然是一種可行的方法,它可提供無(wú)縫的全面清理。作為系統(tǒng)重新設(shè)計(jì)的結(jié)果,用戶體驗(yàn)和支持成本都會(huì)得到改善。但是,CIO不應(yīng)該排除另一個(gè)做法。
重新思考是一種未被充分利用的方法,它指的是重新思考整個(gè)業(yè)務(wù)流程。大多數(shù)企業(yè)技術(shù)人員都認(rèn)為業(yè)務(wù)需求是一成不變的,但事實(shí)并非如此。有時(shí)業(yè)務(wù)需求本身就是過(guò)時(shí)的。
一個(gè)簡(jiǎn)單的例子:在COVID-19疫情期間,很多公司都在為如何為各種文檔啟用基于簽名的工作流程而苦苦掙扎,因?yàn)閱T工在家工作并且出于合規(guī)性或安全原因無(wú)法打印文檔。
真正的解決方法不是使應(yīng)用程序現(xiàn)代化,而是首先重新考慮對(duì)基于簽名的工作流程的要求。通過(guò)有效的身份驗(yàn)證,勾選復(fù)選框可以像簽名那樣有效。
很多業(yè)務(wù)需求已經(jīng)過(guò)時(shí)或反映當(dāng)時(shí)技術(shù)的局限性。例如,大多數(shù)CRM系統(tǒng)早于LinkedIn,并且沒(méi)有設(shè)計(jì)為能夠在工作變化時(shí)與個(gè)人保持聯(lián)系。
通常,遺留系統(tǒng)現(xiàn)代化的最佳方法是重新思考系統(tǒng)所服務(wù)的業(yè)務(wù)流程。通常,你會(huì)發(fā)現(xiàn)流程本身已經(jīng)過(guò)時(shí)。
對(duì)于“哪種方法最好?”這個(gè)問(wèn)題,答案取決于一系列因素,包括成本、時(shí)間(即現(xiàn)代化需要多快進(jìn)行)、需要現(xiàn)代化的其他遺留系統(tǒng)的數(shù)量和類型、企業(yè)的云戰(zhàn)略和企業(yè)的整體業(yè)務(wù)戰(zhàn)略。
重要的是根據(jù)所有可能的現(xiàn)代化替代方案考慮所有遺留系統(tǒng),然后選擇對(duì)每個(gè)系統(tǒng)最有意義的方法。需要考慮的關(guān)鍵因素是重新思考占整體現(xiàn)代化戰(zhàn)略的多大部分;有時(shí),重新思考可以消除整個(gè)類別的系統(tǒng)。
最后,制定所有系統(tǒng)現(xiàn)代化的路線圖,不僅僅是那些目前被歸類為遺留系統(tǒng)的系統(tǒng)。路線圖應(yīng)包括對(duì)所有系統(tǒng)的定期審查,以確定它們何時(shí)進(jìn)入遺留系統(tǒng)類別。