大型機(jī)應(yīng)用現(xiàn)代化策略:“黑匣子”分布應(yīng)用
假設(shè)一種情況:用戶需要用到他們大型機(jī)上的某項(xiàng)應(yīng)用,但是廠商卻不能再提供服務(wù)支持。比如以前負(fù)責(zé)升級(jí)該應(yīng)用的某個(gè)開(kāi)發(fā)人員/管理員離職了,或者公司決定停止對(duì)升級(jí)服務(wù)的繼續(xù)投入。那么,替代方案是什么?在這里,我們將介紹幾項(xiàng)應(yīng)用遷移的策略及各自的優(yōu)缺點(diǎn)。例如應(yīng)用現(xiàn)代化、重組、分布集成。
一般來(lái)說(shuō),可以替換掉應(yīng)用(希望***能這樣),改用能夠支持的語(yǔ)言/操作系統(tǒng)/平臺(tái)?;蛘咧苯影堰@個(gè)應(yīng)用當(dāng)作“黑匣子”,在它下面建立一個(gè)獨(dú)立子應(yīng)用處理所有升級(jí)需求。后兩個(gè)策略使用到下面這些廣為人知的技術(shù):
1.大型機(jī)應(yīng)用現(xiàn)代化:在應(yīng)用前端設(shè)置一個(gè)網(wǎng)頁(yè)服務(wù)供應(yīng)商接口,用以處理所有與該應(yīng)用發(fā)生的交互活動(dòng)。
2.重組:利用應(yīng)用的原有功能,在另外一個(gè)平臺(tái)上把它轉(zhuǎn)化為相應(yīng)功能。
3.分布集成:分配眾多子系統(tǒng)在多虛擬機(jī)和物理機(jī)上運(yùn)行,使它們猶如一個(gè)整體在運(yùn)轉(zhuǎn)。
我們應(yīng)該把正反兩方面意見(jiàn),把策略和技術(shù)上難點(diǎn)都納入考慮范圍。
一、更換應(yīng)用
理想情況下,應(yīng)用更換在任何時(shí)候都是最棒的替代方案。只要想象一下,新應(yīng)用能夠神奇地出現(xiàn)在對(duì)你來(lái)說(shuō)最省成本的平臺(tái)上并能正常運(yùn)轉(zhuǎn),不需任何花費(fèi),而且能準(zhǔn)確復(fù)制大型機(jī)上已有的應(yīng)用。而現(xiàn)實(shí)世界中,應(yīng)用更換通常是最糟糕的替代方案?,F(xiàn)成的成套應(yīng)用方案無(wú)法模擬現(xiàn)實(shí)應(yīng)用,這讓終端用戶很惱火;但從零開(kāi)始研發(fā)成本太高,不僅會(huì)占用主要的IT項(xiàng)目,而且常常會(huì)因?yàn)閷?duì)現(xiàn)有應(yīng)用的功能知之甚少,且少有記載導(dǎo)致失敗;而且,替代方案實(shí)施失敗的話,也沒(méi)有所謂的B方案可供選用。
眾多成功的應(yīng)用更換在牽涉到“關(guān)鍵業(yè)務(wù)大型機(jī)應(yīng)用”時(shí),采取的都是“足夠好”的辦法。也就是,把重新開(kāi)發(fā)工作外包給一家兼具大型機(jī)和替換平臺(tái)(通常是linux)專業(yè)知識(shí)的應(yīng)用遷移公司。他們使用的基礎(chǔ)軟件是經(jīng)過(guò)時(shí)間驗(yàn)證的(不管是不是開(kāi)放源)。他們關(guān)注舊大型機(jī)應(yīng)用的主要功能,并盡其所能減少新應(yīng)用可能帶給用戶的不便感受。而且采用了“平等追蹤”的部署方式,能夠確保只有在新應(yīng)用“服役”滿一年后舊應(yīng)用才正式“引退”。
與直覺(jué)相反,針對(duì)上述替換方案現(xiàn)今***的目標(biāo)操作系統(tǒng),可能經(jīng)常是“大型機(jī)上的Linux”。這里提到“Linux”是因?yàn)?,它能根?jù)需要,只作最小的應(yīng)用修正(大型機(jī)Linux與大型機(jī)、放大Unix和擴(kuò)容PC服務(wù)器稍有不同,但新應(yīng)用完全能寫成便攜方式)就能允許對(duì)平臺(tái)的進(jìn)一步變更。而這里提到“大型機(jī)”的原因則是,直到現(xiàn)在,許多用戶仍反映大型機(jī)處理應(yīng)用擴(kuò)容最節(jié)約成本。一位技術(shù)執(zhí)行官最近跟我說(shuō)到了他的認(rèn)識(shí),他發(fā)現(xiàn)一臺(tái)大型機(jī)負(fù)載達(dá)98%但仍有處理冗余,而一臺(tái)擴(kuò)容服務(wù)器負(fù)載只不過(guò)50%時(shí)但讓人感覺(jué)后勁全無(wú)。這僅僅意味著擴(kuò)容應(yīng)用在大型機(jī)上運(yùn)行較節(jié)約成本,因?yàn)槿绻跀U(kuò)容配置中增加常規(guī)服務(wù)器花費(fèi)很大。
二、轉(zhuǎn)換與分布集成
應(yīng)用現(xiàn)代化
大型機(jī)應(yīng)用的持續(xù)現(xiàn)代化,也包含了對(duì)網(wǎng)頁(yè)瀏覽器的支持,以及對(duì)PC訪問(wèn)和網(wǎng)頁(yè)服務(wù)供應(yīng)商界面的支持。但實(shí)際上,許多應(yīng)用還未達(dá)到現(xiàn)代化標(biāo)準(zhǔn),無(wú)法支持此類網(wǎng)頁(yè),這其中可能就包括了你的應(yīng)用。多數(shù)大型機(jī)軟件供應(yīng)商針對(duì)此類問(wèn)題有許多應(yīng)對(duì)工具和服務(wù)。不論客戶是想在遷移應(yīng)用前,還是在應(yīng)用遷移到新平臺(tái)后,他們都能夠幫助達(dá)成添加網(wǎng)頁(yè)服務(wù)供應(yīng)商界面這一目標(biāo)。對(duì)于哪種是***的應(yīng)用遷移方法并無(wú)定論。但是對(duì)大型機(jī)應(yīng)用結(jié)構(gòu)和操作了解的越多,就越容易將其封裝成“網(wǎng)頁(yè)服務(wù)供應(yīng)商”。
人們常常低估了大型機(jī)應(yīng)用現(xiàn)代化的效用。不過(guò),應(yīng)用遷移負(fù)責(zé)人要明白,如果想要建立內(nèi)部云或者使用外部云平臺(tái),除非大型機(jī)應(yīng)用已經(jīng)被轉(zhuǎn)化成網(wǎng)頁(yè)服務(wù)模式,否則它在云平臺(tái)上是不可用的。如果應(yīng)用被虛擬成網(wǎng)頁(yè)服務(wù)形式,那么從長(zhǎng)遠(yuǎn)來(lái)看,云平臺(tái)的施行是再簡(jiǎn)單不過(guò)的事情了。
重組
如果能夠?qū)?yīng)用本身進(jìn)行提取程序模型(確定程序?qū)嶋H運(yùn)行方式),那么重組對(duì)于應(yīng)用遷移來(lái)說(shuō)就是一個(gè)好方法。對(duì)大型機(jī)應(yīng)用進(jìn)行重組的副作用通常是出現(xiàn)一個(gè)標(biāo)準(zhǔn)化模式,允許在開(kāi)發(fā)設(shè)計(jì)階段(例如UML)進(jìn)行修改。這類提取不僅允許生成面向所有主要編程語(yǔ)言和環(huán)境(例如,所有平臺(tái)上的Java)的應(yīng)用實(shí)例,而且使得程序的修改和升級(jí)變得更容易。它不是對(duì)應(yīng)用本身進(jìn)行修改,而是通過(guò)修改設(shè)計(jì)來(lái)達(dá)到目的。
因此,“重組專家”的主要任務(wù)是利用IBM,CA Clerity公司和Micro Focus公司這類廠商的重組工具生成一個(gè)適合企業(yè)現(xiàn)有開(kāi)發(fā)流程的標(biāo)準(zhǔn)模式。從而確保今后企業(yè)若想把應(yīng)用遷移到另外的平臺(tái),或是計(jì)劃對(duì)其進(jìn)行現(xiàn)代化,擴(kuò)展或合并時(shí)(例如,使其成為復(fù)合應(yīng)用的一部分),此類操作會(huì)更快捷和更安全。
分布集成
分布集成是關(guān)于讓大型機(jī)應(yīng)用(作為“黑匣子”或轉(zhuǎn)型應(yīng)用)在兩個(gè)或兩個(gè)以上的目標(biāo)平臺(tái)運(yùn)行的理念,就像IBM的zEnterprise(Linux在刀片上,也在大型機(jī)系統(tǒng)上)。對(duì)于“黑匣子”型分布集成,使用z/OS或大型機(jī)Linux作為其中一個(gè)平臺(tái)以減小平臺(tái)移動(dòng)的風(fēng)險(xiǎn)通常是有道理的。然而更具典型意義的是,分布集成涉及到的是向兩個(gè)平臺(tái)遷移而不是一個(gè),不過(guò)平臺(tái)之間(例如,虛擬機(jī)管理,網(wǎng)絡(luò)和調(diào)度)的集成工具使得實(shí)際中對(duì)產(chǎn)生的子應(yīng)用的集成變得更簡(jiǎn)單。
分布集成取得成功的關(guān)鍵在于爭(zhēng)取到一個(gè)能使應(yīng)用性能***化的目標(biāo)應(yīng)用分布。比如,一個(gè)能從放大中受益的應(yīng)用,要盡可能把重負(fù)荷放在放大服務(wù)器上處理(放大或大型機(jī)Linux),并利用應(yīng)用的擴(kuò)容元件執(zhí)行“邊緣”任務(wù),例如緩沖。擴(kuò)容型應(yīng)用則應(yīng)把多平行復(fù)本放到網(wǎng)格型或刀片型網(wǎng)絡(luò)中的多重虛擬機(jī)上,同時(shí)把不易發(fā)生故障的放大機(jī)作為管理重點(diǎn)。
很多應(yīng)用屬于zEnterprise方案的“折衷”版本,分別由放大和擴(kuò)容來(lái)處理各自擅長(zhǎng)的部分。在這種情況下,用戶要尋求跨平臺(tái)管理工具的***化支持。我們可以看到,通過(guò)一些努力,現(xiàn)在有可能讓W(xué)indows成為目標(biāo)平臺(tái)之一--通過(guò)在z/OS上安裝Windows模擬器,以“黑匣子”方式部署或重新編譯Linux版本以兼容Windows(需要重新編寫多達(dá)20%的原代碼)。
分布集成的另一個(gè)關(guān)鍵任務(wù)是建立隨時(shí)可以與其它分布應(yīng)用進(jìn)行分布通訊和集成的應(yīng)用。這點(diǎn)經(jīng)常被錯(cuò)誤理解為在各應(yīng)用之間建立起標(biāo)準(zhǔn)化通訊。實(shí)際上,分布集成的主要目標(biāo)是要建立起應(yīng)用之間數(shù)據(jù)交換的標(biāo)準(zhǔn)化方式--更具體來(lái)說(shuō),要界定應(yīng)用里的元數(shù)據(jù)并使其涵蓋進(jìn)全球元數(shù)據(jù)池。然后,類似ETL和IBM’s Information Server的數(shù)據(jù)合并解決方案就可以利用這些數(shù)據(jù)掌握數(shù)據(jù)管理,跨企業(yè)報(bào)告等等。
轉(zhuǎn)換
就像前面所指出的那樣,轉(zhuǎn)換就是要改變現(xiàn)有大型機(jī)應(yīng)用的代碼,以使其能適應(yīng)在不同平臺(tái)上運(yùn)行和升級(jí)。因此,轉(zhuǎn)換的目標(biāo)是盡可能少作變動(dòng),盡可能自動(dòng)化運(yùn)行。也許還需要把它分解到多平臺(tái)上,或是在轉(zhuǎn)換過(guò)程中進(jìn)行升級(jí)以便支持復(fù)合應(yīng)用或適應(yīng)更高級(jí)的云和網(wǎng)頁(yè)功能。
有三種基本途徑可以對(duì)此類大型機(jī)應(yīng)用進(jìn)行轉(zhuǎn)換:
1.建立一個(gè)包含基礎(chǔ)軟件型目標(biāo)平臺(tái)的目標(biāo)環(huán)境,并重寫不受支持部分。例如,依賴CICS,MQSeries和DB2的大型機(jī)COBOL應(yīng)用可以利用廠商的轉(zhuǎn)換程序,雖然要重寫交叉匯編碼??梢詮膹S商和Clerity Solutions這樣的應(yīng)用遷移外包商那里獲得Linux基礎(chǔ)支持。
2.上面已經(jīng)介紹過(guò)大型機(jī)應(yīng)用重組。這里補(bǔ)充一點(diǎn),雖然應(yīng)用遷移外包商在這方面做得越來(lái)越好,但是也存在一些情況會(huì)讓他們感到無(wú)能為力或困難重重。
3.根據(jù)需要逐項(xiàng)重新編寫應(yīng)用。經(jīng)驗(yàn)表明,這很可能與更換應(yīng)用一樣冒險(xiǎn),甚至代價(jià)會(huì)更大。無(wú)論如何,對(duì)于業(yè)務(wù)關(guān)鍵性應(yīng)用,這可能是***的選擇了。
從長(zhǎng)遠(yuǎn)看,應(yīng)用重組可能是***的方案。因?yàn)閼?yīng)用重組從根本上對(duì)代碼進(jìn)行了現(xiàn)代化處理,使得對(duì)應(yīng)用的進(jìn)一步變更有更大靈活性。在上述三個(gè)例子中,轉(zhuǎn)換應(yīng)用時(shí),使應(yīng)用現(xiàn)代化無(wú)疑是個(gè)好主意。因?yàn)轭愃频挠猛緯?huì)是網(wǎng)頁(yè)型組織的一部分,甚至可能是云平臺(tái)的一部分。分布集成是可以自由選擇的。許多案例可以證明,要把轉(zhuǎn)換過(guò)程包含在分布集成內(nèi)將會(huì)過(guò)于復(fù)雜。
#p# 三、“黑匣子”分布應(yīng)用
應(yīng)對(duì)撤消大型機(jī)應(yīng)用支持,“黑匣子”方案并不是一個(gè)理想的長(zhǎng)遠(yuǎn)解決辦法。它會(huì)加大應(yīng)用再變更的難度,但它卻是風(fēng)險(xiǎn)最小、最省成本的辦法?;舅枷胧?,不觸動(dòng)應(yīng)用本身,但要用網(wǎng)頁(yè)服務(wù)供應(yīng)商界面把應(yīng)用包圍起來(lái),使得在開(kāi)發(fā)人員,管理員和終端用戶看來(lái),它就像Linux或Unix應(yīng)用一樣在運(yùn)行。需要升級(jí)時(shí),界面會(huì)把終端用戶需求轉(zhuǎn)化成新代碼并交付給新平臺(tái)來(lái)處理。
這個(gè)辦法行得通的原因在于,在現(xiàn)實(shí)世界中,從現(xiàn)在起,即使不是全部亦是大多數(shù)大型機(jī)應(yīng)用漏洞將會(huì)成為調(diào)整的問(wèn)題,遠(yuǎn)超出以前的麻煩程度。網(wǎng)頁(yè)服務(wù)界面處理這類問(wèn)題的辦法是暫緩需求處理,重寫功能代碼。這么做肯定會(huì)造成問(wèn)題,所以這不是一個(gè)優(yōu)越的執(zhí)行方案,存在自身風(fēng)險(xiǎn)--假設(shè)問(wèn)題被解決了,然后又發(fā)現(xiàn)那并不是最糟糕情況--但是精心做的話,它卻是快速節(jié)約的實(shí)施方案,風(fēng)險(xiǎn)也極低。
從定義看,“黑匣子”分布應(yīng)用實(shí)施包括,應(yīng)用現(xiàn)代化(供應(yīng)商界面),分布集成(供應(yīng)商界面代碼和新平臺(tái)的新代碼,但是“黑匣子”在老平臺(tái)上),但并不包括重組。這意味著大型機(jī)環(huán)境要有網(wǎng)頁(yè)服務(wù)供應(yīng)商界面的開(kāi)發(fā)支持和跨虛擬機(jī)網(wǎng)絡(luò)和管理--現(xiàn)在多數(shù)大型機(jī)環(huán)境都具備這點(diǎn),在機(jī)箱外。所以,如果把大型機(jī)型Linux作為新平臺(tái),可以自己動(dòng)手操作,也可以從IBM獲取一點(diǎn)幫助。當(dāng)然,所有其它環(huán)境也同樣支持網(wǎng)頁(yè)服務(wù)供應(yīng)商界面,虛擬機(jī),跨平臺(tái)網(wǎng)絡(luò)和開(kāi)發(fā);只不過(guò),跨平臺(tái)管理可能要多花點(diǎn)力氣。
成本低的緣故,自己動(dòng)手安裝“黑匣子”的想法很有吸引力。但是,預(yù)算足夠的話,我還是建議把活外包給IBM,CA Technologies,或Clerity這樣專業(yè)的公司。即使這樣,還是比其它方案來(lái)得省錢。這些公司憑借與其它IT大型機(jī)應(yīng)用長(zhǎng)期打交道的經(jīng)驗(yàn),了解難點(diǎn)在哪里,所以能給出諸如該類型應(yīng)用架構(gòu)未來(lái)可能出現(xiàn)的漏洞之類有價(jià)值的建議。這些建議對(duì)于業(yè)務(wù)關(guān)鍵性應(yīng)用可以說(shuō)是無(wú)價(jià)之寶。
大型機(jī)應(yīng)用現(xiàn)代化的現(xiàn)實(shí)情況
關(guān)于上述所有的策略還有一則警示:代碼轉(zhuǎn)移到新平臺(tái),意味著性能損失。損失可能不大,就像“黑匣子”方案中出現(xiàn)的;損失也可能很大,遭遇到重新編寫多數(shù)甚至全部代碼的情況。但經(jīng)驗(yàn)表明,很少出現(xiàn)新應(yīng)用一開(kāi)始就在新環(huán)境出運(yùn)行順暢的情況。
那么該如何在這些策略中做出選擇呢?首先,剔除那些不可行選項(xiàng)。很多情況下,無(wú)法做到有效替換。有時(shí)候,代碼過(guò)于定制化或無(wú)法滲透,那么根本不能進(jìn)行重組。這時(shí),你要問(wèn)問(wèn)自己這個(gè)應(yīng)用到底有多重要,撤消支持的需求有多急迫。對(duì)于不是特別關(guān)鍵的應(yīng)用,如果時(shí)間允許的話,重組或者別的形式的轉(zhuǎn)換可能正是需要的手段。如果需求很急切,“黑匣子”可能是唯一出路。
只有到這個(gè)時(shí)候你才需要考慮費(fèi)用。這是因?yàn)楝F(xiàn)實(shí)生活中經(jīng)常出現(xiàn)這樣的情形,“要么現(xiàn)在付錢,要么回頭多付”。初期投入最少方案似乎很有吸引力,例如根據(jù)需要逐項(xiàng)重寫應(yīng)用,或是直接啟用號(hào)稱能起到同樣作用的新型開(kāi)放源應(yīng)用。但是據(jù)調(diào)查,很多項(xiàng)目都是由于終端用戶對(duì)于新應(yīng)用,及伴隨出現(xiàn)的停機(jī)時(shí)間和無(wú)法修復(fù)的故障等情況產(chǎn)生了極大不滿而最終失敗。所以仔細(xì)權(quán)衡承擔(dān)的風(fēng)險(xiǎn)和后續(xù)將產(chǎn)生的維護(hù)費(fèi)用后再做出合理的初始投入決定才是明智的。
***一個(gè)忠告:一些把大型機(jī)應(yīng)用重新配置到新平臺(tái)的應(yīng)用遷移項(xiàng)目從長(zhǎng)遠(yuǎn)看確實(shí)是值得的。通常是因?yàn)?,網(wǎng)頁(yè)服務(wù)供應(yīng)商界面允許大型機(jī)代碼在復(fù)合應(yīng)用中得以重新使用,或者重組讓終端新用戶能夠獲取所需功能,而代碼也能為新應(yīng)用所用。所以不要把應(yīng)用遷移看作逃不掉的苦差事,像人體的牙根管。它也可能是沙子里的鉆石,蘊(yùn)含著優(yōu)秀的潛質(zhì)。