二戰(zhàn)時關(guān)于自相矛盾的軍事智能,有一個經(jīng)典的笑話——對立面的兩個事物是不可能組合的。如今若用“商業(yè)”來代替“軍事”這兩個字眼,可以得到同樣效果。一些人認為,前沿的、昂貴的敏捷開發(fā)進程與守舊、笨拙的大型主機結(jié)合的做法是不可能的,尤其是當(dāng)系統(tǒng)管理員抱有試圖管理遺留大型主機應(yīng)用性能這樣的想法。
別擔(dān)心!目前廠商開發(fā)的工具和用戶最佳實踐證明,這么做完全可行。在我們過于激動之前,先來了解一下我們現(xiàn)在所處的位置。
敏捷開發(fā)勢不可擋
關(guān)于敏捷開發(fā)我寫過許多文章。在這里,我想沒有必要重述那些高度正面的分析內(nèi)容。簡單地說,現(xiàn)在幾乎所有的軟件開發(fā)員都在談著敏捷開發(fā)。Scrum和敏捷商業(yè)智能(BI),甚至是測試過的模塊與大規(guī)模新版本執(zhí)行的持續(xù)融合,都已在各軟件開發(fā)機構(gòu)中取得穩(wěn)步進展。
過去四年中,敏捷開發(fā)者學(xué)會了如何按人數(shù)和代碼長度進行調(diào)節(jié),與此同時,廠商工具從過去的應(yīng)用生命周期管理(ALM)單元發(fā)展為與敏捷開發(fā)者進程有更多的關(guān)聯(lián)性。這些工具也擴大了自身的范圍,因此敏捷應(yīng)用生命周期管理現(xiàn)在不僅意味著在測試與編碼間的不間斷往復(fù),而且也還擔(dān)當(dāng)著開發(fā)者與操作之間的協(xié)調(diào)功能。
大型主機不可動搖的目標(biāo)
同樣在過去四年中--尤其是過去的兩年--高級管理層發(fā)現(xiàn)了一個事實,那就是,多年來,系統(tǒng)管理員顯而易見的一個盲點:應(yīng)用性能,而不僅僅是應(yīng)用的正常運行時間,才是重要的!
很長一段時間,IT只是集中精力讓應(yīng)用保持運轉(zhuǎn)。而如今架構(gòu)的復(fù)雜性和調(diào)整遺留應(yīng)用的難度讓我們不得不正視這個問題的根本。現(xiàn)在,沒有良好的應(yīng)用響應(yīng)時間,性能問題和初試中斷出現(xiàn)了,好則只是引起客戶不滿和員工效率低下,壞則導(dǎo)致延長運行緩慢時間和試錯修復(fù)產(chǎn)生中斷。中斷和運行放緩會使關(guān)鍵應(yīng)用長時間不可使用。這將對銷售和生產(chǎn)循環(huán)產(chǎn)生影響甚至導(dǎo)致停止。有時會給組織的盈虧造成重創(chuàng)。
這個問題對于大型主機型數(shù)據(jù)中心及其內(nèi)部的遺留應(yīng)用尤為重要。遺留應(yīng)用通常不僅助力商業(yè)運營,而且越來越成為Linux應(yīng)用落腳的地方。如果Linux應(yīng)用響應(yīng)速度慢得像蝸牛爬行一樣,將對全球在線用戶產(chǎn)生重要且深刻的影響。那就更不用說商業(yè)智能應(yīng)用--這里不存在矛盾。
企業(yè)對遺留應(yīng)用的日漸關(guān)注使得應(yīng)用性能管理(APM)工具組件終于成為企業(yè)IT投資追逐的目標(biāo)。同時,廠商也投入到開發(fā)應(yīng)對新型架構(gòu)組合的APM工具的“軍備競賽”中。顯而易見的選擇如IBM Tivoli,CA,以及Gomez/Compuware;較不為人知的選擇如Precise Software,它的工具增加了對分析內(nèi)容的權(quán)衡,以及推薦修復(fù)方法的功能。我強烈推薦在整體架構(gòu)中使用該工具。工具引入的結(jié)果是,這些針對系統(tǒng)管理員所關(guān)注的關(guān)鍵應(yīng)用性能管理需求的工具取得重大進展,其結(jié)果是實現(xiàn)了監(jiān)控:了解所有軟件級別,監(jiān)督跨越云和其它網(wǎng)絡(luò)的應(yīng)用,掌握負載競爭和復(fù)合應(yīng)用的效果,利用積累的知識進行更快更深刻的根原因分析,并提出更好的修復(fù)建議。
不可動搖的目標(biāo)遭遇不可阻擋的力量
雖然在z/OS上安裝可能有困難,敏捷開發(fā)還是有可能適用于貴公司大型主機上的Linux。我們就從這里講起。
我們的想法是,如有可能,把系統(tǒng)管理員的“性能問題數(shù)據(jù)”融入敏捷開發(fā)組織的快速反應(yīng)故障修復(fù)進程和為下一次發(fā)布所做的努力中。希望開發(fā)中團隊最終能聽到系統(tǒng)管理員受表現(xiàn)緩慢,瓶頸式新發(fā)布內(nèi)容的壓迫而發(fā)出的痛苦吶喊,將會給予快速修復(fù)。系統(tǒng)管理員,以同樣的方式,給敏捷開發(fā)者提供關(guān)于現(xiàn)實中的應(yīng)用在發(fā)布后如何到達客戶的有價值信息。我們就把這些作為我們的主要目標(biāo),逐一分解。
第一步,識別和執(zhí)行ALM計劃。該計劃要能涵蓋敏捷開發(fā)和大型主機管理--不用說應(yīng)該允許使用某些大型主機APM工具。實際操作并沒有聽起來這么難。幾種主要的ALM工具的確在某種程度上,既適用于Linux和z/OS,又適用于Linux在大型主機和其它主要平臺上進行的敏捷開發(fā)。(這些主要的 ALM工具,除了少數(shù)幾種情況,能夠在下列系統(tǒng)中運行并參與開發(fā)任務(wù):zLinux,其它Linux,z/OS和其它操作系統(tǒng)--Window, UNIX等。能夠在所有這些平臺上工作的組成部分在細節(jié)方面有顯著區(qū)別,但這些不同點正在慢慢消失。)REXX和COBOL并不純粹適合敏捷開發(fā),但它們在圍繞復(fù)合應(yīng)用和前段遺留z/OS應(yīng)用的網(wǎng)頁服務(wù)界面方面做了許多工作。在那些領(lǐng)域中,Linux/web功能性比重往往超出了新型大型主機匯編碼的數(shù)量。新的ALM應(yīng)該能輕松滿足貴公司幾乎全部的需求,若有例外,預(yù)期可以臨時解決。
在期望的ALM計劃準備就緒,并取得初步的經(jīng)驗之后,我們就可以回過頭來再討論那幾個關(guān)鍵目標(biāo):
·識別:利用現(xiàn)有或可獲取的APM工具,識別出管理員發(fā)現(xiàn)的重要性能問題的根源代碼。
·追蹤:如果可能,在敏捷開發(fā)者各自責(zé)任下,回溯追蹤應(yīng)用中的特定代碼。方法是,讓系統(tǒng)管理員在存儲于ALM系統(tǒng)里的操作版本上作標(biāo)示,然后把標(biāo)示內(nèi)容發(fā)送給該代碼現(xiàn)任開發(fā)者。
·整合:把故障報告與ALM系統(tǒng)的持續(xù)整合行動相融合,針對操作版本和現(xiàn)行開發(fā)版本,特別指出修復(fù)辦法。這是個棘手的過程,需要開發(fā)者在現(xiàn)行開發(fā)版本中進行修復(fù)操作,讓問題經(jīng)由測試團隊返回到操作測試版本中,從而不致更進一步影響開發(fā)者。
·截取:盡快對新近修復(fù)的操作版本進行截取并反饋。可以反饋到預(yù)操作測試員或直接告知系統(tǒng)管理員,以便快速進行隔離測試和舊操作版本的更換。
·標(biāo)準化:一旦上述總結(jié)的“識別-追蹤-整合-截取”幾個常規(guī)步驟在幾次案例中得到貫徹落實,就可以將此過程標(biāo)準化。
在多數(shù)情況下,按上述操作可以實現(xiàn)快得多的操作故障修復(fù),讓系統(tǒng)管理員滿意。并給敏捷開發(fā)員提供了數(shù)量驚人的信息,那些客戶不愿見到、讓人心煩的性能意外。也免了下一周忙著建立原型的苦差。
讓敏捷開發(fā)與你的大型主機共同運行的最佳實踐
你可能已經(jīng)注意到,在我的描述中關(guān)于敏捷開發(fā)者在這里扮演的角色有諸多變幻。如果你是一名系統(tǒng)管理員,可能在想,“我是要開發(fā)者立即修復(fù)性能問題,而不是讓它淹沒在各版本和測試的切換之中。”這就是最佳實踐出現(xiàn)的地方--敏捷的最佳實踐。
你知道,有了敏捷開發(fā),你不必設(shè)法達到最初的目的,就能實現(xiàn)最終的需求。特別是,當(dāng)一個敏捷最佳實踐處于不斷重構(gòu)時,不僅能使代碼從任何方向上進行變更都更容易,而且降低了現(xiàn)行版本中代碼與操作版本中代碼差異過大的可能性。這意味著回溯路徑是簡單明確的,能讓你在不到一周時間里把以往需要9個月才能完成的修復(fù)工作搞定。
第二個敏捷最佳實踐是“百花齊放”。換句話說,與其通知開發(fā)者修改故障或別的問題,應(yīng)該鼓勵開發(fā)者或測試者--他們還能利用敏捷ALM工具修復(fù)之前的版本--在每周的建模競賽中添加越來越多能調(diào)校的敏捷選項。敏捷的關(guān)鍵要義在于把那些稱為“技術(shù)債”,日后務(wù)必要解決的遺留問題最小化。在此再次出現(xiàn)了敏捷的悖論:我們強調(diào)最大限度進行變更,并在此過程中,最小化技術(shù)債。從而使修復(fù)動作減到最少并提高質(zhì)量。忽略時間,成本和質(zhì)量,而我們卻能夠在這三方面比采用傳統(tǒng)方法達到更好的效果。這種情況下,即使不會更早,故障也能在周末前修復(fù)。這就是持續(xù)整合。
這里還有一個最奇妙的最佳實踐:提高系統(tǒng)管理員的敏捷度。你知道,能夠讓開發(fā)者深刻理解系統(tǒng)管理員調(diào)查結(jié)果的ALM工具同樣也能幫助系統(tǒng)管理員及他的APM工具發(fā)掘出開發(fā)者可利用的資料庫和處理進程。聰明的系統(tǒng)管理員將能夠利用這些資源,并在ALM工具的指導(dǎo)和幫助下,不再需要或者較少依賴開發(fā)程序就能夠修復(fù)應(yīng)用中的故障。這意味著系統(tǒng)管理員能夠完全不求助開發(fā)團隊情況下也能完成修復(fù);借由ALM把信息發(fā)送到開發(fā)團隊,必要時,修復(fù)會不可思議地穿插進他們的工作中。雖然要花點時間設(shè)置,但對于雙方來講是值得的。
大型主機的本質(zhì)內(nèi)容
聊夠了科學(xué)假想,現(xiàn)在讓我們回頭看一下可以立即著手的工作和相應(yīng)的回報。出于回顧考慮,你會要加強ALM和APM來處理大型主機/系統(tǒng)管理員/敏捷開發(fā)者之間的交互作用。短期內(nèi),你希望系統(tǒng)管理員能看到更快的修復(fù),敏捷開發(fā)者能看到更多的操作信息。為獲取最大效果,你可以采用我們提到的最佳實踐做法。你將會看到客戶滿意度大幅度提升,系統(tǒng)管理員提高了工作效率,技術(shù)債也減少了。那么這之后呢?
不過,為什么要問下一步呢?敏捷的價值在于能靈活應(yīng)對意外情況,發(fā)掘并欣然接受變化而不是焦躁不安地試圖預(yù)期,并且能大膽采取行動--哦,科學(xué)假想。如果你非要問,也許你可以四處看看敏捷開發(fā)能修復(fù)的那些悖論情形。或許可以從商業(yè)智能入手,雖然解決這個矛盾可能需要更多一些時間。