終于有人把DevOps講明白了
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)DT」,作者魏新宇 郭躍軍。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)DT公眾號。
01 從瀑布式開發(fā)到敏捷開發(fā)
談到DevOps的發(fā)展史,我們需要先談一下敏捷開發(fā)。
敏捷開發(fā)是面向軟件的,而軟件依賴于計算硬件。我們知道,世界上第一臺計算機是在1946年出現(xiàn)的,因此,軟件開發(fā)相對于人類歷史而言,時間并不長。相對于軟件開發(fā)而言,人們更擅長工程學,如蓋樓、造橋等。為了推動軟件開發(fā),1968年,人們將工程學的方法應用到軟件領(lǐng)域,由此產(chǎn)生了軟件工程。
軟件工程的方式有其優(yōu)點,但也帶來了不少問題。最關(guān)鍵的一點是軟件不同于工程。通過工程學建造的大橋、高樓在竣工后,人們通常不會對大橋或高樓的主體有大量使用需求的變更;但軟件卻不同,對于面向最終用戶的軟件,人們對于軟件功能的需求是不斷變化的。
在瀑布式開發(fā)模式下,當客戶需求發(fā)生變化時,軟件廠商需要修改軟件,這將會使企業(yè)的競爭力大幅下降。
傳統(tǒng)的軟件開發(fā)流程是:
- 產(chǎn)品經(jīng)理收集一線業(yè)務部門和客戶的需求,這些需求可能是新功能需求,也可能是對產(chǎn)品現(xiàn)有功能做變更的需求;
- 然后進行評估、分析,將這些需求制定為產(chǎn)品的路線圖,并且分配相應的資源進行相關(guān)工作;
- 接下來,產(chǎn)品經(jīng)理將需求輸出給開發(fā)部門,開發(fā)工程師寫代碼;
- 寫好以后,就由不同部門的人員進行后續(xù)的代碼構(gòu)建、質(zhì)量檢驗、集成測試、用戶驗收測試,最后交給生產(chǎn)部門。
這樣帶來的問題是開發(fā)周期比較長,并且如果有任何變更,都要重新走一遍開發(fā)流程。在商場如戰(zhàn)場的今天,軟件一個版本推遲發(fā)布,可能到發(fā)布時這個版本在市場上就已經(jīng)過時了;而競爭對手很可能由于在新軟件發(fā)布上快了一步,而迅速搶占客戶和市場。
正是由于商業(yè)環(huán)境的壓力,軟件廠商需要改進開發(fā)方式。
2001年年初,在美國猶他州滑雪勝地雪鳥城(Snowbird),17位專家聚集在一起,概括了一些可以讓軟件開發(fā)團隊更具有快速工作、適應變化能力的價值觀,制定并簽署了軟件行業(yè)歷史上最重要的文件之一——敏捷宣言。
敏捷宣言中的主要價值觀如下:
- 個體和互動高于流程和文檔。
- 工作的軟件高于詳盡的文檔。
- 客戶合作高于合同談判。
- 響應變化高于遵循計劃。
有了敏捷宣言和敏捷開發(fā)價值觀,后續(xù)產(chǎn)生了對應的開發(fā)流派。主要的敏捷開發(fā)流派有極限編程(XP)、Scrum、水晶方法等。至此,敏捷開發(fā)有理念、有方法、有實踐。隨著云計算概念的興起以及云計算的不斷落地,敏捷開發(fā)也實現(xiàn)了工具化。
02 從敏捷開發(fā)到DevOps
既然談到了敏捷開發(fā),那么敏捷開發(fā)和DevOps有什么關(guān)系呢?敏捷開發(fā)是開發(fā)領(lǐng)域里的概念,以敏捷開發(fā)階段為基礎(chǔ),有如下階段:
敏捷開發(fā)→持續(xù)集成→持續(xù)交付→持續(xù)部署→DevOps
從敏捷開發(fā)到DevOps,前一個階段都是后一個階段的基礎(chǔ);隨著階段的推進,每個階段的概念覆蓋的流程越來越多;最終DevOps涵蓋了整個開發(fā)和運維階段。正是由于每個階段涉及的范圍不同,因此每個概念所提供的工具也是不一樣的。具體內(nèi)容參照圖1-2。
▲圖1-2 從敏捷開發(fā)到DevOps的進階
- 持續(xù)集成(Continuous Integration):代碼集成到主干之前,必須全部通過自動化測試;只要有一個測試用例失敗,就不能集成。持續(xù)集成要實現(xiàn)的目標是在保持高質(zhì)量的基礎(chǔ)上讓產(chǎn)品可以快速迭代。
- 持續(xù)交付(Continuous Delivery):開發(fā)人員頻繁地將軟件的新版本交付給質(zhì)量團隊或者用戶,以供評審。如果通過評審,代碼就被發(fā)布。如果未通過評審,那么需要變更后再提交。
- 持續(xù)部署(Continuous Deployment):代碼通過評審并發(fā)布后,自動部署到生產(chǎn)環(huán)境,以交付最終用戶使用。
DevOps是一組完整的實踐,涵蓋自動化軟件開發(fā)和IT團隊之間的流程,以便他們可以更快速、更可靠地構(gòu)建、測試和發(fā)布軟件。
03 洛克希德·馬丁公司實施DevOps的收益
企業(yè)實施DevOps的收益主要在于大幅提升軟件的交付速度。這里,我們將使用洛克希德·馬丁公司的案例進行分析。
洛克希德·馬丁公司的F-22猛禽戰(zhàn)斗機是世界一流的戰(zhàn)斗機之一,這得益于其隱身性、速度、敏捷性和態(tài)勢感知的獨特結(jié)合。洛克希德·馬丁公司與美國空軍合作,開發(fā)敏捷的新方法,以更快速、更實惠的方式向F-22猛禽戰(zhàn)斗機提供關(guān)鍵能力。F-22猛禽戰(zhàn)斗機是世界上最先進的戰(zhàn)斗機之一,要保持技術(shù)優(yōu)勢,就必須不斷關(guān)注快速創(chuàng)新。
傳統(tǒng)的瀑布式開發(fā)過程無法足夠快地為戰(zhàn)斗機提供關(guān)鍵能力。以前洛克希德·馬丁公司花了五到七年的時間來確定需求并為現(xiàn)有架構(gòu)(F-22最初于20世紀90年代初期建立)發(fā)布新功能。這一耗時的過程,再加上代碼質(zhì)量和集成問題,產(chǎn)生了繁重的返工和自定義工作,導致該模式不再符合洛克希德·馬丁公司對軟件主導的創(chuàng)新的期望。
對于洛克希德·馬丁公司而言,保持F-22猛禽戰(zhàn)斗機的領(lǐng)先地位不僅僅在于升級其硬件和部署現(xiàn)代軟件平臺。相反,他們還尋求建立植根于創(chuàng)新和協(xié)作的團隊文化,將創(chuàng)新和敏捷的方法運用到應用程序開發(fā)中。
為此,洛克希德·馬丁公司希望采用軟件詞典中常見的原則和框架,例如敏捷、最小可行產(chǎn)品(MVP)和DevSecOps(融入了安全的DevOps)。
通過紅帽開放創(chuàng)新實驗室在洛克希德·馬丁公司為期八周的駐留,紅帽公司協(xié)助洛克希德·馬丁公司采用一種敏捷的方法論和DevSecOps實踐替代了用于F-22猛禽戰(zhàn)斗機升級的瀑布式開發(fā)過程,從而更快速響應美國空軍的需求。
洛克希德·馬丁公司和紅帽共同創(chuàng)建了一個基于紅帽O(jiān)penShift容器平臺的開放架構(gòu),這使F-22團隊能夠加快應用程序的開發(fā)和交付。
洛克希德·馬丁公司選擇紅帽開放創(chuàng)新實驗室來帶領(lǐng)他們完成敏捷轉(zhuǎn)型過程,并幫助他們在F-22上實施開源架構(gòu),同時解開其嵌入式系統(tǒng)網(wǎng)絡,從而創(chuàng)造出更敏捷、更適應美國空軍需求的產(chǎn)品。紅帽開放創(chuàng)新實驗室通過指導方式幫助洛克希德·馬丁公司的團隊采用了敏捷開發(fā)方法和DevSecOps實踐。
在一次探討會議和架構(gòu)審查之后,紅帽為洛克希德·馬丁公司建立了一個基于紅帽O(jiān)penShift容器平臺的環(huán)境,該平臺是值得信賴的企業(yè)Kubernetes平臺。OpenShift針對開發(fā)人員的創(chuàng)新模式進行了優(yōu)化,同時幫助客戶應對安全、運營管理以及應用程序和容器管理集成方面的IT挑戰(zhàn)。
OpenShift由Red Hat Enterprise Linux的可信賴基礎(chǔ)提供支持,Red Hat Enterprise Linux是業(yè)界最受認可的操作系統(tǒng)之一,也是第一個支持Linux容器技術(shù)并獲得Common Criteria認證支持的操作系統(tǒng),從而使該平臺非常適合滿足由洛克希德·馬丁公司及其客戶制定的高安全標準。
在紅帽開放創(chuàng)新實驗室與洛克希德·馬丁公司合作期間,一個由五個開發(fā)人員、兩個運維人員和一個產(chǎn)品負責人組成的跨職能團隊共同合作,為OpenShift上的F-22開發(fā)新的應用程序,取得了良好的效果。隨后,洛克希德·馬丁公司用6個月時間,將OpenShift、敏捷方法和DevSecOps的成功經(jīng)驗擴展到了100人的F-22開發(fā)團隊。
洛克希德·馬丁公司的敏捷轉(zhuǎn)型已獲得回報。在最近的一次啟動會議上,F(xiàn)-22猛禽戰(zhàn)斗機Scrum團隊將其對未來沖刺的預測能力提高了40%。項目啟動僅一年之后,洛克希德·馬丁公司就計劃在飛機上提前三年交付新的通信功能。洛克希德·馬丁公司正在繼續(xù)將此方法擴展到整個F-22開發(fā)組織。
紅帽開放創(chuàng)新實驗室與洛克希德·馬丁公司合作,不僅改變了其文化、流程和技術(shù),而且還促使其重新考慮了團隊的實際工作方式。洛克希德·馬丁公司的F-22猛禽戰(zhàn)斗機開發(fā)團隊通過拆除壁壘創(chuàng)造了一個開放的工作環(huán)境,從而推動DevSecOps文化的進一步推廣。
關(guān)于作者:魏新宇,紅帽副首席解決方案架構(gòu)師。在IaaS、PaaS方面有豐富的經(jīng)驗,致力于開源解決方案在企業(yè)中的推廣和應用。從售前角度主導了紅帽在金融、汽車行業(yè)的多個PaaS項目。曾就職于華為、IBM、VMware。
郭躍軍,目前就職于VMware,擔任Solutions Engineer。曾于紅帽擔任PaaS咨詢顧問、AWS顧問服務團隊擔任云架構(gòu)咨詢顧問,熟悉私有云和公有云生態(tài)。從2015年接觸容器技術(shù)開始,一直奮戰(zhàn)在PaaS建設(shè)一線,參與了很多OpenShift項目的競標、PoC、咨詢和落地實施,幫助很多企業(yè)實現(xiàn)了數(shù)字化轉(zhuǎn)型。
本文摘編自《OpenShift在企業(yè)中的實踐:PaaS DevOps 微服務》(第2版),經(jīng)出版方授權(quán)發(fā)布。