敏捷開發(fā)從最初作為革命性的軟件開發(fā)管理方法,如今逐漸成為了一種軟件開發(fā)的新常態(tài)。由于使得開發(fā)工作更有效率,敏捷開發(fā)在過去的十年間優(yōu)勢盡顯:無論用戶還是開發(fā)團隊,都能更快更好地達成工作目標(biāo)。
為什么說敏捷開發(fā)與DevOps是天生一對
隨著DevOps越來越流行,敏捷開發(fā)的吸引力也與日俱增。即使它們并不相同,也始終相輔相成:一個團隊如果完全沒有實踐過敏捷開發(fā),DevOps也很難做得十分優(yōu)秀,反之亦然。
DevOps的確可以被看作是敏捷開發(fā)原則的一種延伸。敏捷開發(fā)這一概念雖然早于DevOps誕生,但正因為有了DevOps相關(guān)實踐,敏捷開發(fā)才得以發(fā)揮更大的用途。敏捷開發(fā)的概念在運營與其他非IT領(lǐng)域中也被反復(fù)應(yīng)用著,近年來DevOps也展現(xiàn)出了超越開發(fā)團隊范疇的優(yōu)勢,而它對于企業(yè)級全球IT團隊的幫助還是最為顯著的。Gartner咨詢公司近期就建議,IT部門應(yīng)該采取敏捷開發(fā)的實踐來幫助聚焦創(chuàng)新,同時采取DevOps確保新軟件發(fā)布的安全與穩(wěn)定。
因此,對于新一代軟件的拓展與應(yīng)用來說,敏捷開發(fā)與DevOps都是密不可分的。
快速與風(fēng)險的平衡點
敏捷開發(fā)與DevOps共有的一項優(yōu)勢體現(xiàn)在靈活度上,它們能夠讓開發(fā)者面對用戶不斷變化的需求作出響應(yīng),這一點在當(dāng)今的數(shù)字化社會中彌足珍貴。敏捷開發(fā)縮短了從新需求產(chǎn)生到將相應(yīng)新功能交付的周期。DevOps則使交付速度得以提升。
然而,實踐敏捷開發(fā)的團隊?wèi)?yīng)該時刻牢記,如此快速的更新必須以堅實的IT基礎(chǔ)與牢固的軟件結(jié)構(gòu)作為支撐。不僅如此,軟件的開發(fā)還需要在可靠的架構(gòu)中進行,并且這種架構(gòu)能夠時刻靈活地作出調(diào)整與改進,以保持敏捷性。
乍看之下,這種對架構(gòu)的嚴(yán)格要求似乎違反了敏捷開發(fā)的原則與方法論,實則不然。一個合理的架構(gòu)(至少在軟件領(lǐng)域)并不是一塵不變的,而是不斷演化的動態(tài)過程。一款軟件也不可能從開發(fā)之初就做到盡善盡美。
重要的是,開發(fā)團隊需要時常監(jiān)測軟件系統(tǒng)架構(gòu),評估其效率并且識別違規(guī)組件或者潛在的安全漏洞。采用DevOps實踐與相關(guān)工具可以對軟件進行自動檢查,以判斷是否達到相關(guān)準(zhǔn)則,以及相關(guān)更新是否帶來額外的風(fēng)險與潛在的副作用。如果開發(fā)團隊既想滿足快速的目標(biāo),又希望回避風(fēng)險,那么軟件系統(tǒng)架構(gòu)必須時常更新,并且易于生成。如此一來,它們才能夠很好地支持日常的軟件的更新與長期的適應(yīng)性調(diào)整。
確保軟件質(zhì)量的標(biāo)準(zhǔn)
由于縮短了開發(fā)周期,利用敏捷開發(fā)能夠很好地滿足需求并且軟件能夠進行快速適應(yīng)與調(diào)整。DevOps則能夠幫助提升質(zhì)量,并且提供理想的條件對軟件的自動化與Fail-fast進行監(jiān)測。
盡管敏捷開發(fā)與DevOps有著以上諸多好處,但它們并不能保證軟件的質(zhì)量與較低的技術(shù)依賴性。即使目前廣為人知的Fail-fast方法能夠快速地發(fā)現(xiàn)軟件缺陷,IT部門還需要確保故障產(chǎn)生的影響與損失降到最低。而這很難通過被動的方式實現(xiàn)。
開發(fā)團隊?wèi)?yīng)該采取更為主動的方式預(yù)先避免可能發(fā)生的問題,利用相關(guān)工具比照國際通行的質(zhì)量標(biāo)準(zhǔn),對代碼語句結(jié)構(gòu)、設(shè)計結(jié)構(gòu)進行檢測,防患于未然。美國軟件質(zhì)量聯(lián)盟(CISQ)制定的標(biāo)準(zhǔn)就是一個很好的選擇。CISQ標(biāo)準(zhǔn)考量軟件的總體架構(gòu)藍圖,并且能夠用于管理外包開發(fā)商的協(xié)議中,識別代碼與軟件開發(fā)架構(gòu)中存在的主要問題。
采用這樣的標(biāo)準(zhǔn)體系,就能夠確保軟件質(zhì)量并且?guī)椭鷪F隊發(fā)現(xiàn)軟件中存在的風(fēng)險。這些風(fēng)險在軟件開發(fā)過程中往往不易被察覺,一旦爆發(fā)則會導(dǎo)致系統(tǒng)突然崩潰。其實,開發(fā)團隊只要對質(zhì)量問題稍加關(guān)注,便能獲得長期穩(wěn)固的應(yīng)用軟件架構(gòu),何樂而不為呢?
解決老舊技術(shù)問題
由于軟件通常是大型應(yīng)用系統(tǒng)的一部分,開發(fā)團隊時常需要平衡老舊技術(shù)與敏捷開發(fā)之間的矛盾。在許多情況下,這些陳舊的軟件技術(shù)由不熟悉敏捷開發(fā)的團隊負(fù)責(zé)維護,涉及到的技術(shù)也沒有專門為敏捷開發(fā)或DevOps進行過優(yōu)化。同樣的,敏捷開發(fā)團隊在搭建與老舊技術(shù)相連的新組件時,對自身受到的局限性也知之甚少。
這就容易導(dǎo)致工作流出現(xiàn)問題,并且大大提高了項目的風(fēng)險。為了解決這個問題,許多團隊采取了Agile-DevOps方法對老舊技術(shù)進行改造,從而在運營層面獲得更多的把控度。
軟件質(zhì)量標(biāo)準(zhǔn)助敏捷開發(fā)與DevOps更上一層樓
開發(fā)團隊?wèi)?yīng)該從架構(gòu)的角度出發(fā),在新組件與老舊組件之間建立平穩(wěn)、高效與清晰的相互關(guān)系。這種方法也能夠幫助開發(fā)團隊?wèi)?yīng)對老舊的、沒有記錄在案的代碼,并且確保新的前端服務(wù)不會過度觸發(fā)老舊的后端應(yīng)用。
未來的挑戰(zhàn)
2017年,各個開發(fā)團隊面臨的主要挑戰(zhàn)將會是如何將全面的、構(gòu)架與系統(tǒng)級的視角整合到現(xiàn)有的敏捷開發(fā)與DevOps實踐中去。也許應(yīng)該將新功能的市場化暫且放在一邊,更多地關(guān)注系統(tǒng)層面的分析,讓敏捷開發(fā)與DevOps發(fā)揮最大的潛能。
如果將Fail-fast與系統(tǒng)層面的分析手段相結(jié)合,就能快速解決Bug并且積極地預(yù)防大型應(yīng)用軟件故障的發(fā)生。而實踐敏捷開發(fā)與DevOps的團隊若要更上一層樓,就必須采用例如CISQ的軟件質(zhì)量標(biāo)準(zhǔn),以提升軟件質(zhì)量、降低軟件風(fēng)險與技術(shù)依賴度的思路來武裝自己,這對于項目本身與商業(yè)的成功都是至關(guān)重要的。
本文作者是軟件質(zhì)量檢測與分析行業(yè)領(lǐng)軍企業(yè)CAST-產(chǎn)品開發(fā)執(zhí)行副總裁OlivierBonsignour。
請您注意:
·自覺遵守:愛國、守法、自律、真實、文明的原則;
·尊重網(wǎng)上道德,遵守《全國人大常委會關(guān)于維護互聯(lián)網(wǎng)安全的決定》及中華人民共和國其他各項有關(guān)法律法規(guī);
·嚴(yán)禁發(fā)表危害國家安全,破壞民族團結(jié)、國家宗教政策和社會穩(wěn)定,含侮辱、誹謗、教唆、淫穢等內(nèi)容的作品;
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任;
·您在項目管理培訓(xùn)師在線網(wǎng)“評論”中發(fā)表的作品,項目管理培訓(xùn)師在線有權(quán)在網(wǎng)站內(nèi)保留、轉(zhuǎn)載、引用或者刪除;
·參與本評論即表明您已經(jīng)閱讀并接受上述條款。