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