應(yīng)用程序現(xiàn)代化的11個(gè)秘密
將遺留應(yīng)用程序拖入現(xiàn)代時(shí)代是當(dāng)今數(shù)字戰(zhàn)略的關(guān)鍵支柱。但它也比你想象得更難、更昂貴,而且回報(bào)更少。
根據(jù)TwoBitHistory.org的調(diào)查數(shù)據(jù)顯示,超過95%的《財(cái)富》1000強(qiáng)企業(yè)仍在使用IMS——IBM古老的分層數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,簡(jiǎn)稱DBMS)。
相比之下,我自己的非正式調(diào)查結(jié)果顯示,根本沒有任何最佳IT開發(fā)人員會(huì)對(duì)在這種環(huán)境中工作感興趣。
吸引頂尖人才的能力是首席信息官(CIO)對(duì)其應(yīng)用程序組合進(jìn)行現(xiàn)代化改造的一個(gè)原因——并非唯一原因,而是最重要的原因之一。其他原因還包括減少許可和支持費(fèi)用,以及提高靈活性和適應(yīng)性。
事實(shí)上,“現(xiàn)代化”并不像看起來那么簡(jiǎn)單,它還有一些不為人知的秘密,聰明的CIO會(huì)在他們的決策中充分考慮這些秘密。
1. 應(yīng)用程序現(xiàn)代化是一個(gè)復(fù)合問題
應(yīng)用程序現(xiàn)代化涵蓋了針對(duì)一系列非常不同的問題的一系列非常不同的解決方案。
根據(jù)應(yīng)用程序和您交談的對(duì)象,應(yīng)用程序現(xiàn)代化可能意味著版本更新、平臺(tái)改造、平臺(tái)更換、語言現(xiàn)代化、重構(gòu)或商用現(xiàn)成品/技術(shù)(COTS)轉(zhuǎn)換。雖然它們都被稱為“現(xiàn)代化”,但它們幾乎沒有共同之處。每個(gè)都有需要注意的陷阱。有些是眾所周知的;而其他一些則更為隱蔽和不為人知。
此外,現(xiàn)代化意味著很多不同的事情這一事實(shí)本身就特別令人煩惱:在對(duì)給定的應(yīng)用程序進(jìn)行現(xiàn)代化改造之前,您不僅需要決定是否對(duì)其進(jìn)行現(xiàn)代化改造,還必須決定它需要哪種類型的現(xiàn)代化改造。然后乘以您投資組合中的應(yīng)用程序數(shù)量。
2. 版本更新是其自身的債務(wù)形式
一些IT領(lǐng)導(dǎo)團(tuán)隊(duì)認(rèn)為他們“不為技術(shù)而購(gòu)買技術(shù)”的做法非常具有商業(yè)頭腦,并且不斷地將一個(gè)陳腐的技術(shù)堆疊在另一個(gè)陳腐的技術(shù)之上,采取“如果它沒壞,就不要修復(fù)它”的方法來管理應(yīng)用程序及其運(yùn)行的堆棧。
他們還將這種邏輯應(yīng)用于商業(yè)應(yīng)用程序以及每個(gè)應(yīng)用程序運(yùn)行的每個(gè)平臺(tái)——服務(wù)器操作系統(tǒng)、DBMS、CMS、開發(fā)環(huán)境、桌面操作系統(tǒng)、瀏覽器等等——僅在特定的新功能帶來特定的新投資回報(bào)率(ROI)時(shí)才更新。
不幸的是,“后治理”的法則仍然占據(jù)主導(dǎo)地位:與保持最新狀態(tài)相比,“后治理”總是成本更高且更具破壞性的。
3. 重新平臺(tái)化(replatforming)只解決一個(gè)變量
將遺留應(yīng)用程序遷移到具有相應(yīng)平臺(tái)的開放環(huán)境是另一種流行的現(xiàn)代化方法。例如,平臺(tái)改造意味著從大型機(jī)托管的z/OS + COBOL + CICS + DB2遷移到x85托管的Linux + COBOL + CICS + DB2。在云遷移中,這稱為“直接遷移(lift-and-shift)”。
通過這種方法,你可以降低許可和供應(yīng)商支持費(fèi)用。
4. 平臺(tái)更換成本更高
平臺(tái)更換也是一種現(xiàn)代化方法,它只更換一個(gè)應(yīng)用程序運(yùn)行的平臺(tái),理由是它已經(jīng)過時(shí)或失去市場(chǎng)份額。例如,您可以將應(yīng)用程序的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)從Sybase切換到SQL Server。雖然這種方法有時(shí)也被稱為“重新平臺(tái)化(replatforming)”,但它與上述重新平臺(tái)化沒有任何共同之處。
通過這種方法你會(huì)得到什么呢?使用過時(shí)技術(shù)帶來的風(fēng)險(xiǎn)和漏洞會(huì)變得更少;同時(shí)也會(huì)獲得更好的人才庫(kù)。你無法得到什么呢?降低成本或任何改進(jìn)的功能。相反地,成本還會(huì)增加,因?yàn)槟惚仨毇@得更新平臺(tái)的許可。
5. 語言現(xiàn)代化往往使糟糕的情況變得更糟
誘人的銷售宣傳說,自動(dòng)化工具將從您的遺留COBOL代碼中提取您的業(yè)務(wù)邏輯,并用現(xiàn)代語言重寫它。這通常是通過將100000行代碼的COBOL應(yīng)用程序替換為100000行代碼的 Java應(yīng)用程序來實(shí)現(xiàn)的。
這是語言現(xiàn)代化最黑暗的秘密:語言不僅僅是詞匯和語法。語言會(huì)帶走應(yīng)用程序設(shè)計(jì)理念。
第二個(gè)最黑暗的秘密:語言通常也會(huì)帶走整個(gè)預(yù)先開發(fā)的邏輯庫(kù)。編寫新應(yīng)用程序的開發(fā)團(tuán)隊(duì)會(huì)利用這些庫(kù)。很少有代碼轉(zhuǎn)換器可以做到這一點(diǎn),這意味著它們生成的轉(zhuǎn)換后的代碼更難維護(hù)。
6. 重構(gòu)真正地現(xiàn)代化。所以當(dāng)然是昂貴和耗時(shí)的
重構(gòu)是一種現(xiàn)代化技術(shù),可將過時(shí)的應(yīng)用程序結(jié)構(gòu)轉(zhuǎn)換為符合經(jīng)過驗(yàn)證的實(shí)踐——例如,規(guī)范化數(shù)據(jù),或?qū)误w代碼重構(gòu)為微服務(wù)架構(gòu)。
一些工具聲稱可以自動(dòng)化大部分這種重構(gòu)工作。無論如何,可以嘗試一下,直至選出合適的工具。
需要注意的是:某些版本的自動(dòng)重構(gòu)確切地保留了應(yīng)用程序的行為。雖然這確實(shí)最大限度地減少了業(yè)務(wù)中斷,但它并沒有將隔夜批處理應(yīng)用程序轉(zhuǎn)換為近實(shí)時(shí)處理——這種架構(gòu)變化最有可能推動(dòng)競(jìng)爭(zhēng)優(yōu)勢(shì)。
重構(gòu)以提高適應(yīng)性和靈活性的形式提供了重要的業(yè)務(wù)利益。但是“天下沒有免費(fèi)的午餐”,架構(gòu)現(xiàn)代化確實(shí)可以帶來成果,但它既昂貴又費(fèi)力。
7. COTS轉(zhuǎn)換可能聽起來不像是一種現(xiàn)代化技術(shù)……但它確實(shí)是,而且通常是最好的現(xiàn)代化替代方案
通常,現(xiàn)代化應(yīng)用程序組合的最佳途徑是用其他人編寫的現(xiàn)代應(yīng)用程序套件替換當(dāng)前狀態(tài)的應(yīng)用程序“生態(tài)系統(tǒng)”。但這遠(yuǎn)非靈丹妙藥——任何曾經(jīng)參與轉(zhuǎn)換至COTS/SaaS套件的人都知道這有多困難——但它通常是替換一組應(yīng)用程序風(fēng)險(xiǎn)最小且最干凈利索的方法。
8. 了解你擁有的東西并不能完全依靠自動(dòng)化
現(xiàn)在我們已經(jīng)了解了您選擇的各種現(xiàn)代化方法的秘密,不過,還有一些更基本的東西需要提防。在對(duì)應(yīng)用程序進(jìn)行現(xiàn)代化改造之前,您需要知道自己擁有哪些應(yīng)用程序以及它們是如何構(gòu)建的,以便您了解剛才討論的哪些現(xiàn)代化類型可能適用。
可悲的是,盡管所有出色的自動(dòng)發(fā)現(xiàn)工具廠商都做出了“出色”的承諾,但這些工具僅用于發(fā)現(xiàn)服務(wù)器,而不是在服務(wù)器上運(yùn)行的應(yīng)用程序。
更糟糕的是,如果你的應(yīng)用程序清單文檔不完整,你也無法完整地記錄平臺(tái)——開發(fā)環(huán)境、服務(wù)器操作系統(tǒng)、DBMS、內(nèi)容管理系統(tǒng)和其他工具——每個(gè)應(yīng)用程序在其上運(yùn)行。只有認(rèn)識(shí)到這一點(diǎn),并充分了解自己擁有什么,你才能開始選擇上面討論的哪些現(xiàn)代化方法將提供最大的好處。
9. 軟件是一種意見——這使得應(yīng)用程序集成成為一個(gè)論點(diǎn)
每個(gè)業(yè)務(wù)應(yīng)用程序都編碼了開發(fā)團(tuán)隊(duì)關(guān)于組織的某些方面應(yīng)該如何運(yùn)行的意見。其意見的語法是寫在代碼中的。其詞匯被融入到應(yīng)用程序的數(shù)據(jù)設(shè)計(jì)中。
當(dāng)兩個(gè)或多個(gè)應(yīng)用程序的范圍重疊時(shí)——舉一個(gè)簡(jiǎn)單的例子,當(dāng)應(yīng)收賬款和CRM系統(tǒng)都維護(hù)客戶數(shù)據(jù)時(shí)——需要自動(dòng)化來保持兩組記錄的同步。將投資組合中的所有應(yīng)用程序重疊加起來,結(jié)果可能是數(shù)百個(gè)自定義點(diǎn)對(duì)點(diǎn)接口程序,每次開發(fā)團(tuán)隊(duì)添加或更改應(yīng)用程序時(shí),所有這些程序都需要進(jìn)行修改和回歸測(cè)試。
企業(yè)服務(wù)總線 (ESB) 或類似技術(shù)可以幫助減少為每個(gè)應(yīng)用程序定義單個(gè)接口的接口數(shù)量。
但除了接口數(shù)量龐大之外,還存在語義錯(cuò)位的問題——也就是說,您的應(yīng)收賬款和CRM系統(tǒng)的客戶數(shù)據(jù)模型不同。協(xié)調(diào)同一實(shí)體的這些不同定義,是使集成在開始時(shí)變得棘手并且更難以維護(hù)的原因。
企業(yè)服務(wù)總線 (ESB) 無法解決不同語義的問題,因?yàn)槭紫冗@不是技術(shù)問題,而且開發(fā)商也不同意。
10. 現(xiàn)代化IT勞動(dòng)力通常比現(xiàn)代化他們支持的應(yīng)用程序更難
您的員工可能非常擅長(zhǎng)維護(hù)和增強(qiáng)構(gòu)成您當(dāng)前應(yīng)用程序架構(gòu)的應(yīng)用程序和底層平臺(tái)。他們也是蘊(yùn)含豐厚知識(shí)的“寶庫(kù)”,能夠保障他們的應(yīng)用程序幫助業(yè)務(wù)按預(yù)期運(yùn)行。但是,他們?cè)谀默F(xiàn)代化計(jì)劃將實(shí)施的替換應(yīng)用程序和平臺(tái)方面能力并不突出。
如果您的現(xiàn)代化計(jì)劃能夠奏效,您將需要他們像現(xiàn)在一樣勝任替換工作。
除此之外,您還需要他們變得更有能力,以便他們能夠發(fā)現(xiàn)只有熟悉可用工具和當(dāng)前情況的聰明人才能改進(jìn)業(yè)務(wù)的機(jī)會(huì)。
“幸運(yùn)的”黑暗秘密是:簡(jiǎn)單地辭退他們,并雇傭替代者是行不通的。
當(dāng)然,你可以選擇直接辭退他們。但是尋找稱職的替代者既昂貴又耗時(shí)耗力,而且即便他們的替代者多么稱職,經(jīng)驗(yàn)法則告訴我們,更換員工的成本相當(dāng)于一個(gè)員工一年的工資——這無疑是十分昂貴的。
最后一個(gè)原因可以參見下條。
11. 運(yùn)行良好的IT組織很少需要現(xiàn)代化
運(yùn)行良好的IT組織會(huì)實(shí)踐生命周期管理。 他們會(huì)始終將所有事物保持最新狀態(tài)。這也使得預(yù)算易于管理——應(yīng)用程序現(xiàn)代化工作穩(wěn)定,幾乎沒有“大爆炸”情況,并且還有愉快的附帶福利,即讓您的員工隊(duì)伍與應(yīng)用程序和平臺(tái)一起保持現(xiàn)代化。