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